0

以下のコードは、datataable 内のデータをソートするために使用しています。私が試した 2 つの異なる方法があり、これらの方法は実際には機能しません。また、順序は DECS/ASC で、列は列 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

私はここで多くのことを想定していますが、ソートが正しい場合は、データを正しくループしていないと思います。

 // 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 に答える
1

DataTable並べ替えは、ビューに適用されるデータの順序を変更しないため、実際には、DataViewなどをバインドする必要がありdt.DefaultViewますdt.DefaultView.ToTable();

于 2013-01-22T09:40:14.837 に答える
0

DataView.Sort基になるものをソートしませんDataTableが、それはDataViewです。したがって、テーブルの行は以前と同じ順序になります。

結果からDataView.ToTable新しいものを作成するために使用できます。DataTable

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