DataView m_dv= new DataView();
m_dv=dv ;
m_dv.Sort="XXXX";
int dsRowCount; int i;
dsRowCount=dv.Count;
DataTable dt =new DataTable();
for(i=0;i<10;i++)                //假定每页显示10行
{
  m_dv.AddNew();
}    代码如上,我要原来的DataView后面新加十条记录时,只有第一条是在最后一行,其它的都是在原记录的前面
请问该怎么解决??

解决方案 »

  1.   

    TO:wlzbaby(没病真好) 
    这和排序的字段没有关系,
    而且添加完记录之后已重新绑定到DataGrid中TO:coldpanth(云之崖)
    我是新加空行,没办法添加后再排序,不然的话,空行会在第一行上的!我是要对显示十条记录到DataGrid中,如果有六条的话就新加空行!
      

  2.   

    你可试着将 m_dv.AddNew();替换为如下语句:
    m_dv.Table.Rows.InsertAt(m_dv.Table.NewRow(),m_dv.Count + i);
      

  3.   

    TO:hchxxzx(NET?摸到一点门槛) 还是不行啊!老样子!极度怀疑sort的执行顺序
      

  4.   

    在datagrid更新前收集更新的数据
    Dim c_colNewCustomerDataRows As New Collection
    然后读取
    LoadUpdatableDataSet()
      

  5.   

    让我来告诉你为什么吧。
    当你往DataView里面每插入一条新的纪录的时候,上一条刚插入的纪录就会被自动追加到原始的DataTable里面去。
    这样,当你追加到第十条纪录的时候,画面上表示出的是10条纪录,而实际上DataTable里面是9条纪录。
    最后一条并没有被追加到DataTable里面去。
    而DataGrid排序的时候,实际上是按照DataTable里面实际上存在的数据排序的,所以,只会有9条数据被排序。而你没有指明排序的方向,默认是aesc,空行会被排在上面,也就是你看到的,最后会有一条空行的纪录,无论你怎么排序,它都在最下面,因为它并没有参与排序。
    即便你追加的不是空行,他也不会被排序的。
    所以呢,你最好是直接追加纪录到原始的DataTable里面去。
    这样就没问题了。
    当然,如果你想证明我说的对不对的话,你可以在执行完追加空行纪录的循环处理下面打印出DataView的纪录数和DataTable的纪录数,一看就明白了。
    呵呵。
    祝你好运
      

  6.   

    TO:fullowjer(水世纪)老兄,
    非常感谢您老的不啬讲解,令小的我茅塞顿开,让俺豁然开朗,让吾等一泄千里!
    怀着对您老兄的万分敬仰和千般崇拜,
    因而决定暂时先不结帐,以便可以再一睹您老兄的靓丽容貌!
    哈哈…广告之后,马上回来结帐!
      

  7.   

    终于结账啦。
    hoho不容易啊