2

指定したデータを列に追加したいのですが、「インデックスが範囲外でした。負ではなく、コレクションのサイズ未満である必要があります。パラメータ名:インデックス」というエラーが表示されます。

private void Button1Click(object sender, EventArgs e)
    {
        var result = _transactionService.GetTransactionReport(DateTime.Now.AddDays(-2), DateTime.Now);
        foreach (var transaction in result)
        {
            for (int r = 0; r < result.Count; r++)
            {
                dataGridView1.Rows[r].Cells[0].Value = transaction.Number;
                dataGridView1.Rows[r].Cells[1].Value = transaction.DateTime;
                dataGridView1.Rows[r].Cells[1].Value = transaction.Customer.Name;
            }
        }
    }

行と列にデータを追加する方法は?

4

1 に答える 1

1

この行でエラーがスローされていますか:

dataGridView1.Rows[r].Cells[0].Value = transaction.Number;

存在しない DataGridView の行を参照しているため、そのエラーが発生していると思います。行を DataGridView に追加するには、いくつかの方法があります。DataGridViewRowCollection.Addメソッドを使用して、新しい行を追加し、トランザクション オブジェクトの 1 つからの値を入力できます。

private void Button1Click(object sender, EventArgs e) {
    var result = _transactionService.GetTransactionReport(DateTime.Now.AddDays(-2), DateTime.Now);
    foreach (var transaction in result) {
        for (int r = 0; r < result.Count; r++) {
            dataGridView1.Rows.Add(new object[] { transaction.Number, transaction.DateTime, transaction.Customer.Name });
        }
    }
}

このコードは、DataGridView に少なくとも 3 つの列が既にあることを前提としていることに注意してください。

于 2012-11-09T03:38:06.703 に答える