我有两个表我从表1中选择一条记录来显示表2中的信息,双击其中一个信息我得到窗口,在关闭此窗口后更新数据我必须刷新两个表,我想要同一行在表1中选择。 我在wpf工作,我使用selectedindex。
现在我暂时使用它:
int index = dgTable1.Grid.CurrentRow.Index;
///**
frm.ShowDialog();
frm.Dispose();
ReloadTable1();
selectedindex(index)
与
private void selectindex(int index)
{
dgwTable1.Grid.Rows[index].Selected = true;
DATAtype data= dgwTable1.GetObjectFromRow<DATAtype>(index);
LoadTable2(data);
}
它工作但是我有Grid_SelectionChanged
用于table1并且不开火我必须重新加载数据,如果滚动条在我使用时关闭我返回到表1的顶部!
但我知道这不是正确的做法:(在wpf中它太简单了:/
dgTable 是一个UserControl
,其中DataGridView
为网格
答案 0 :(得分:1)
保存当前索引:
int index = dataGridView1.CurrentRow.Index;
编辑后:
dataGridView1.Rows[index].Selected = true;
希望这有帮助。
答案 1 :(得分:0)
可以使用 DataView 和 BindingSource 更好地使用过滤器吗?
DataView view = new DataView(_table);
BindingSource tSource = new BindingSource();
tSource.DataSource = view;
_dataGridView.DataSource = _tSource;
_tSource.Filter = "Value=0";
像这样......
要保存滚动,请使用 myDataGridView.FirstDisplayedScrollingRowIndex
int scrollIndex = 0;
if (myDataGridView.FirstDisplayedScrollingRowIndex >= 0)
scrollIndex = myDataGridView.FirstDisplayedScrollingRowIndex;
编辑后:
if (myDataGridView.Rows.Count > 0)
myDataGridView.FirstDisplayedScrollingRowIndex = scrollIndex;
希望这有帮助。
答案 2 :(得分:0)
在我看来,解决问题的最简单方法是使用MVVM模式。在包含两个DataGrids的View的ViewModel中,您有一个绑定到第一个DataGrids SelectedValue属性的属性,如“SelectedNameOfContentClass”。这个“SelectedNameOfContentClass”-property也绑定到秒datagrid DataSource。因此,如果更改第一个DataGrid中的选定行,则第二个DataGrid的源会自动更新。
绑定到第一个Datagrids DataSource的列表应该是ObservableCollection。对于对话框,您可以在对象中使用IEditableObject接口。