2015-10-20 81 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

大火顯然有一個數據源後沒有立即事件已經完成加載。

因此,基於事件的相反,我會去一個類似於我寫了一個函數,它迭代整個GridView控件,你把所有的數據之後。

1

我通常使用GridView.ValidateRow事件,當用戶完成編輯行時應該觸發該事件。事件參數通過e.Row提供對行對象的訪問,通過e.ErrorText提供錯誤消息,通過e.Valid提供有效狀態,所以它應該是一個簡單的事情,即從更新的行中獲取產品代碼並在其中查找數據表。