位置1没有排

时间:2015-01-11 20:31:57

标签: c# sql-server-2008

我正在创建一个窗口表单,我运行此代码,第一次我正确地在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++;

            }
}

2 个答案:

答案 0 :(得分:2)

你应该这样写:

dt.Rows[dt.Rows.Count-1][1]

问题是计数是全局的,如果你单击按钮两次,count的值将为1.在这种情况下,如果Rows.Count是1,你的{只有行[0] {1}}。

因为它写得像:DataTabledt.Rows[dt.Rows.Count-1][1]

答案 1 :(得分:0)

你有一个全局变量count; 它从零开始,然后将其增加到一个。

如果您的查询在第二次运行时只返回一行,则该行将位于索引0,而不是1。