我正在开发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;开始运作?
如果您对如何实施此方案有其他建议,欢迎您的想法: - )
答案 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从数据库加载我选择的数据项。
祝你好运!