2013-03-10 67 views
0

订单表我有以下数据:SQL语句返回只有一个记录

OrderNum | Item | Quantity| 
1234  | EE1 | 1  | 
1234  | EE3 | 1  | 
1235  | EE2 | 1  | 
1236  | EE5 | 1  | 
1236  | EE8 | 1  | 

我想在DataGridView中那些为了与1234

订单号码这是我的代码显示..但它只显示一个记录。EE1项目。

 con.Open(); 
     com.CommandText = "SELECT * FROM Orders WHERE OrderNo="+Convert.ToInt32(txtStudNo.Text)+""; 

     reader = com.ExecuteReader(); 


     int indx = dataGridView1.Rows.Add(); 
     DataGridViewRow row = dataGridView1.Rows[indx]; 

     if (reader.HasRows) 
     { 
      while (reader.Read()) 
      { 
       com2.CommandText = "SELECT Description, Price FROM Books WHERE BookID='" + reader[2].ToString() + "'"; 
       reader2 = com2.ExecuteReader(); 
        if (reader2.Read()) 
        { 
         row.Cells[0].Value = reader[2].ToString(); 
         row.Cells[1].Value = reader2[0].ToString(); 
         row.Cells[2].Value = reader[4].ToString(); 
         row.Cells[3].Value = reader2[1].ToString(); 
        } 

       } 

需要一些帮助..请。

+0

如果您对此进行调试,您可能会发现结果集返回了多行数据。问题在于你只是用数据覆盖网格中的同一行。 – PhoenixReborn 2013-03-10 15:14:42

+0

您只添加一行。这是你不断给不同的值分配的行。 – 2013-03-10 16:02:31

回答

1

你正在写的所有记录只有一行:

dataGridView1.Rows[indx]; 

为了不覆盖写入GridView中datanalready,你必须增加indx价值,并得到每个记录另一行参考。

也许下列代码正在为你工作?

con.Open(); 
com.CommandText = "SELECT * FROM Orders WHERE OrderNo="+Convert.ToInt32(txtStudNo.Text)+""; 

reader = com.ExecuteReader(); 

if (reader.HasRows) 
{ 
    while (reader.Read()) 
    { 
     int indx = dataGridView1.Rows.Add(); 
     DataGridViewRow row = dataGridView1.Rows[indx]; 

     com2.CommandText = "SELECT Description, Price FROM Books WHERE BookID='" + reader[2].ToString() + "'"; 
     reader2 = com2.ExecuteReader(); 

     if (reader2.Read()) 
     { 
      row.Cells[0].Value = reader[2].ToString(); 
      row.Cells[1].Value = reader2[0].ToString(); 
      row.Cells[2].Value = reader[4].ToString(); 
      row.Cells[3].Value = reader2[1].ToString(); 
     } 
    } 
} 
+0

好的..谢谢..我会试试这个。 – kv1809 2013-03-10 15:30:19

+0

我该怎么做,我尝试了很多想法,但我的想法是错误的。 – kv1809 2013-03-12 15:43:26

+0

看看我编辑的答案。 – user2154065 2013-03-14 20:13:51