在列表框中选择项目后,以新表单显示查询结果
本文关键字:表单 显示 结果 查询 新表单 列表 选择 项目 | 更新日期: 2023-09-27 18:26:27
我有两种形式:RoomSelect
和RoomActiveSessions
。
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,我想在其中显示我的结果。
这个过程应该是这样的:
- 用户在表单
RoomSelect
上启动应用程序 - 用户选择房间编号,然后单击"确定"
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
属性中的实际内容。