我有一个Windows Forms应用程序,该应用程序根据https://docs.microsoft.com/en-us/dotnet/framework/winforms/controls/create-a-master-detail-form-using-two-datagridviews上的说明在Master-Detail DataGridView中显示信息。
数据正确显示,并且在主DataGridView上选择行将在详细信息DataGridView中显示期望的数据。
我想做的是在加载页面时传递一个整数,以便在显示DataGridViews时选择正确的主行并显示相应的明细行。
到目前为止,我可以传递整数以选择正确的主行,但是仍然需要单击该行以显示正确的明细行。
这是表单的构造函数:
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;
}
}
答案 0 :(得分:0)
将DataGridViewRow的Selected属性设置为true
并不会改变BindingSource的Position属性或BindingSource的Current项目。这很有意义,因为DataGridView可以具有多个选定的行(SelectedRows Property)。
DataGridView确实公开了CurrentCell属性,该属性将更新BindingSource的Position属性。
因此,您应该将DataGridView.CurrentCell设置为反映所需的行,或者将BindingSource.Position属性设置为引起绑定更改。