以编程方式在Master-Detail DataGridView的WinForms Master网格中选择一行并更新Detail DataGridView

时间:2018-11-06 21:52:46

标签: c# winforms datagridview

我有一个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;
      }
  }

1 个答案:

答案 0 :(得分:0)

将DataGridViewRow的Selected属性设置为true并不会改变BindingSourcePosition属性或BindingSource的Current项目。这很有意义,因为DataGridView可以具有多个选定的行(SelectedRows Property)。

DataGridView确实公开了CurrentCell属性,该属性将更新BindingSource的Position属性。

因此,您应该将DataGridView.CurrentCell设置为反映所需的行,或者将BindingSource.Position属性设置为引起绑定更改。