【问题标题】:there is no row at position 1位置 1 没有行
【发布时间】:2015-01-11 20:31:56
【问题描述】:

我正在创建一个窗口窗体并运行此代码,第一次我在 datagirdview 中正确添加了一个值,但第二次我试图在 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++;

            }
}

【问题讨论】:

    标签: c# sql-server-2008


    【解决方案1】:

    你应该这样写:

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

    问题是计数是全局的,如果您单击按钮两次,计数的值将为 1。在这种情况下,如果 Rows.Count 为 1,您的 @ 中将只有 row[0] 987654322@.

    因为这样写:dt.Rows[dt.Rows.Count-1][1]dt.Rows[0][1]

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-01-05
        • 2013-02-15
        • 1970-01-01
        • 2021-12-22
        • 2015-09-07
        • 1970-01-01
        • 1970-01-01
        • 2015-08-18
        相关资源
        最近更新 更多