一个dataview经过排序和过滤后,返回dv.table;
我把这个返回的datatable直接绑定到datagrid上显示出来的数据跟预想是一样,是正确的;
但是用循环for语句把这个datatable数据读出来或者调试时看这个datatable的数据就变成没
排序和没过滤的原来样子
请问为什么?

解决方案 »

  1.   

    直接对dv查询吧。绑定也是对dv的,不需要 dv.table
      

  2.   

    楼上的意思是对dataviewrow进行循环查询数据吗
      

  3.   

    DataView的Sort属性可能不是设置后就排好序了可能是在绑定的时候才排序.
      

  4.   

    后来我直接返回dv,用dataviewrow来取数据,就是排序和过滤好的数据;这样就可以了
    我认为datagrid的内部也有处理这个dv处理过的数据,而不是直接帮定的
      

  5.   

    dataview只是一个视图,就是你Select * From table一样,它并没有改变原有顺序,所以你要循环dataview
      

  6.   

    你还可以使用DataTable的Select方法来过滤和排序:
    DataSet dsOld = ......
    DataSet dsNew = dsOld.Clone();
    DataRow[] arr_rows = dsOld.Tables[0].Select(null,"distance asc",DataViewRowState.CurrentRows);//注:第一个参数是过滤的条件,第二个是排序的条件,这里我没有进行过滤,只进行了排序。
    foreach(DataRow arr_row in arr_rows)
    {
    dsNew.Tables[0].ImportRow(arr_row);
    }
    新的DataSet dsNew就是排序或者过滤后的,你可以使用for循环读取里面的内容。