指数超出范围。 必须是非负数且小于集合参数名称的大小:index
我正在尝试将数据逐行添加到datagridview这里是我的代码,它说:“索引超出范围。必须是非负数且小于集合参数名称的大小:index”是什么这意味着 ? 在我的代码中有任何问题
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;
错误显示“索引超出范围”。 这意味着您试图使用无效的值索引对象。 如果你有两本书,我请你给我第三本书,你会看到我好笑。 这是看着你搞笑的电脑。 你说 – “创建一个集合”。 所以它做到了。 但最初这个集合是空的:它不仅没有任何内容 – 它没有空间可以容纳任何东西。 “它没有手”。
然后你说“该集合的第一个元素现在是’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
这意味着什么? 在我的代码中有任何问题
这意味着您正在访问集合中不存在的位置或索引。
要找到这个,请确保您的Gridview有5列,因为您正在使用它的第5列
dataGridView1.Columns[4].Name = "Amount";
这是显示数组元素的图像。 因此,如果您的gridview具有较少的列,那么您访问它的(index + 1)
,则会出现此exception。
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();
希望这能回答这个问题。
- 如何使用SmtpClient和DefaultNetworkCredentials将邮件发送到仅允许经过身份validation的发件人的通讯组列表?
- ASP.NET – Javascript timeOut警告基于web.config中的sessionState timeOut
- Sync Framework 2.1中的BulkInsertCommand失败
- C ++ Vector就像C#中的类
- 在ASP.NET中重定向之前的Javascript警报
- C#将DataTable绑定到现有的DataGridView列定义
- 文本框在回发时失去价值
- 在哪里使用Execute Scalar,Execute Reader和Data Set?
- 在触摸板上获取手指位置