0

我有一个带有 3 个下拉列表的页面,第二个和第三个下拉列表添加了 CascadingDropDown。第三个下拉列表将从第一个和第二个下拉列表中获取参数。因此,在我从谷歌找到的 CascadingDropDown 的当前示例中,它们仅将一个参数传递给 WebService 方法。如何将两个参数传递给服务方法,以便我的3rd dropdownlist将基于 1st 和 2nd 下拉列表的 SelectedValue?

<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”将从第二个下拉列表中传递!那么,我如何修改此代码以从第一个下拉列表中获取所选值?

4

2 回答 2

0

您指的是哪个网络服务?是你写的东西还是别人的网络服务?

如果它是您的 Web 服务,请更新其中的方法定义并传递两个参数。如果是别人的,请联系相关人员以了解最好的方法。

于 2009-12-30T04:42:14.403 回答
0

看来张贴者并没有真正询问 Web 服务,而是询问 SqlCommand 和添加参数。

首先,您永远不应该像这样直接从您的 Web 应用程序运行 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)
于 2009-12-30T04:42:39.083 回答