0

我的数据库中有两个表,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>
4

1 回答 1

1

you can use ddlBuilding.SelectedItem.Text instead of ddlBuilding

于 2013-04-18T17:34:44.620 回答