C# 如何为Asp.net Gridview列中的复选框单击添加事件

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值。但我不知道如何操作

这是我的Aspx代码

<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();

    }