0

Orders Table には、次のデータがあります。

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

注文番号1234の注文をdatagridviewに表示したい。

これは私のコードです..しかし、1つのレコードしか表示されません..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();
                    }

                }

助けが必要です..お願いします。

4

1 に答える 1

1

すべてのレコードを 1 つの行に書き込んでいます。

dataGridView1.Rows[indx];

グリッドビューに既に書き込まれているデータを上書きしないようにするには、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();
        }
    }
}
于 2013-03-10T15:24:58.147 に答える