"EhLib.Com" https://forum.ehlib.com/ru/ |
|
Работа SearchBox в DataGridEh - некортеткная https://forum.ehlib.com/ru/viewtopic.php?f=9&t=2887 |
Страница 1 из 1 |
Автор: | viladygin [ 29 ноя 2019, 07:41 ] |
Заголовок сообщения: | Работа SearchBox в DataGridEh - некортеткная |
При работе с фильтром, некорректно отрабатывается изменение текущей позиции. Проявляется в следующем случае: При отработке события DataGrid.DataViewBindingSource.CurrentItemChanged пытаемся получить доступ к свойству DataGrid.CurrentRow записей 10 видных 3 VisibleRows.Count = 3 а CurrentRowIndex = 7 - ОШИБКА при доступе к VisibleRows[CurrentRowIndex]; Вот код в библиотеке [Browsable(false)] [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] public DataGridRow CurrentRow { get { if (VisibleRows.Count == 0 || CurrentRowIndex == -1) return null; else return VisibleRows[CurrentRowIndex]; } } |
Автор: | EhLibSupport [ 29 ноя 2019, 10:02 ] |
Заголовок сообщения: | Re: Работа SearchBox в DataGridEh - некортеткная |
Добрый день. Ошибку не удается воспроизвести в EhLib.WinForms 1.0 Build 1.0.075. Проверьте, что вы используете эту же сборку. Если номер сборки совпадает, то опишите, пожалуйста, настройку свойств и последовательность действий для воспроизведения ошибки. |
Автор: | viladygin [ 29 ноя 2019, 11:19 ] |
Заголовок сообщения: | Re: Работа SearchBox в DataGridEh - некортеткная |
Тест: public class Class1 { public int Id { get; set; } public string Text { get; set; } } На форму кидаем DataGrig с поиском protected override void OnLoad(EventArgs e) { List<Class1> class1s = new List<Class1>(); for (int i = 0; i < 10; i++) class1s.Add(new Class1 {Id = i+1, Text = $"Запись {i+1}"}); class1BindingSource.DataSource = class1s; dataGridEh1.DataViewBindingSource.CurrentItemChanged += DataViewBindingSourceOnCurrentChanged; dataGridEh1.SelectionChanged += DataViewBindingSourceOnCurrentChanged; base.OnLoad(e); } private void DataViewBindingSourceOnCurrentChanged(object sender, EventArgs e) { label1.Text = $@"{(dataGridEh1.CurrentRow == null ? "Null" : ((Class1)dataGridEh1.CurrentRow.SourceItem)?.Text)}"; } набираем в строке поиска 10 потом забиваем 0 - вроде стоит на первой строке в списке, но текущей записи нет. Непонятен алгоритм что происходит с dataGridEh1.DataViewBindingSource и dataGridEh1.CurrentRow в плане позиционирования Я добиваюсь ситуации, описанной в теме. |
Автор: | viladygin [ 29 ноя 2019, 12:35 ] |
Заголовок сообщения: | Re: Работа SearchBox в DataGridEh - некортеткная |
На текущий момент вопрос сводиться к следующему: На какое событие и у какого элемента повесится, чтобы при фильтровки через встроенный механизм поиска и фильтровки определять, что потерян фокус на CurrentRow Я перепробовал кучу событий, они запаздывают, т.е. у меня CurrentRow имеется (ну чтобы определить активность клавиши), а при нажатии на клавишу, уже потерян фокус на CurrentRow |
Страница 1 из 1 | Часовой пояс: UTC |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |