0

我有 2 种形式: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表格?

4

1 回答 1

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属性中的真正内容。

于 2013-08-05T18:22:37.390 回答