如何从Chechbox.checked的Gridview获取Id?

时间:2015-12-31 05:48:26

标签: c# asp.net gridview

我有GridView和一个按钮,如下所示。然后我用我的数据库中的数据绑定gridview。 GridView有两个Id和ClassIndex的隐藏字段。 当我选择一个复选框并单击按钮时,我想获得相应的Id和FileName。

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False">
         <Columns>
            <asp:TemplateField>
                <ItemTemplate>
                    <asp:CheckBox ID="check" runat="server" />
                </ItemTemplate>
            </asp:TemplateField>

            <asp:TemplateField>
                <ItemTemplate>
                    <asp:HiddenField ID="hdfId" runat ="server" Value='<%#Eval("Id") %>' />
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField>
                <ItemTemplate>
                    <asp:HiddenField ID="hdfClssIndex" runat ="server" Value='<%#Eval("ClassIndex") %>' />
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField>
                <ItemTemplate>
                    <asp:Label ID="lblFileName" runat ="server" Text='<%#Eval("FileName") %>' />
                </ItemTemplate>
            </asp:TemplateField>
         </Columns>
    </asp:GridView>

和Button Like

<asp:Button ID="Button1" runat="server" onclick="Button1_Click" 
        Text="Send Request" />

后面的代码是

protected void Button1_Click(object sender, EventArgs e)
{
    foreach (GridViewRow row in GridView1.Rows)
    {
       var check = row.FindControl("check") as CheckBox;
       if (check.Checked)
       {
         int Id = Convert.ToInt32(row.Cells[1].Text);
         //some logic follws here
       }
    }
}

但是我收到了像

这样的错误

输入字符串的格式不正确。 错误是什么以及如何解决?

enter image description here

1 个答案:

答案 0 :(得分:2)

你的循环正确。

但是你忘了注意这里有一件事,当你想CheckBox访问FindControl row HiddenField时。这意味着您正试图在该行中找到一些控件。

那你为什么要用row.Cell[1].Text访问行内的int Id = Convert.ToInt32(((HiddenField)row.FindControl("hdfId")).Value);控件? 试着找到它。

$.get( "ajax/test.html", function( data ) { console.log(data); });

相关问题