2009-08-04 9 views
0

Ich bin mit ASP.NET mit C#JavaScript-Funktion auf einem ausgewählten Elemente nennen selectedIndexChange

ich ein Htmlselect-Element haben und ich bin attemping eine Javascript-Funktion aufrufen, wenn der Index des ausgewählten geändert wird.

riskFrequencyDropDown ist in der C# -Code hinter versucht, dynamisch erstellt:

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

aber es stellt nicht die JavaScript-Funktion auf meiner Seite. Wenn ich die Parameter entferne, funktioniert es gut, aber ich muss diese Parameter übergeben, um die richtige Funktionalität zu gewährleisten.

würde geschätzt Einsicht für dieses Problem viel

Antwort

4

Ihre Parameter numerischen oder alphanumerischen sind? Wenn sie Buchstaben enthalten, müssen Sie sie im Javascript angeben. Beachten Sie die folgenden einfachen Anführungszeichen.

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

tvanfossons Antwort beantwortet Ihre Frage. Eine weitere Option zu prüfen (das könnte verhindern, dass Sie von diesem Leiden wieder):

Autor einfacher Javascript in Ihrem C#:

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

Und dann, in der JavaScript-Funktion selbst (das auf den Onchange aufgerufen wird) , erhalten Sie die Werte aus der Dropdown-Objekt benötigen:

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

Ein weniger offensichtlicher Vorteil dieser Konstruktion: wenn Sie jemals ändern, wie Sie das Drop-down-Objekt (Substring (6) vs Substring (8) verwenden, vielleicht), du d Sie müssen Ihre C# nicht ändern - Sie müssen nur Ihr Javascript ändern (und nur an einer Stelle).

0

werde ich string.Format zusammen mit Apostrophe

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

vorschlagen würde ich mit Lance Antwort vorschlagen. Dies liegt daran, dass das Senden des ausgewählten Werts zum Zeitpunkt des Aufrufs von attribute.add bedeutet, dass der Onchange den ausgewählten Wert verwendet.

Sagen wir, ddl enthält ("Eins", "Zwei", "Drei") und "Eins" ist standardmäßig ausgewählt. Jedes Mal, wenn die ddl onchange aufgerufen wird, enthält der Parameter "updateRiskFrequencyOfPointOnMap selected value" "One" (auch wenn "Three" ausgewählt ist).

Das ist, wenn das Ihre beabsichtigte Aktion ist, etwas mit dem ausgewählten Wert zu tun.

Verwandte Themen