我有一个gridcontrol绑定到Datatable,在我的网格中我让用户选择产品进行处理。
问题是我不希望用户将两次相同的产品代码添加到网格中。
有没有办法阻止他们两次添加相同的产品代码?
我已经尝试过在我的DataTable中使用Unique attirbute,但它根本不需要它。
任何帮助将不胜感激
答案 0 :(得分:1)
我通常使用GridView.ValidateRow事件,该事件应在用户完成编辑行时触发。事件args通过e.Row提供对行对象的访问,通过e.ErrorText提供错误消息,通过e.Valid提供有效状态,因此从更新的行中获取产品代码并在其中查找它应该是一件简单的事情。数据表。
答案 1 :(得分: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。