Как предотвратить добавление повторяющейся строки в GridControl DevExpress

У меня есть привязка gridcontrol к Datatable, в моей сетке я позволяю пользователям выбирать продукты для обработки.

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

Есть ли способ предотвратить добавление одного и того же кода продукта дважды?

Я уже пробовал уникальный атрибут в своей DataTable, но он не работал так, как мне нужно.

Любая помощь будет оценена


person Servet Kaynak    schedule 20.10.2015    source источник
comment
вы можете установить фильтр для поиска продукта   -  person HubertL    schedule 20.10.2015


Ответы (2)


Обычно я использую событие GridView.ValidateRow, которое должно срабатывать, когда пользователь заканчивает редактирование строки. Аргументы события обеспечивают доступ к объекту строки через e.Row, сообщению об ошибке через e.ErrorText и действительному статусу через e.Valid, поэтому достаточно просто взять код продукта из обновленной строки и найти его в данные.

person tremas317    schedule 23.10.2015

Я думал о чем-то вроде этого

 gridViewDefault.RowLoaded += gridViewDefault_RowLoaded;

 Hashtable hashTable = new Hashtable();
        void gridViewDefault_RowLoaded(object sender, RowEventArgs e)
        {
            var obj = ( sender as GridView ).GetRow(e.RowHandle) as OrderDocument;
            var uniqueId = obj.Document.DocumentId;
            if( hashTable[uniqueId] == null )
                hashTable.Add(uniqueId, 1);
            else
                ( sender as GridView ).DeleteRow(e.RowHandle);
        }

но затем увидел, что событие RowLoaded срабатывает только в режиме мгновенной обратной связи

По-видимому, нет никакого немедленного события после того, как DataSource завершил загрузку.

Поэтому вместо основанной на событиях я бы выбрал функцию, аналогичную той, которую я написал, которая выполняет итерацию всего GridView после того, как у вас есть все данные.

person Pep    schedule 21.10.2015