2017-08-30 75 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文件中? –