2013-04-18 2 views
0

У меня есть две таблицы в моем 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> 

ответ

1

вы можете использовать ddlBuilding.SelectedItem.Text вместо ddlBuilding

+0

Ач, что имеет смысл. Благодарю. Я пытаюсь проверить его сейчас, но по какой-то причине раскрывающийся список 'ddlRoomNumber' отмечен как unbound. Конечно, последние две строки моего кода должны связывать запрос с списком no? Существуют ли альтернативы связыванию моего запроса? – Gavin

+0

вы можете попытаться связать это http://stackoverflow.com/questions/2346381/populating-dropdown-list-in-vb-net –

+0

Я не знаю, что происходит. На этом этапе я пробовал несколько разных методов привязки, включая то, с чем вы меня связали. Я на 99% уверен, что набираю разумный код, но он просто не привязывается к моему ddl. Есть идеи? Код, в котором я сейчас запущен: – Gavin

Смежные вопросы