C# 如何为Asp.net Gridview列中的复选框单击添加事件
我在asp中有一个gridview,我在其中添加了第一列作为复选框列。现在我想选择此列并获取行的id值。但我不知道如何操作 这是我的Aspx代码C# 如何为Asp.net Gridview列中的复选框单击添加事件,c#,asp.net,gridview,C#,Asp.net,Gridview,我在asp中有一个gridview,我在其中添加了第一列作为复选框列。现在我想选择此列并获取行的id值。但我不知道如何操作 这是我的Aspx代码 <asp:GridView ID="GridView1" runat="server" OnRowDataBound="GridView1_RowDataBound" AutoGenerateColumns="False" BackColor="LightGoldenrodYellow"
<asp:GridView ID="GridView1" runat="server" OnRowDataBound="GridView1_RowDataBound"
AutoGenerateColumns="False" BackColor="LightGoldenrodYellow"
BorderColor="Tan" BorderWidth="1px" CellPadding="2" ForeColor="Black"
GridLines="None">
<AlternatingRowStyle BackColor="PaleGoldenrod" />
<Columns>
<asp:TemplateField>
<HeaderTemplate>
<asp:CheckBox ID="chkhdr" runat="server" />
</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox ID="chkChild" runat="server" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Username">
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Eval("col0") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Role(Admin)">
<ItemTemplate>
<asp:CheckBox ID="chkAdmin" runat="server" Checked='<%# Eval("col1") %>' />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Role(User)">
<ItemTemplate>
<asp:CheckBox ID="chkUser" runat="server" Checked='<%# Eval("col2") %>' />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Role(GeneralUser)">
<ItemTemplate>
<asp:CheckBox ID="chkgen" runat="server" Checked='<%# Eval("col3") %>' />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
请大家帮助我,因为我不知道如何完成这项任务…提前谢谢…您可以遍历gridivew行集合并检查它是否已被选中 添加所选行(或在您的案例中获取ID)并进行进一步处理 下面的URL可能会帮助您开始: 使用该事件 试试这个
<asp:TemplateField HeaderText="View">
<ItemTemplate>
<asp:CheckBox ID="chkview" runat="server" AutoPostBack="true" OnCheckedChanged="chkview_CheckedChanged" />
</ItemTemplate>
</asp:TemplateField>
如果要通过按钮删除录制,请尝试以下操作: 在gridview外部添加一个用于删除的按钮:
<asp:Button ID="cmdDelete" runat="server" onclick="cmdDelete_Click" Text="Delete" />
上个月我也做了同样的事情,但我使用了Telerik RadGridView,它提供SelectedItem属性。我不知道它是否在asp网格中可用。如果是这样,只需添加
SelectedItem=“{Binding id,Mode=TwoWay}”
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
}
}
<asp:TemplateField HeaderText="View">
<ItemTemplate>
<asp:CheckBox ID="chkview" runat="server" AutoPostBack="true" OnCheckedChanged="chkview_CheckedChanged" />
</ItemTemplate>
</asp:TemplateField>
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).
}
<asp:Button ID="cmdDelete" runat="server" onclick="cmdDelete_Click" Text="Delete" />
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();
}
}
}
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();
}