我的数据库中有两个表,Building
并且Rooms
. 我正在使用两个下拉列表。目的是让第一个下拉列表ddlBuilding
, 用于选择建筑物名称。选择名称后,我想查询数据库以仅查找与该建筑物相对应的房间号,并将其返回房间下拉列表中ddlRoomNumber
。
例如:
A 楼有 1、2 和 3 号
房间。B 楼有 4、5 和 6 号房间。
如果用户从 A 楼中选择ddlBuilding
他们应该只显示房间 1、2 和 3ddlRoomNumber
我已经设置了一个查询来执行此操作,但我收到一条错误消息,提示无法将下拉列表转换为字符串。有问题的代码是:
Protected Sub txtRoomNumber_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtRoomNumber.TextChanged
Dim db As New OrionDataClassesDataContext
Dim roomNumber = (From build In db.Buildings Join rm In db.Rooms On build.Building_code Equals rm.Building_code
Where build.Building_name = ddlBuilding
Select rm.Room_Number).distint
ddlRoomNumber.DataSource = roomNumber
ddlRoomNumber.DataBind()
End Sub
这where build.Building_name = ddlBuilding
是导致错误的行。关于如何将字符串从下拉列表中拉出并使用它来验证我的查询的任何想法。
经过一些回应和研究,我已将代码更改为以下代码。它仍然无法正常工作。 ddlRoomNumber
不绑定到我的查询。
Protected Sub ddlRoomNumber_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ddlRoomNumber.SelectedIndexChanged
Dim db As New OrionDataClassesDataContext
ddlRoomNumber.DataSource = (From build In db.Buildings Join rm In db.Rooms On build.Building_code Equals rm.Building_code
Where (build.Building_name = ddlBuilding.SelectedItem.Text)
Select rm.Room_Number, rm.Room_ID)
ddlRoomNumber.DataTextField = "Room_Number"
ddlRoomNumber.DataValueField = "Room_ID"
ddlRoomNumber.DataBind()
End Sub
这是asp页面。有什么方法可以输入 linq 数据源以将其指向我的 vb 查询。
<asp:DropDownList ID="ddlRoomNumber" runat="server" AutoPostBack="True">
</asp:dropdownlist>