0

3 つのドロップダウン リストを持つページがあり、2 番目と 3 番目のドロップダウン リストは CascadingDropDown で追加されます。3 番目のドロップダウン リストは、1 番目と 2 番目のドロップダウン リストからパラメーターを取得します。したがって、Google から見つけた CascadingDropDown の現在の例では、1 つのパラメーターのみを WebService メソッドに渡しています。3rd dropdownlist1 番目と 2 番目のドロップダウン リストの SelectedValue に基づいて、サービス メソッドに 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' は 2 番目のドロップダウン リストから渡されます。では、このコードを変更して、最初のドロップダウンリストからも選択した値を取得するにはどうすればよいですか??

4

2 に答える 2

0

どの Web サービスについて言及していますか? それはあなたが書いたものですか、それとも他の誰かのウェブサービスですか?

Web サービスの場合は、メソッド定義を更新し、2 つのパラメーターを渡します。他人のものである場合は、関係者に連絡して、何ができるかを確認してください。

于 2009-12-30T04:42:14.403 に答える
0

ポスターは実際には Web サービスについてではなく、SqlCommand とパラメーターの追加について尋ねているようです。

まず、そのような Web アプリケーションから直接 sql を実行しないでください。ストアド プロシージャに配置します。

2 番目に、入ってくる値のチェックを実行する必要があります。これは、Web サイトのユーザーが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)
于 2009-12-30T04:42:39.083 に答える