2015-10-20 4 views
0

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

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

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

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

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

+0

Возможно, вы захотите установить фильтр для поиска продукта – HubertL

ответ

0

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

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 срабатывает только в Instant Feedback Mode

Видимо нет немедленного события после DataSource закончил загрузку.

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

1

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