2017-08-30 78 views
-2

我有四列的表见截图在这里:如何按钮单击事件后改变gridview的行值

enter image description here

但我需要两列在表名和性别见截图在这里:

enter image description here

显示在这个类型,但单击按钮行值我已经要求后GridView控件按钮出侧的GridView如将改变行值1,2可以代替男性和女性,这是我的要求。

+1

它不是一个自由职业者的网站,你应该尝试自己的东西,然后问一个问题。 – AsifAli72090

回答

0

您需要从数据库或数据表中的数据库中提取数据,并将其作为DataSource分配给GridView并在该GridView上调用DataBind。现在在RowDataBound事件中,将值和赋值分配给UI标签/字面值。

下面是aspx页面中的GridView。

<asp:GridView runat="server" AutoGenerateColumns="false" ID="GridView1" OnRowDataBound="GridView1_RowDataBound"> 
      <Columns> 
       <asp:TemplateField HeaderText="Employee Name"> 
        <ItemTemplate> 
         <asp:Literal ID="ltrlEmpName" runat="server" /> 
        </ItemTemplate> 
       </asp:TemplateField> 
       <asp:TemplateField HeaderText="Employee Gender"> 
        <ItemTemplate> 
         <asp:Literal ID="ltrlEmpGender" runat="server" /> 
        </ItemTemplate> 
       </asp:TemplateField> 
      </Columns> 
</asp:GridView> 

在后面的代码中,假设您想要在页面加载或任何其他方法中将数据源分配给此GridView。以下是它的代码。请注意,在这里的示例中,为了简单起见,我采用了虚拟DataTable和填充值,您需要从db值填充该DataTable。

protected void Page_Load(object sender, EventArgs e) 
     { 
      // Dummy data table below, that needs to be replaced by datatable/dataset fetched from database. 
      DataTable dt = new DataTable(); 
      dt.Columns.Add(new DataColumn("EmpName", typeof(string))); 
      dt.Columns.Add(new DataColumn("EmpGender", typeof(int))); 

      DataRow dr1 = dt.NewRow(); 
      dr1["EmpName"] = "Romesh"; 
      dr1["EmpGender"] = 1; 
      dt.Rows.Add(dr1); 

      DataRow dr2 = dt.NewRow(); 
      dr2["EmpName"] = "Sandya"; 
      dr2["EmpGender"] = 2; 
      dt.Rows.Add(dr2); 

      // Bind the datasource to gridview. 
      GridView1.DataSource = dt; 
      GridView1.DataBind(); 
     } 

protected void GridView1_RowDataBound(object sender, System.Web.UI.WebControls.GridViewRowEventArgs e) 
     { 
      if (e.Row.RowType == System.Web.UI.WebControls.DataControlRowType.DataRow) 
      { 
       System.Web.UI.WebControls.Literal ltrlEmpName = (System.Web.UI.WebControls.Literal)e.Row.FindControl("ltrlEmpName"); 
       System.Web.UI.WebControls.Literal ltrlEmpGender = (System.Web.UI.WebControls.Literal)e.Row.FindControl("ltrlEmpGender"); 

       // Bind employee name to its label. 
       ltrlEmpName.Text = Convert.ToString(DataBinder.Eval(e.Row.DataItem, "EmpName")); 

       // Bind employee gender to its label based on its value. 
       if (Convert.ToString(DataBinder.Eval(e.Row.DataItem, "EmpGender")) == "1") 
       { 
        ltrlEmpGender.Text = "Male"; 
       } 
       else if (Convert.ToString(DataBinder.Eval(e.Row.DataItem, "EmpGender")) == "2") 
       { 
        ltrlEmpGender.Text = "Female"; 
       } 
       else 
       { 
        ltrlEmpGender.Text = "Other"; 
       } 
      } 
     } 

您将按照下表列出。

enter image description here

+0

我的代码有错误 –

+0

'ASP.gradedividing_aspx'没有包含 'GridView1_RowDataBound'的定义,也没有找到接受'ASP.gradedividing_aspx'类型的第一个参数的扩展方法'GridView1_RowDataBound' )使用指令或程序集引用?)\t C:\ Users \ romesh \ GridviewTutorial \ GradeDividing.aspx –

+0

你有没有把我的答案中提到的“protected void GridView1_RowDataBound ....”放在你的.cs文件中? –

相关问题