1

datagridviewいくつかのリストから値を入力する必要があります。私はそのような方法でそれを作ろうとします:

List<List<object>> objList1 = new List<List<object>>
    {
         new List<object> {null, null, null, "Some Value"},
         new List<object> {"Some text", "Another Text", 212}
    };

List<List<object>> objList2 = new List<List<object>>
    {
         new List<object> {null, null, null, "Some Value from 2 list"},
         new List<object> {"Some text 3", "Another Text 5", 34}
    };

foreach (var objList in objList1)
    {
         dataGridView.Rows.Add();
         for (int i = 0; i < objList.Count -1; i++)
         {
              dataGridView.Rows[dataGridView.RowCount - 1].Cells[i].Value = objList[i] != null ? objList[i].ToString() : "";
         }
    }
    dataGridView.Rows.Add();

foreach (var objList in objList2)
    {
         dataGridView.Rows.Add();
         for (int i = 0; i < objList.Count - 1; i++)
         {
             dataGridView.Rows[dataGridView.RowCount - 1].Cells[i].Value = objList[i] != null ? objList[i].ToString() : "";
         }
    }
    dataGridView.Rows.Add();

しかし、埋められる代わりにdatagridview、最後の行だけが埋められます。

ここに画像の説明を入力

4

1 に答える 1

1

しかし、データグリッドビューを埋める代わりに、最後の行だけを埋めます

AllowUserToAddRowプロパティが に設定されていtrueます。だからあなたが書くとき:

dataGridView.Rows[dataGridView.RowCount - 1]

新しい行を追加するたびに「置換」される新しい行にアクセスします。代わりに

dataGridView.Rows[dataGridView.RowCount - 2]

このdataGridView.Rows.Add()メソッドは、追加された行のインデックスを提供することに注意してください。したがって、次のように書くこともできます。

int addedRowindex = DataGridView.Rows.Add();
DataGridView.Rows[addedRowindex].Cells[i].Value = ...

あなたがやろうとしていることを正確に理解することはできません。に置き換えるRowCount - 1RowCount - 2、次のようになります。

ここに画像の説明を入力


また

for (int i = 0; i < objList.Count -1; i++)

すべきではありません

for (int i = 0; i <= objList.Count - 1; i++) 

結果:

ここに画像の説明を入力

于 2013-10-02T01:57:41.173 に答える