2009-08-04 5 views
0

J'utilise ASP.NET avec C#Comment appeler la fonction javascript sur un des éléments de sélection selectedIndexChange

J'ai un élément HtmlSelect et je suis attemping d'appeler une fonction javascript lorsque l'index de la sélection est modifiée.

riskFrequencyDropDown est créé dynamiquement dans le code C# derrière essayé:

riskFrequencyDropDown.Attributes.Add("onchange", "updateRiskFrequencyOfPointOnMap(" + riskFrequencyDropDown.ID.Substring(8) + "," + riskFrequencyDropDown.SelectedValue +");"); 

mais il ne remet pas la fonction javascript sur ma page. Lorsque je supprime les paramètres, cela fonctionne bien, mais j'ai besoin de passer ces paramètres pour assurer une fonctionnalité correcte.

Toute idée à ce problème serait très apprécié

Répondre

4

Vos paramètres sont numériques ou alphanumériques? Si elles contiennent des lettres, vous devrez les citer dans le javascript. Notez l'ajout des guillemets simples ci-dessous.

riskFrequencyDropDown.Attributes.Add("onchange", 
      "updateRiskFrequencyOfPointOnMap('" 
        + riskFrequencyDropDown.ID.Substring(8) 
        + "','" 
        + riskFrequencyDropDown.SelectedValue +"');"); 
0

La réponse de tvanfosson répond à votre question. Une autre option à envisager (qui pourrait vous empêcher de souffrir de ce nouveau):

Auteur simple javascript dans votre C#:

riskFrequencyDropDown.Attributes.Add("onchange", 
      "updateRiskFrequencyOfPointOnMap(this);"); 

Et puis, dans la fonction javascript lui-même (qui est appelée sur le onchange) , obtenir les valeurs dont vous avez besoin de l'objet dropDown:

function updateRiskFrequencyOfPointOnMap(dropDown) { 
    var riskFrequencyId = dropDown.ID.Substring(8); 
    var riskFrequencyValue = dropDown.SelectedValue; 
    // etc 
} 

Un avantage moins évident pour cette conception: si jamais vous changez la façon dont vous utilisez l'objet menu déroulant (sous-chaîne (6) vs Substring (8), peut-être), vous d Vous n'avez pas besoin de changer votre C# - il vous suffit de changer votre javascript (et seulement en un seul endroit).

0

Je proposerai string.Format avec des guillemets simples

riskFrequencyDropDown.Attributes.Add("onchange",string.Format("updateRiskFrequencyOfPointOnMap('{0}','{1}');",riskFrequencyDropDown.ID.Substring(8),riskFrequencyDropDown.SelectedValue)); 
0

Je suggère d'utiliser la réponse de Lance. En effet, l'envoi de la valeur sélectionnée au moment où attribute.add est appelé signifie que l'onchange utilisera la valeur sélectionnée. Disons que ddl contient ("Un", "Deux", "Trois") et "Un" est sélectionné par défaut. Chaque fois que le ddl onchange est appelé, le paramètre de valeur sélectionnée updateRiskFrequencyOfPointOnMap contient "One" (même si "Three" est sélectionné).

Si c'est votre intention, c'est de faire quelque chose avec la valeur sélectionnée.

Questions connexes