CascadingDropDown采用两个参数

时间:2009-12-30 04:32:27

标签: asp.net cascadingdropdown

我有一个包含3个下拉列表的页面,第二个和第三个下拉列表添加了CascadingDropDown。第3个下拉列表将从第1和第2个下拉列表中获取参数。因此,在我从谷歌找到的CascadingDropDown的当前示例中,他们只将一个参数传递给WebService方法。如何将两个参数传递给服务方法,以便我的3rd dropdownlist将基于第一个和第二个下拉列表的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'将从第二个下拉列表中传递出来!所以,我是否修改此代码以从第一个下拉列表中获取所选值?

2 个答案:

答案 0 :(得分:0)

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

如果是您的webservice,请更新其中的方法定义并传递两个参数。如果是其他人的话,请联系相关人员以了解可以做的最好的事情。

答案 1 :(得分:0)

海报似乎并没有真正询问Web服务,而是关于SqlCommand和添加参数。

首先,你永远不应该直接从你的Web应用程序运行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)