如何在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(); }