如何在asp.net的GridView中获取复选框值

时间:2018-08-03 08:31:06

标签: asp.net checkbox

我有一个GridView,并且还在gridview中使用一个复选框,例如:

 <asp:GridView ID="GridView2" CssClass="table table-striped table-hover" runat="server" AutoGenerateColumns="false">
                                                                    <Columns>
                                                                        <asp:TemplateField HeaderText="Select">
                                                                            <ItemTemplate>
                                                                                <asp:CheckBox ID="checkbox1" runat="server" Checked="true" />
                                                                            </ItemTemplate>
                                                                        </asp:TemplateField>
                                                                        <asp:TemplateField HeaderText="SNo">
                                                                            <ItemTemplate>
                                                                                <%#Container.DataItemIndex+1 %>
                                                                            </ItemTemplate>
                                                                        </asp:TemplateField>

                                                                        <asp:BoundField DataField="GFname" HeaderText="Name" />
                                                                        <asp:BoundField DataField="Address1" HeaderText="Address 1" />
                                                                        <asp:BoundField DataField="Address2" HeaderText="Address 2" />
                                                                        <asp:BoundField DataField="MobileNo" HeaderText="Mobile No" />
                                                                        <asp:BoundField DataField="Location" HeaderText="Location" />
                                                                        <asp:BoundField DataField="City" HeaderText="City" />
                                                                    </Columns>
                                                                </asp:GridView>

cs

protected void btnsndwish_Click(object sender, EventArgs e)
    {
        foreach (GridViewRow g1 in GridView2.Rows)
        {
            CheckBox chk = (CheckBox)GridView2.FindControl("checkbox");
            if (chk != null && chk.Checked)
            {
            string Query = "insert into  SMSTable(MobileNo,MessageToSent,MessageDate,UserId,SentDate,Flag,GuestName) values ('" + g1.Cells[5].Text + "','" + txtmsg.Value + "','" + CurrentDate.ToString("dd-MMM-yyyy HH:mm:ss") + "','','" + CurrentDate.ToString("dd-MMM-yyyy HH:mm:ss") + "',0,'" + g1.Cells[2].Text + "')";
            ds = obj.GetDataSet(Query);
            }
            ScriptManager.RegisterStartupScript(this, this.GetType(), "Success", "alert('MSG ');", true);
        }


    }

但是我一直在调试程序,结果表明选中的复选框的值也为空。

1 个答案:

答案 0 :(得分:2)

不是GridView2.FindControl("checkbox");,而是g1.FindControl("checkbox");

foreach (GridViewRow row in GridView2.Rows)
{
    CheckBox chk = (CheckBox)row.FindControl("checkbox");
    // ...
}

NamingContainer(每个ID必须唯一)是GridViewRow,而不是整个GridViewFindControl不会递归搜索。