如何在Asp.net Gridview列中为Checkbox添加事件

我在asp中有一个gridview,其中我添加了第一列作为复选框列。现在我想选择此列并获取行的id值..但是我没有得到如何做到这一点..

这是我的Aspx代码..

             <asp:Label ID="Label1" runat="server" Text=''>     <asp:CheckBox ID="chkAdmin" runat="server" Checked='' />     <asp:CheckBox ID="chkUser" runat="server" Checked='' />     <asp:CheckBox ID="chkgen" runat="server" Checked='' />     

这是我的代码背后文件…

 protected void BindGridviewData() { var role = from MembershipUser u in Membership.GetAllUsers() select new { User = u.UserName, Role = string.Join(",", Roles.GetRolesForUser(u.UserName)) }; DataTable dTable = new DataTable(); dTable.Columns.Add("col0", typeof(string)); dTable.Columns.Add("col1", typeof(bool)); dTable.Columns.Add("col2", typeof(bool)); dTable.Columns.Add("col3", typeof(bool)); foreach (MembershipUser u in Membership.GetAllUsers()) { DataRow dRow = dTable.NewRow(); dRow[0] = u.UserName; string[] roles = Roles.GetRolesForUser(u.UserName); dRow[1] = roles.Contains("Admin") ? true : false; dRow[2] = roles.Contains("DPAO User") ? true : false; dRow[3] = roles.Contains("GeneralUser") ? true : false; dTable.Rows.Add(dRow); } GridView1.DataSource = dTable; GridView1.DataBind(); } 

请大家帮助我,因为我不知道如何完成这个…提前感谢…

如果你想通过按钮 删除记录试试这个:

在gridview之外添加一个Button来删除:

  

代码背后:

 protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { BindGridviewData(); } } protected void BindGridviewData() { DataTable dTable = new DataTable(); dTable.Columns.Add("col0", typeof(string)); dTable.Columns.Add("col1", typeof(bool)); dTable.Columns.Add("col2", typeof(bool)); dTable.Columns.Add("col3", typeof(bool)); foreach (MembershipUser u in Membership.GetAllUsers()) { DataRow dRow = dTable.NewRow(); dRow[0] = u.UserName; string[] roles = Roles.GetRolesForUser(u.UserName); dRow[1] = roles.Contains("Admin") ? true : false; dRow[2] = roles.Contains("DPAO User") ? true : false; dRow[3] = roles.Contains("GeneralUser") ? true : false; dTable.Rows.Add(dRow); } GridView1.DataSource = dTable; GridView1.DataBind(); } protected void cmdDelete_Click(object sender, EventArgs e) { foreach (GridViewRow row in GridView1.Rows) { CheckBox chk = (CheckBox)row.FindControl("chkChild"); if (chk.Checked) { Label username = (Label)row.FindControl("Label1"); Membership.DeleteUser(username.Text); BindGridviewData(); } } } 

试试这个,

      

在aspx.cs页面中添加复选框更改事件

 protected void chkview_CheckedChanged(object sender, EventArgs e) { GridViewRow row = ((GridViewRow)((CheckBox)sender).NamingContainer); int index = row.RowIndex; CheckBox cb1 = (CheckBox)Gridview.Rows[index].FindControl("chkview"); string yourvalue = cb1.Text; //here you can find your control and get value(Id). } 

您可以遍历gridivew行集合并检查它是否已被选中。

添加选定的行(或在您的案例中获取ID)并进行进一步处理。

以下url可以帮助您入门:

http://www.aspsnippets.com/Articles/GridView-with-CheckBox-Get-Selected-Rows-in-ASPNet.aspx

使用OnCheckedChanged事件

    

CS:

 protected void chkgen_OnCheckedChanged(object sender, EventArgs e) { int selRowIndex = ((GridViewRow)(((CheckBox)sender).Parent.Parent)).RowIndex; CheckBox cb = (CheckBox)gridView.Rows[selRowIndex].FindControl("chkgen"); if (cb.Checked) { //Perform your logic } } 
  protected void GetFillDropdown() { string consString = ConfigurationManager.ConnectionStrings["SheetalAcademy"].ConnectionString; SqlConnection conn = new SqlConnection(consString); int EID = Convert.ToInt32(Session["EmailID"].ToString()); SqlCommand cmd = new SqlCommand("Select id,Course_Name from tbl_Courses where EID='" + EID + "' and Active='True'", conn); conn.Open(); ddCourseType.Items.Clear(); ddCourseType.Items.Add("All"); ddCourseType.AppendDataBoundItems = true; ddCourseType.DataSource = cmd.ExecuteReader(); ddCourseType.DataTextField = "Course_Name"; ddCourseType.DataValueField = "id"; ddCourseType.DataBind(); conn.Close(); }