.net 如何在排序数据视图中获得正确的行?
我有一个包含一个小表的数据网格。到目前为止,我在这个网格上有一个双击处理程序,它遍历所有行以查找所选行:.net 如何在排序数据视图中获得正确的行?,.net,winforms,forms,datagrid,.net,Winforms,Forms,Datagrid,我有一个包含一个小表的数据网格。到目前为止,我在这个网格上有一个双击处理程序,它遍历所有行以查找所选行: DataTable table = (DataTable)this.dataGrid.DataSource; int selectedRow = -1; for (int i=0; i<table.Rows.Count; i++) if (this.dataGrid.IsSelected(i)) selectedRow = i; break; } if ( se
DataTable table = (DataTable)this.dataGrid.DataSource;
int selectedRow = -1;
for (int i=0; i<table.Rows.Count; i++)
if (this.dataGrid.IsSelected(i))
selectedRow = i;
break;
}
if ( selectedRow != -1 ) {
DataRow row = table.Rows[selectedRow];
// More code ...
}
DataTable=(DataTable)this.dataGrid.DataSource;
int selectedRow=-1;
对于(int i=0;i为什么不使用DataGridView.SelectedRows
属性?然后对这些行使用DataBoundItem
来访问基础数据。这可能是DataRowView
类型。在这种情况下,请使用DataRowView.Row
属性
foreach (DataGridViewRow dgvrow in dataGrid.SelectedRows)
{
DataRow row = null;
if (dgvrow.DataBoundItem is DataRowView)
row = (dgvrow.DataBoundItem as DataRowView).Row as DataRow;
else
row = dgvrow.DataBoundItem as DataRow;
// ... stuff
}
数据网格(Windows)
试试下面的DataGrid.GetSelectedDataRows
,其中MyBase
是您的DataGrid
的名称
Public Function GetSelectedDataRows() As DataRow()
Dim oSelectedRows As New ArrayList
Dim oDataTable As DataTable = DirectCast(MyBase.DataSource, DataTable)
For i As Integer = 0 To oDataTable.Rows.Count - 1
If MyBase.IsSelected(i) Then
oSelectedRows.Add(oDataTable.DefaultView(i).Row)
End If
Next
Return DirectCast(oSelectedRows.ToArray(GetType(DataRow)), DataRow())
End Function
数据表格控件
使用SelectedRows
属性。它返回DataGridViewRow
对象的集合。因为您知道您正在绑定DataTable
,所以DataGridViewRow.DataBoundItem
属性将是一个DataRow
。有关示例,请查看上述对象帮助主题
工具书类
- 上的Windows窗体DataGridView和DataGrid控件之间的差异
- DataGridView类位于
- 数据网格类位于
摘录
DataGrid控件保留为
向后兼容性和特殊的
需要。几乎所有的目的,你
应使用DataGridView控件。
中唯一可用的功能
不可用的DataGrid控件
在DataGridView控件中可用
是的层次显示
中两个相关表的信息
一个控件。必须使用两个
要显示的DataGridView控件
来自以下两个表的信息:
在主/细节关系中
您必须小心使用术语“DataGrid”和“DataGridView”。在所有版本的.NET中都有一个“DataGrid”Windows.Forms控件。在2.0中引入了“DataGridView”Windows.Forms控件。这两个控件不共享相同的属性。“我可以简单地用DataGridView替换DataGrid吗?”如果这是一新的开发,则替换它。“DataGrid控件概述(Windows窗体)”注意,有一个Web“DataGrid”“。这不是一个web平台,它是一个较旧的应用程序,简单地替换它是不起作用的,因为DataGridView似乎丢失了应用程序代码中设置的一些其他属性。但我会进一步查看,谢谢。是的,正如我所说。你能说明我的代码示例有什么问题吗?我看不出什么不应该“看起来正确”…由于问题改为DataGrid
control,您的代码不是相对的,所以如果我觉得代码有点奇怪,也没什么区别。:O)我没意识到他现在在谈论DataGrid:-啊,他也抓住了我。:O) 谢天谢地,我仍然支持.NET1.1应用程序,所以代码已经准备好了。