C# で、既存の行の後に新しい行を追加する方法datagridview
。
私は試しgrdshedule.Rows.Add();
ましたが、すべての行が既存の行の前に追加されています
C# で、既存の行の後に新しい行を追加する方法datagridview
。
私は試しgrdshedule.Rows.Add();
ましたが、すべての行が既存の行の前に追加されています
datagridview のAllowUserToAddRowsプロパティがFalseであることを確認してください。そして、プログラムで以前に試したように;
datagridview.Rows.Add();
既存の行の後またはテーブルの最後に新しい行を追加する場合、DataGridView で同じ問題が発生しました。
これにしばらく時間を費やした後、テーブルの最後に行を追加できなかった理由がわかりました。datagridview に問題や制限があったわけではありませんが、実際には私のコードにありました。ただし、datagridview は毎回テーブルの最後に新しい行を追加します。
コードの一部を投稿していただければ、回答を得るのに大いに役立ちます。
とにかく、私のプログラムには、オブジェクトのリストを作成するクラスがあります。私のリストは実際には ArrayList であり、これらのオブジェクトをリストにあるのと同じ順序で表示します。リストからオブジェクトを追加または削除するたびに、datagridview に 1 対 1 で反映されます。つまり、オブジェクトが ArrayList で逆の順序でリストされていた場合、それはオブジェクトが Datagridview で表示された順序です。これは、既存の行の上に行が追加されているという意味ではありませんが、私にはそう見えました。
私の推測では、プログラムで維持しているある種のリストがあると思います。このリストは、datagridview に表示する情報を取得する場所です。私の言い方が正しければ、datagridview で現在選択されている行に基づいて、プログラムのどこかに項目をリストに挿入している可能性があります。その場合、現在の項目は ArrayList で選択した項目の位置に挿入されています。これにより、リストは ArrayList で選択された項目から 1 つずつシフトされます。したがって、datagridview にアイテムのリストを表示すると、テーブルの最後に新しい行が追加されていないように見えます。
この問題を解決するには、最初に新しい空の行を追加する必要があります。
DGrid.Rows.Add;
次に、新しいアイテムをリストの最後に挿入します。
var newitem := new Object;
ArrayList.insert(DGrid.RowCount-1,newitem);
次に、この ArrayList に基づいて datagridview を更新します。これで、datagridview は期待どおりに動作します。
私の修正の前に、私のデータグリッドビューは、新しい行を一番上に逆の順序で挿入しているように動作し続けました。
grdshedule.Rows.Insert(grdshedule.Rows.Count-1, newRow);
行が自動的にソートされないため、下部に新しい行が表示されません。これは、新しい行を追加した後に行を並べ替える必要があることを意味します
並べ替えるには、 http://msdn.microsoft.com/en-us/library/0868ft3z.aspxを例にしてください
**Line Taken from MSDN Remarks**
Rows in the control are not automatically sorted when new rows are added.
MSDN http://msdn.microsoft.com/en-us/library/x0akdhcd.aspxの全文をお読みください。