2009-12-30 4 views
0

J'ai une page avec 3 liste déroulante, les 2ème et 3ème listes déroulantes sont ajoutées avec CascadingDropDown. La 3ème liste déroulante prendra les paramètres de la 1ère et 2ème liste déroulante. Donc, dans l'exemple actuel pour CascadingDropDown que j'ai trouvé sur google, ils ne font que passer un paramètre à la méthode WebService. Comment passer deux paramètres à la méthode de service, de sorte que mon 3rd dropdownlist sera basé sur la SelectedValue de la 1ère et 2ème liste déroulante?CascadingDropDown prenant deux paramètres

<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 

Ceci est l'exemple de code que j'ai trouvé! Comme vous pouvez le voir dans le code, '@confid' sera passé à partir de la 2ème liste déroulante! Alors, comment puis-je modifier ce code pour obtenir la valeur sélectionnée à partir de la première liste déroulante?

Répondre

0

De quel service Web parlez-vous? Est-ce quelque chose que vous avez écrit ou le service web de quelqu'un d'autre?

S'il s'agit de votre service Web, mettez à jour la définition de la méthode et transmettez deux paramètres. Dans le cas contraire, contactez la personne concernée pour savoir ce qui peut être fait de mieux.

0

Il semble que l'affiche ne parle pas vraiment des services Web, mais de SqlCommand et de l'ajout de paramètres. D'abord, vous ne devriez JAMAIS exécuter sql directement à partir de votre application web comme ça. Mettez-le dans une procédure stockée. Deuxièmement, vous devez exécuter des vérifications sur les valeurs à venir, car c'est un bon moyen pour les utilisateurs de votre site Web d'utiliser SQL injection attacks.

maintenant ... Voici ce que vous recherchez:

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

devient

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

Ensuite, il suffit d'ajouter un autre de ces:

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

(avec l'autre valeur, bien sûr, comme ça)

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

J'ai modifié ma réponse pour résoudre votre problème. N'oubliez pas d'accepter cette réponse si cela vous aide. –

Questions connexes