如何在一个RowFilter过的dataview中增加一行

假设你有一个有一组数据的"view" . 其中一个栏位包含一个国家ID (ru "US"): 

DataView myDataView  =   new  DataView(myTable); 
myDataView.RowFilter 
=   " country = 'us' "
myGrid.DataSource 
=  myDataView; 

如果你用RowFilter过滤这个view使只有 countory为 us的记录显示出来,然后又要增加一个新行,因为这个view已经被Filter过了,所以这个新行将不会显示出来。

DataRowView drv  =  myDataView.AddNew(); 

为了解决这个问题,可能需要花费大量的时间去debugging,或者就是去修改datagrid什么的。但是实际上真正的问题是由于以下这句代码造成的。

   
     
myDataView.RowFilter  =   " country = 'us' "
由于过滤,dataview将只返回满足条件的所有datarow,其它的datarow将被排除。所以新增一个新行的时候,drRow["country"] 的值为null值(DBNull),而这是要被过滤条件所过滤得数据。

解决方法如下:

1// Change values in the DataRow. 
2drRow = drv.Row[0 ]; 
3drRow ["country"]='us'
 
4
drRow.EndEdit(); 

Note: 如果filter的表达式有多个栏位,所有的栏位必须进行同样的操作。


DevX:Navin Varma

你可能感兴趣的:(filter)