2013-01-14 55 views
0

我是新的web開發和使用控件,所以請原諒我。使用與GridView的LINQ

我有它的複選框GridView中(請參閱標記下面)

當用戶經過並檢查所有箱子和打我的提交按鈕 我想運行LINQ查詢來獲取所有的行所述checkbox1.checked =真

是這樣的:

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> 
+0

你在哪裏要使用此查詢? –

回答

5

你需要在TemplateFieldCells(index)使用FindControl的控件BoundFields

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() 
+0

我試過這個,雖然代碼似乎執行得很好,但它從來沒有得到我檢查過的任何行。 –

+0

@ChinaSyndrome:也許你在回發數據綁定你的'gridView'。你應該這樣做'如果不是Page.IsPostBack然後grid.DataSource = ... grid.DataBind()End If'。 –

+0

是的,謝謝你 –