Программно выберите строку в мастер-сетке WinForms Master-Detail DataGridView и обновите Detail DataGridView - PullRequest
0 голосов
/ 07 ноября 2018

У меня есть приложение Windows Forms, которое отображает информацию в Master-Detail DataGridView, написанную на основе инструкций в https://docs.microsoft.com/en-us/dotnet/framework/winforms/controls/create-a-master-detail-form-using-two-datagridviews.

Данные отображаются правильно, и при выборе строк в главном DataGridView ожидаемые данные отображаются в подробных данных DataGridView.

То, что я пытаюсь сделать, это передать целое число при загрузке страницы, чтобы DataGridView отображался с выбранной правой главной строкой и соответствующими строками подробностей.

Пока что я могу передать целое число, чтобы выбрать правильную мастер-строку, но все равно нужно щелкнуть по строке, чтобы отобразить правильные строки с подробностями.

Вот конструктор для формы:

   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 голосов
/ 07 ноября 2018

Установка для свойства *1001* объекта DataGridViewRow значения true не приводит к изменению свойства BindingSource * Position и Current объекта BindingSource Вещь. Это имеет смысл, поскольку DataGridView может иметь несколько выбранных строк ( Свойство SelectedRows ).

DataGridView предоставляет свойство CurrentCell , которое обновляет свойство Position BindingSource.

Таким образом, вы должны либо установить DataGridView.CurrentCell для отображения желаемой строки, либо свойство BindingSource.Position, чтобы вызвать изменение в привязках.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...