连接、查询语句都正常的,主要代码如下:
        private void dataGridView1_Click(object sender, EventArgs e)
{            
            DataTable dt = new DataTable();
            dt.Columns.Add("项目编号", typeof(string));
            dt.Columns.Add("物品编号", typeof(string));
            dt.Columns.Add("物品名称", typeof(string));
            dt.Columns.Add("物品类型", typeof(string));
            dt.Columns.Add("单价", typeof(string));
            dt.Columns.Add("数量", typeof(string));
            DataRow dr = dt.NewRow();                reader01 = cmdselect01.ExecuteReader();
                    while (reader01.Read())
                    {
                        dr[0] = reader01[0].ToString();
                        dr[1] = reader01[1].ToString();
                        dr[2] = reader01[2].ToString();
                        dr[3] = reader01[3].ToString();
                        dr[4] = reader01[4].ToString();
                        dr[5] = reader01[5].ToString();
                        dt.Rows.Add(dr);
                    }
                reader01.Close();
                dataGridView2.DataSource = dt;
}这是个datagridview1的click事件代码,但是在运行时,点到包含多个数据的项目时,会弹出System.ArgumentException:该行已经属于此表这个错误,我表示很不能理解,还请大虾们指点,谢谢!

解决方案 »

  1.   

      DataRow dr = dt.NewRow();
    放到while循环里面
      while (reader01.Read())
      {
          DataRow dr = dt.NewRow();
      }
      

  2.   

    当然报这个错了,你写错啦private void dataGridView1_Click(object sender, EventArgs e)
    {  
      DataTable dt = new DataTable();
      dt.Columns.Add("项目编号", typeof(string));
      dt.Columns.Add("物品编号", typeof(string));
      dt.Columns.Add("物品名称", typeof(string));
      dt.Columns.Add("物品类型", typeof(string));
      dt.Columns.Add("单价", typeof(string));
      dt.Columns.Add("数量", typeof(string));
      DataRow dr;  reader01 = cmdselect01.ExecuteReader();
      while (reader01.Read())
      {
         dr = dt.NewRow(); //每遍历一行数据的同时产生一个新行,用来保存数据
         dr[0] = reader01[0].ToString();
         dr[1] = reader01[1].ToString();
         dr[2] = reader01[2].ToString();
        dr[3] = reader01[3].ToString();
        dr[4] = reader01[4].ToString();
        dr[5] = reader01[5].ToString();
        dt.Rows.Add(dr);
     }
      reader01.Close();
      dataGridView2.DataSource = dt;
    }