0

我使用下面的代码对数据表中的数据进行排序。我尝试了两种不同的方法,但这些方法中没有一个真正起作用。order 也是 DECS/ASC,colum 是 IE 10 列的索引。

有谁知道为什么会这样。

        string[] tosort = sortval.Split('-');
        string order = tosort[1];
        int colum = Convert.ToInt32(tosort[0]);
        DataView dv = new DataView();
        DataTable dt = new DataTable();
        dt = extractedData;
        string columnName = dt.Columns[colum].ToString();
        dt.DefaultView.Sort = columnName + " " + order;
      //  dv = dt.AsDataView();
      //  dv.Sort = dv.Table.Columns[colum].ColumnName + " " + order;
     //   dv.Sort = dv.Table.Columns[colum].ColumnName + " " + order;
     //   dt = dv.ToTable();
        extractedData = dt;
4

3 回答 3

1

排序不会改变DataTable它适用于视图中的数据顺序,因此您实际上应该绑定DataView类似dt.DefaultViewdt.DefaultView.ToTable();

于 2013-01-22T09:40:14.837 回答
1

我在这里假设了很多,但是如果您的排序正确,那么我认为您的数据循环不正确:

 // This should follow the correct sort order
 foreach(DataRowView r in extractedData.DefaultView)
 {
     Console.WriteLine(r["colName"]);
 }

或者,如果您绑定到 datagridview

dataGridView.DataSource = extractedData.DefaultView;
于 2013-01-22T09:40:49.263 回答
0

DataView.Sort不对底层证券进行排序,DataTable但它是DataView. 所以表中的行与以前的顺序相同。

您可以使用从结果DataView.ToTable中创建一个新DataTable的:

dt.DefaultView.Sort = columnName + " " + order;
extractedData = dt.DefaultView.ToTable();
于 2013-01-22T09:41:59.157 回答