none
问个DataTable.Rows.InsertAt()的问题 RRS feed

  • 问题

  • DataTable.Rows.InsertAt()

    怎么能使InsertAt()反着添加数据啊

    DataRow dr1 = DT.NewRow();
                dr1[0]= "第二行";
                DT.Rows.InsertAt(dr1, 0);
     DataRow dr1 = DT.NewRow();
                dr1[0]= "第一行";
                DT.Rows.InsertAt(dr1, 1);
    2009年8月30日 7:13

答案

  • 您好,请参考:

       //例如有个table,有个名为CompanyName的列,然后按该列倒序排列
       DataTable table = DataSet1.Tables["Orders"];

        DataRow[] foundRows = table.Select(“1=1”, “CompanyName DESC”);

        //新建一个DataTable,这个表结构与上面的表相同
        DataTable newDataTable = DataSet1.Tables["Orders"].Clone();
        // Print column 0 of each returned row.
        foreach(DataRow dataRow in foundRows)
        {
            newDataTable.Rows.Add(dataRow);
           
        }
    2009年8月30日 8:46
  • 你好,InsertAt是用于在已经有数据的基础上在中间插入数据,如果你只是想添加,没有打算插队,请使用Add。
    jon.valett@gmail.com
    2009年8月30日 9:22
    版主
  • 你也可以直接在位置参数上想办法,想插入最后一行,直接:
    DT.Rows.InsertAt(dr1, DT.Rows.Count-1);



    周雪峰
    2009年8月30日 9:34
    版主
  • 楼主是要把一个DataTable里面的数据反序插入到另外一个DataTable吗?
    楼主可以创建一个DataTable的 DataView,然后利用DataView的Sort属性设置排序字段,然后依次遍历这个DataView就可以依次取到指定顺序的行了。

    理解的越多,需要记忆的就越少
    2009年8月30日 12:28
    版主

全部回复

  • 您好,InsertAt是用来插入数据到指定位置的。
    如果是想按一定的排序结果来重新插入数据,我觉得,可以用DataTable的Select方法来返回记录数组。
    然后for循环添加到新的DataTable中即可。
    2009年8月30日 7:56
  • 能不能举个例子,在此谢过

    2009年8月30日 8:03
  • 您好,请参考:

       //例如有个table,有个名为CompanyName的列,然后按该列倒序排列
       DataTable table = DataSet1.Tables["Orders"];

        DataRow[] foundRows = table.Select(“1=1”, “CompanyName DESC”);

        //新建一个DataTable,这个表结构与上面的表相同
        DataTable newDataTable = DataSet1.Tables["Orders"].Clone();
        // Print column 0 of each returned row.
        foreach(DataRow dataRow in foundRows)
        {
            newDataTable.Rows.Add(dataRow);
           
        }
    2009年8月30日 8:46
  • 你好,InsertAt是用于在已经有数据的基础上在中间插入数据,如果你只是想添加,没有打算插队,请使用Add。
    jon.valett@gmail.com
    2009年8月30日 9:22
    版主
  • 你也可以直接在位置参数上想办法,想插入最后一行,直接:
    DT.Rows.InsertAt(dr1, DT.Rows.Count-1);



    周雪峰
    2009年8月30日 9:34
    版主
  • 我试过了,你这办法行不通啊。不过还是谢过了
    2009年8月30日 10:54
  • 我试过了,你这办法行不通啊。不过还是谢过了

    是说我的方法吗,那个是个伪代码,是个大致的思路,您可以通过调试等手段,观察每个变量的内容,最终达到自己的目标。
    2009年8月30日 12:11
  • 楼主是要把一个DataTable里面的数据反序插入到另外一个DataTable吗?
    楼主可以创建一个DataTable的 DataView,然后利用DataView的Sort属性设置排序字段,然后依次遍历这个DataView就可以依次取到指定顺序的行了。

    理解的越多,需要记忆的就越少
    2009年8月30日 12:28
    版主