Asp.net 将LINQ与GridView一起使用

Asp.net 将LINQ与GridView一起使用,asp.net,vb.net,linq,gridview,checkbox,Asp.net,Vb.net,Linq,Gridview,Checkbox,我是新的网络开发和使用控件,所以请原谅我 我有一个带有复选框的GridView(请参见下面的标记) 当用户浏览并选中任何框并点击我的提交按钮时 我想运行LINQ查询,以获取checkbox1.checked=True的所有行 比如: Dim sList = (From row in Gridview1 Where row.Cells("IsStarFleet") = True row.Cells("ID)).ToList 标记: <as

我是新的网络开发和使用控件,所以请原谅我

我有一个带有复选框的GridView(请参见下面的标记)

当用户浏览并选中任何框并点击我的提交按钮时 我想运行LINQ查询,以获取checkbox1.checked=True的所有行

比如:

Dim sList = (From row in Gridview1
             Where row.Cells("IsStarFleet") = True
             row.Cells("ID)).ToList
标记:

<asp:GridView ID="GridView1" runat="server" Width="516px" AutoGenerateColumns="False" AllowPaging="True">
    <Columns>
        <asp:BoundField DataField="ID" HeaderText="ID" />
        <asp:BoundField DataField="FirstName" HeaderText="FirstName" />
        <asp:TemplateField HeaderText="IsStarFleet">
            <ItemTemplate>
                <asp:CheckBox ID="CheckBox1" runat="server" AutoPostBack ="False" />
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>

您需要对
模板字段中的控件使用
FindControl
,对
边界字段使用
单元格(索引)

Dim checkedIDs = From row In GridView1.Rows.Cast(Of GridViewRow)()
                 Where DirectCast(row.FindControl("CheckBox1"), CheckBox).Checked
                 Select row.Cells(0).Text
Dim checkedIdList = checkedIDs.ToList()

对于
模板字段中的控件,需要使用
FindControl
;对于
边界字段,需要使用
单元格(索引)

Dim checkedIDs = From row In GridView1.Rows.Cast(Of GridViewRow)()
                 Where DirectCast(row.FindControl("CheckBox1"), CheckBox).Checked
                 Select row.Cells(0).Text
Dim checkedIdList = checkedIDs.ToList()

您想在何处使用此查询?您想在何处使用此查询?我尝试了此操作,尽管代码似乎执行得很好,但它从未获得我检查过的任何行。@ChinaSyndrome:可能您也在回发上对您的
gridView
进行数据绑定。如果不是Page.IsPostBack,那么应该这样做
,然后是grid.DataSource=。。。grid.DataBind()如果
,则结束。我尝试了这个方法,尽管代码似乎执行得很好,但它从未得到我检查过的任何行。@ChinaSyndrome:可能您也在回发上对您的
gridView
进行数据绑定。如果不是Page.IsPostBack,那么应该这样做
,然后是grid.DataSource=。。。grid.DataBind()如果
,则结束。