如何从ASP.NET窗体DataGrid中检索选定的行

时间:2015-05-08 11:20:50

标签: asp.net vb.net datagrid webforms

我正在开发ASP.Net Forms / VB.Net和.Net 3.5中开发的旧项目的新功能,其中一项功能是批处理操作,包括让用户从DataGrid中选择多行(让我们说它是GridA)他按下按钮开始操作,服务器应该在模态弹出窗口中显示另一个网格中的所选项目列表(比如说它的GridB)(我使用来自AjaxToolkit的ModalPopupExtender)用户应填写弹出窗口中的一些信息,然后使用'验证'验证操作。按钮。

因此,为了实现行选择,我添加了一个TemplateColumn,显示如下所示的复选框:

<asp:TemplateColumn>
  <HeaderStyle HorizontalAlign="Center"></HeaderStyle>
  <ItemStyle HorizontalAlign="Center"></ItemStyle>
  <HeaderTemplate>
    <asp:CheckBox ID="SelectAll" runat="server" />
  </HeaderTemplate>
  <ItemTemplate>
    <asp:CheckBox ID="ItemSelector" runat="server" />
  </ItemTemplate>
</asp:TemplateColumn>

DataGrid(GridA)绑定到直接从数据库中检索的数据集。

我的问题是,在用户按下按钮后,如何从GridA获取所选项目的列表(在服务器端)#39;开始&#39;开始运作?

如果您对如何实施此方案有其他建议,欢迎您的想法: - )

1 个答案:

答案 0 :(得分:0)

我最终弄明白了,

在操作按钮单击处理程序上,我添加了这段代码,允许我识别所选行并获取数据项的ID:

For Each item As DataGridItem In objDataGrid.Items
    Dim checkBox As CheckBox = CType(item.FindControl("ItemSelector"), CheckBox)

    If Not checkBox Is Nothing AndAlso checkBox.Checked Then
       ' My row ID is in the Third cell in an invisible column
       Dim cell As TableCell = item.Cells(2)
       If Not cell Is Nothing AndAlso cell.Text <> vbNullString Then
          ' Registering the row ID on an ArrayList to retrieve it later
          SelectedCards.Add(cell.Text)
       End If
    End If
Next

之后,我使用存储在SelectedCards ArrayList上的Ids从数据库加载我选择的数据项。

祝你好运!