2011-07-22 2 views
0

defaultview.sortがすでに設定されているデータテーブルがあり、データテーブルにデータが格納されていますが、データテーブルに行を追加するだけですすでにソートされているデータテーブルにアイテムを挿入する

//Sort the datatable 
dt.DefaultView.Sort = "DisplayFiled"; 

//Add the fixed row 
DataRow dr = dt.NewRow(); 
dr["ValueField"] = String.Empty; 
dr["DisplayField"] = "All"; 
dt.Rows.InsertAt(dr, 0);` 

答えて

1

あなたは、あなたが最初

​​
+0

他の答えは真ですが、これは最も巧妙なアイデアでした。ありがとう –

+0

@Hassanはupvoteに自由に感じます:] – cordialgerm

+0

:) thereあなたが行く –

0

あなたはソートテーブルthrought合格し、最初のレコードを非ソートされたテーブルにレコードをコピーすることができます。行は、常に最初の行であることを、そしてテーブルの残りの部分はnormalyソートする、ここに私のコードです"すべて"。

+0

ISNが表示されるまで、それを強制的にUserAdded = trueを設定する行を追加すると

DataTable dt = new DataTable(); dt.Columns.Add("UserAdded",typeof(bool)); dt.Columns.Add("DisplayField", typeof(int)); DataView vw = new DataView(dt); vw.Sort = "[UserAdded] desc, [DisplayField] asc"; 

にソートする2番目の列を追加することによって、これを達成することができますそこにはもっと簡単な方法がありますか?あなたがテーブルを一度だけソートするようにして、追加されたすべての新しいレコードがその位置に保持されます –

0

DataTableの別のインスタンスを作成します。必要な行を追加し、新しく作成したデータテーブルにソートされたテーブルの行を追加します。

System.Data.DataTable dt = new System.Data.DataTable(); 
    // fill dt 
    System.Data.DataTable dtNew = new System.Data.DataTable(); 
    System.Data.DataRow dr = dtNew.NewRow(); 
    dr["ValueField"] = String.Empty; 
    dr["DisplayField"] = "All"; 
    dtNew.Rows.InsertAt(dr, 0); 
    foreach (var row in dt.Rows) 
    { 
     dtNew.Rows.Add(row); 
    } 
関連する問題