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

本文关键字:表单 显示 结果 查询 新表单 列表 选择 项目 | 更新日期: 2023-09-27 18:26:27

我有两种形式:RoomSelectRoomActiveSessions

RoomSelect表单包含列表框(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打开,显示给定房间号的当前会话

我认为要实现这一点,我需要在数据库上运行查询时使用列表框中的值作为参数,但我不知道如何访问它

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

我得到的是System.Data.RowView,而不是数据库中的值。

我希望能帮我解决问题

编辑:

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

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

如果你得到的是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属性中的实际内容。