我正在创建一个窗口表单,我运行此代码,第一次我正确地在datagirdview中添加avalue但第二次我试图在datagirdview中添加一个值但是得到这个错误
位置1没有行。 这一行
double b = Convert.ToDouble(dt.Rows[count][1]);
int count = 0;
private void button1_Click(object sender, EventArgs e)
{
id = Convert.ToInt32(txt_item.Text);
date = DateTime.Now;
string q = "select pro_name , amount from Product where pro_id = " + id ;
dt = g.selectQuery(q);
if (dt.Rows.Count > 0)
{
if (!dt.Columns.Contains("Quantity selected"))
{
dt.Columns.Add("Qty");
}
if (!dt.Columns.Contains("Total"))
{
dt.Columns.Add("Total");
}
double b = Convert.ToDouble(dt.Rows[count][1]);
dt.Rows[count][2] = 1;
dt.Rows[count][3] = 1*b;
dataGridView1.DataSource = dt;
count++;
}
}
答案 0 :(得分:2)
你应该这样写:
dt.Rows[dt.Rows.Count-1][1]
问题是计数是全局的,如果你单击按钮两次,count的值将为1.在这种情况下,如果Rows.Count是1,你的{只有行[0] {1}}。
因为它写得像:DataTable
或dt.Rows[dt.Rows.Count-1][1]
答案 1 :(得分:0)
你有一个全局变量count
;
它从零开始,然后将其增加到一个。
如果您的查询在第二次运行时只返回一行,则该行将位于索引0,而不是1。