2013-01-14 2 views
0

Я новичок в веб-дизайне и использую элементы управления, поэтому, пожалуйста, простите меня.Используйте LINQ с GridView

У меня есть GridView с флажками в нем (см Разметка ниже)

Когда пользователь проходит и проверяет любые коробки и ударяется кнопку мой отправить я хочу запустить LINQ запрос, чтобы получить все строки с checkbox1.checked = True

Что-то вроде:

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

Markup:

<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

Вы должны использовать FindControl для управления в TemplateField и Cells(index) для 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» также к обратной стороне. Вы должны сделать это 'If Not Page.IsPostBack Then grid.DataSource = ... grid.DataBind() End If'. –

+0

да, это было, спасибо миллион –

 Смежные вопросы

  • Нет связанных вопросов^_^