CascadingDropDown с двумя параметрами

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

<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' будет передано из второго выпадающего списка! Итак, как мне изменить этот код, чтобы получить выбранное значение из 1-го выпадающего списка?


person Fire Hand    schedule 30.12.2009    source источник


Ответы (2)


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

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

person danish    schedule 30.12.2009

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

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

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

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

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)
person Gabriel McAdams    schedule 30.12.2009