#c_sharp #winforms #devexpress
Как получить индекс или значения выбранной строки в gridControl от DevExpress в WinForms? В стандартном datagridview делаю так = gridOrder.SelectedRows[i].Cells["order_number"].Value Хочу заменить стандартный datagridview на gridControl, но встречаю много отличий, думал они будут идентичный просто gridControl более функционален, а получается они почти разные? Может есть документация на русском у кого-то для него?
Ответы
Ответ 1
Используйте метод ColumnView.GetSelectedRows для получения индексов выделенных строк: int[] rowHandles = gridView1.GetSelectedRows(); Если множественное выделение отключено(по умолчанию или с помощью опции режима выделения ColumnView.OptionsSelection.MultiSelect) используйте свойство ColumnView.FocusedRowHandle: int rowHandle = gridView1.FocusedRowHandle; Получить же сами значения ячеек или объект строки целиком можно с помощью методов ColumnView.GetRowCellValue/ColumnView.GetRow: int number = (int)gridView1.GetRowCellValue(rowHandle, "order_number"); //... Order order = (Order)gridView1.GetRow(rowHandle); Для сфокусированной строки есть "сокращенные" методы GetFocusedRow/GetFocusedRowCellValue p.s. Полезные ссылки: Focus and Selection Handling Obtaining and Setting Cell Values p.p.s. Как верно заметили в комментариях, MVVM можно использовать и в WinForms, и как раз DevExpress является единственным вендором, предоставляющим поддержку MVVM на уровне WinForms контролов из коробки. Для случая с выделенной строкой код биндинга может выглядеть вот так: // привязка вьюмодели списка заказов к гриду var fluent = mvvmContext1.OfType(); // привязка индикатора загрузки(если во вьюмодели есть асинхронка) fluent.SetBinding(gridView1, gView => gView.LoadingPanelVisible, x => x.IsLoading); fluent.SetBinding(gridControl1, gControl => gControl.DataSource, x => x.Entities); // привязка выделенной строки fluent.WithEvent (gridView1, "FocusedRowObjectChanged") .SetBinding(x => x.SelectedEntity, args => args.Row as Order, (gView, entity) => gView.FocusedRowHandle = gView.FindRow(entity));
Комментариев нет:
Отправить комментарий