【发布时间】:2014-09-29 07:48:10
【问题描述】:
美好的一天堆栈交换。这是我在这里的第一篇文章。在使用 DataTable 和 Datarow 遇到的这个问题上,我需要您的帮助。这是错误:
索引超出范围。必须是非负数且小于 集合。参数名称:索引
^发生这种情况并指向 dataGridView1[0] 索引
这是我的代码:
static DataTable dtTest = GetTable();
static DataTable GetTable()
{
//added 4 columns with an incremental id
DataTable dt = new DataTable();
dt.Columns.Add("ID");
dt.Columns["ID"].AutoIncrement = true;
dt.Columns.Add("item");
dt.Columns.Add("qty", typeof(decimal));
dt.Columns.Add("amount", typeof(decimal));
return dt;
}
private void btnInsert_Click(object sender, EventArgs e)
{
//added 3 rows to hold data to be inserted to DataTable
DataRow myRow;
myRow = dt.NewRow();
myRow["item"] = txtItem.Text;
myRow["qty"] = Convert.ToDecimal(txtQty.Text);
myRow["amount"] = Convert.ToDecimal(txtAmount.Text);
dtTest.Rows.Add(myRow);
refreshItemGrid();
}
private void refreshItemGrid()
{
dataGridView1.Refresh();
dataGridView1.Columns[0].Visible = false; // ID
dataGridView1.Columns[1].HeaderText = "ITEM"; // item
dataGridView1.Columns[2].HeaderText = "QUANTITY"; // qty
dataGridView1.Columns[3].HeaderText = "AMOUNT"; // amount
}
我在哪里做错了?在此先感谢您的帮助。干杯!
【问题讨论】:
-
在哪里将 dtTest 绑定到 dataGridView1?在绑定它们之前,dataGridView 中没有可使用的列
-
我之前尝试过“dataGridView1.DataSource = dtTest”来绑定我的datagridview,但还是一样的错误
-
属性 AutoGenerateColumns 的值是多少?它应该设置为 True (这是默认设置,但让我们检查一下......),顺便说一下,我想这是一个错字,但你不能从一个表创建一个 NewRow 并添加到另一个表
-
我如何支持史蒂夫的评论?它解决了它!谢谢,伙计!