在列表框中选择项目后,以新的形式显示查询结果

时间:2013-08-05 18:10:53

标签: c# sql visual-studio-2010 ms-access

我有两种表单:RoomSelectRoomActiveSessions

RoomSelect表单包含listbox(listbox1)和一个按钮(button1)。列表框绑定到名为“Room”的本地数据库表,并显示4个不同的房间号。

房间桌

(PK)RoomID RoomName
CMP2001      room 1
MB20312      room 2
FR45312      room 3
TRY2233      room 4

RoomID用作另一个表Sessions

中的外键
(PK)sessionID (FK)roomID sessionStartDate sessionTimeStart sessionTimeEnd
1ACMP2343       CMP2001     09/05/2013          12:00 AM         14:00 PM
2ACMP2343       MB20312     05/05/2013          09:00 AM         11:00 PM
1ACMP3456       TRY2233     15/05/2013          12:00 AM         13:00 PM
2ACMP3456       CMP2001     01/05/2013          10:00 AM         13:00 PM
1ABIO3422       MB20312     30/04/2013          11:00 AM         13:00 PM
2ABIO3422       CMP2001     01/04/2013          14:00 AM         16:00 PM
1ABIO2217       FR45312     12/05/2013          16:00 AM         18:00 PM
2ABIO2217       MB20312     03/05/2013          12:00 AM         14:00 PM   

RoomActiveSession表单包含dataGridView,我想在其中显示结果。

该过程应如下所示:

  1. 表单RoomSelect上的用户启动应用程序。
  2. 用户选择房间号码,然后单击“确定”。
  3. RoomSelect表单关闭,RoomActiveSession打开,显示给定房间号的当前会话
  4. 我认为要实现这一点,我需要在数据库上运行查询时使用列表框中的值作为参数,但我不知道如何访问它。当我试图得到它时:

    private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
            {
    
                MessageBox.Show(listBox1.SelectedItem.ToString());
            }
    

    我得到System.Data.RowView,而不是DB的值。

    我很感激我的问题帮助

    编辑:

    还有一个问题。如何在突出显示房间号码并在RoomSelect表单上单击“确定”后打开新表单?

1 个答案:

答案 0 :(得分:0)

如果你得到的是DataRowView,请执行以下操作:

if (listBox1.SelectedItem is DataRowView)
{
    DataRowView drv = (DataRowView)listBox1.SelectedItem;
    String s = drv["RoomID"] as String;
    if (!String.IsNullOrEmpty(s))
        MessageBox.Show(s);
}

或许,您的目标有点冗长,但仅仅是为了展示SelectedItem属性中的真实内容。