У меня есть две таблицы в моем db, Building
и Rooms
. Я использую два dropdownlists. Цель состоит в том, чтобы иметь первый выпадающий список, ddlBuilding
, для выбора имени здания. Когда имя выбрано, я хочу запросить базу данных, чтобы найти номера комнат, соответствующие этому зданию, и вернуть их в выпадающем списке комнаты, ddlRoomNumber
.
Например:Преобразование значения dropdownlist в строку
Корпус А имеет номер 1, 2 и 3.
Здание B имеет номер 4, 5 и 6.
Если пользователь выбирает здание А из ddlBuilding
они должны быть представлены только с номерами 1, 2 и 3 в ddlRoomNumber
Я установил запрос для этого, но я получаю сообщение об ошибке, что dropdownlist не может быть преобразован в строку. Код в вопросе:
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>
Ач, что имеет смысл. Благодарю. Я пытаюсь проверить его сейчас, но по какой-то причине раскрывающийся список 'ddlRoomNumber' отмечен как unbound. Конечно, последние две строки моего кода должны связывать запрос с списком no? Существуют ли альтернативы связыванию моего запроса? – Gavin
вы можете попытаться связать это http://stackoverflow.com/questions/2346381/populating-dropdown-list-in-vb-net –
Я не знаю, что происходит. На этом этапе я пробовал несколько разных методов привязки, включая то, с чем вы меня связали. Я на 99% уверен, что набираю разумный код, но он просто не привязывается к моему ddl. Есть идеи? Код, в котором я сейчас запущен: – Gavin