私はコードをdatagridviewに1行ずつデータを追加しようとしていますが、「インデックスは範囲外でした。負ではなく、コレクションパラメータ名:インデックスのサイズ未満でなければなりません」これの意味は ?私のコードに問題はありますか
String Sqlstr2 = "select ItemName from Item where ItemID = '" + tbItemID.Text + "'";
db.DataRead(Sqlstr2);
string ItemName = db.dr["ItemName"].ToString();
DataGridView dataGridView1 = new DataGridView();
dataGridView1.Columns[0].Name = "ItemID";
dataGridView1.Columns[1].Name = "ItemName";
dataGridView1.Columns[2].Name = "Qty";
dataGridView1.Columns[3].Name = "UnitPrice";
dataGridView1.Columns[4].Name = "Amount";
string firstColum = tbItemID.Text;
string secondColum = ItemName;
string thirdColum = tbQuantity.Text;
string fourthColum = Convert.ToString(UnitPrice);
string fifthColum = Convert.ToString(sum);
string[] row = new string[]{ firstColum, secondColum, thirdColum, fourthColum, fifthColum };
dataGridView1.Rows.Add(row);
DataGridView
に列を追加していません
DataGridView dataGridView1 = new DataGridView();//Create new grid
dataGridView1.Columns[0].Name = "ItemID";// refer to column which is not there
なぜ例外が発生するのかが明らかになっていますか?
列を使用してエラーを修正する前にこの行を追加してください
dataGridView1.ColumnCount = 5;
エラーには、「インデックスが範囲外です」と表示されます。つまり、無効な値を使用してオブジェクトにインデックスを付けようとしていました。 2冊の本があり、3冊目の本をくれと頼むなら、あなたは私を面白いと思うでしょう。これはあなたを面白く見ているコンピューターです。あなたは言った-「コレクションを作成する」。それでした。ただし、最初はコレクションは空です。コレクションに何もないだけでなく、何も保持するスペースがありません。 「手がありません」。
次に、「コレクションの最初の要素は 'ItemID'になりました」と言いました。そして、コンピューターは「「最初のアイテム」のためのスペースを作るように頼まれたことは一度もありません」と言います。あなたが私に与えているこのアイテムを保持する手がありません。
コードに関しては、ビューを作成しましたが、サイズを指定しませんでした。あなたには必要だ
dataGridView1.ColumnCount = 5;
列にアクセスしようとする前。変更する
DataGridView dataGridView1 = new DataGridView();
dataGridView1.Columns[0].Name = "ItemID";
に
DataGridView dataGridView1 = new DataGridView();
dataGridView1.ColumnCount = 5;
dataGridView1.Columns[0].Name = "ItemID";
http://msdn.Microsoft.com/en-us/library/system.windows.forms.datagridview.columncount.aspx を参照してください
これはどういう意味ですか?私のコードに問題はありますか
コレクションに存在しない場所またはインデックスにアクセスしていることを意味します。
これを見つけるには、この行の5列目を使用しているため、Gridviewに5列あることを確認してください
dataGridView1.Columns[4].Name = "Amount";
これが配列の要素を示す画像です。したがって、gridviewの列が、アクセスする(index + 1)
より少ない場合、この例外が発生します。
dataGridView1.Columns
はおそらく5未満の長さです。dataGridView1.Columns[4]
にアクセスすると、リスト外になります。
このエラーは、グリッドビューでページングを有効にしている場合に発生します。グリッドからレコードを削除する場合は、このようなことをする必要があります。
int index = Convert.ToInt32(e.CommandArgument);
int i = index % 20;
// Here 20 is my GridView's Page Size.
GridViewRow row = gvMainGrid.Rows[i];
int id = Convert.ToInt32(gvMainGrid.DataKeys[i].Value);
new GetData().DeleteRecord(id);
GridView1.DataSource = RefreshGrid();
GridView1.DataBind();
これが質問に答えることを願っています。