我有一个Windows窗体应用程序,它在Master-Detail DataGridView中显示信息,该应用程序是根据https://learn.microsoft.com/en-us/dotnet/framework/winforms/controls/create-a-master-detail-form-using-two-datagridviews中的说明编写的。
数据显示正确,选择主DataGridView上的行将在详细DataGridView中显示预期的数据。
我尝试做的是在加载页面时传递一个整数,以便DataGridViews显示时选择正确的主行并显示相应的详细行。
到目前为止,我可以通过传入整数来选择正确的Master行,但是仍然需要单击该行来显示正确的详细信息行。
下面是表单的构造函数:
public PalletList(User user, int orderId)
{
_user = user;
InitializeComponent();
}
在Load()方法中,我填充DGV并获取它们的数据。然后:
foreach (DataGridViewRow row in ordersDataGridView.Rows)
{
if ((int)row.Cells["Id"].Value == orderId)
{
row.Selected = true;
ordersDataGridView.FirstDisplayedScrollingRowIndex = row.Index;
}
}
2条答案
按热度按时间ru9i0ody1#
将DataGridViewRow的Selected属性设置为
true
不会更改BindingSource的Position属性或BindingSource的Current项。这是有意义的,因为DataGridView可以有多个选定的行(SelectedRows Property)。DataGridView公开了一个CurrentCell属性,该属性将更新BindingSource的Position属性。
因此,您应该设置`DataGridView.CurrentCell以反映所需的行,或者设置BindingSource.Position属性以引起绑定中的更改。
bkhjykvo2#
在load方法中,我替换了row.Selected = true; return ordersDataGridView.CurrentCell = row.Cells[“PO”];- user 8575187 2018年11月7日16:55