datagridview中选择的索引

时间:2012-01-18 09:29:17

标签: c# winforms datagridview

我有两个表我从表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为网格

3 个答案:

答案 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接口。