2009-12-30 5 views
0

У меня есть страница с 3 раскрывающимся списком, второй и третий раскрывающийся список добавляются с CascadingDropDown. 3-й выпадающий список будет принимать параметры из 1-го и 2-го раскрывающегося списка. Итак, в текущем примере для CascadingDropDown, который я нашел из google, они передают только один параметр методу WebService. Как передать два параметра методу службы, чтобы мой 3rd dropdownlist основывался на SelectedValue 1-го и 2-го выпадающего списка?CascadingDropDown с двумя параметрами

<WebMethod()> _ 
Public Function GetTeams(ByVal knownCategoryValues As String, ByVal category As String) As CascadingDropDownNameValue() 
    Dim strConnection As String = ConfigurationManager.ConnectionStrings("nerdlinessConnection").ConnectionString 
    Dim sqlConn As SqlConnection = New SqlConnection(strConnection) 
    Dim strTeamQuery As String = "SELECT * FROM TEAM WHERE conf_id = @confid" 
    Dim cmdFetchTeam As SqlCommand = New SqlCommand(strTeamQuery, sqlConn) 

    Dim dtrTeam As SqlDataReader 
    Dim kvTeam As StringDictionary = CascadingDropDown.ParseKnownCategoryValuesString(knownCategoryValues) 

    Dim intConfId As Integer 

    If Not kvTeam.ContainsKey("Conference") Or Not Int32.TryParse(kvTeam("Conference"), intConfId) Then 
     Return Nothing 
    End If 

    cmdFetchTeam.Parameters.AddWithValue("@confid", intConfId) 
    Dim myTeams As New List(Of CascadingDropDownNameValue) 

    sqlConn.Open() 
    dtrTeam = cmdFetchTeam.ExecuteReader 

    While dtrTeam.Read() 
     Dim strTeamName As String = dtrTeam("team_name").ToString 
     Dim strTeamId As String = dtrTeam("team_id").ToString 

     myTeams.Add(New CascadingDropDownNameValue(strTeamName, strTeamId)) 
    End While 

    Return myTeams.ToArray 
End Function 

Это пример кода, который я нашел! Как вы можете видеть в коде, «@confid» будет передан из второго выпадающего списка! Итак, hw я могу изменить этот код, чтобы получить выбранное значение из первого выпадающего списка?

ответ

0

Какой веб-сервис вы имеете в виду? Это что-то, что вы написали или чей-то веб-сервис?

В случае, если это ваш веб-сервис, обновите определение метода в нем и передайте два параметра. Если это кто-то другой, обратитесь к заинтересованному лицу, чтобы узнать, что лучше всего сделать.

0

Похоже, что плакат не спрашивает о веб-сервисах, а о SqlCommand и добавляет параметры.

Во-первых, вы никогда не должны всегда запускать sql прямо из своего веб-приложения. Поместите его в хранимую процедуру.

Во-вторых, вы должны запускать проверки входящих значений, потому что это хороший способ для пользователей вашего веб-сайта использовать SQL injection attacks.

Теперь ... Вот то, что вы искали:

Dim strTeamQuery As String = "SELECT * FROM TEAM WHERE conf_id = @confid" 

становится

Dim strTeamQuery As String = "SELECT * FROM TEAM WHERE conf_id = @confid AND second_id = @secondId" 

Тогда просто добавить еще один из них:

cmdFetchTeam.Parameters.AddWithValue("@confid", intConfId) 

(с другой значение, конечно, так:

cmdFetchTeam.Parameters.AddWithValue("@confid", intConfId) 
cmdFetchTeam.Parameters.AddWithValue("@secondId", intSecondId) 
+0

Я изменил свой ответ, чтобы решить вашу проблему. Не забудьте принять этот ответ, если это поможет. –

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