2009-04-26 28 views
1

Verwendung habe ich Javascript-Code, der dies tut:Kontrollkästchen mit ASP.NET und Javascript

var oObjchbox = document.getElementById("CheckBox_" + countyId);

Die countyId stammen aus einem Image-Map, die vorgefertigten ist.

Die Kontrollkästchen dagegen werden von ASP.NET erstellt. Mein erster Versuch war, einen asp.repeater mit asp: checkBox zu verwenden, aber das hat den Trick nicht gemacht, da ASP.NET darauf besteht, eigene IDs zu erstellen. Der andere Versuch war, HTML INPUT ohne runat = server zu verwenden, aber dann überstanden die Checkboxen keinen Roundtrip.

Hat jemand eine Lösung für dieses Problem? Ich fand ein ähnliches Problem hier http://www.velocityreviews.com/forums/t301617-hijack-databoundliteralcontrol.html aber niemand beantwortete seine Frage.

Antwort

2

Wenn das Problem die ID von der Checkbox innerhalb eines Repeaters erhält, hilft dieser Artikel möglicherweise, Select All Checkboxes in a GridView. Es zeigt, wie eine Client-Seite generiert wird, wählen Sie alle Features in einer ASP.Net Gridview aus.

Das Problem, mit dem Sie es zu tun haben, ist nicht ungewöhnlich. Sie möchten auf ein Steuerelement zugreifen, das sich in einem Steuerelement befindet, das Layout (GridView, Repeater, DataList und dergleichen) wiederholt, das JavaScript verwendet.

Das ist daran zu erinnern ist, dass Sie die generierte ClientId während der Databound Ereignisse zugreifen können (RowDataBound, ItemDataBound), die dann auf der Client-Seite verwendet werden kann.

Dann auf der Rückfahrt, da dies eine Standardsteuerung ist, sollten Sie in der Lage sein, es zu finden. Wenn Sie jedoch einen Repeater verwenden, erfordert das Aktualisieren von Daten möglicherweise etwas mehr Arbeit, da das Steuerelement selbst eher für schreibgeschützte Anzeigen ausgelegt ist.

Wenn das Problem darin besteht, jedes Steuerelement einem vordefinierten StateCode zuzuordnen, dann können Sie in den Ereignissen ItemDataBound oder RowDataBound (wenn Sie von Repeater auf etwas anderes wechseln) je nach Bedarf einen Aufruf an eine JavaScript-Methode mit 1 oder 2 Parametern übergeben . Entweder die currentCheckBoxId und der entsprechende StateCode getrennt oder bereits verkettet und verwenden dies als Lookup Type Feature.

Entschuldigung für die zwei Antworten, aber die Frage schien ein wenig vage, was Sie eigentlich wollten, vielleicht brauche ich nur noch eine Tasse Kaffee. Hoffe, dass eine dieser Ideen hilft.

1

können Sie jQuery verwenden, um dieses Problem zu lösen, ist es Funktionalität Elemente durch benutzerdefinierte Abfrage zu wählen, zum Beispiel

$ („[id * = CheckBox1“) - Liefert alle Elemente, bei denen Ende id CheckBox1 ist.

$ ("[id^= CheckBox1") - gibt alle Elemente zurück, bei denen der Anfang der ID CheckBox1 ist.

und Sie finden durch enthält Wort und viele andere Selektoren.

Weitere Informationen jquery.com, wird es Ihnen gefällt =)

+0

Sehr interessante und nützliche jquery Funktionen, aber es wird mir leider nicht in einem Repeater helfen, wo ich nur eine ID setzen kann, die für alle Repeater-Elemente üblich ist. ASP.NET fügt dann der ID eine eindeutige Zeichenfolge hinzu. Daher kann ich die countyID nicht mit der generierten asp.net ID vergleichen. Danke trotzdem! – Tommy

1

Wenn Ihr Ziel ist die Kontrollkästchen auf dem Server zu erkennen ist, warum nicht ein verstecktes Feld erstellen und Client-Seite aktualisieren, indem das Land ID verketten mit Mit jedem Klick erstellen Sie eine Liste mit Trennzeichen wie usa; ca; nl? Lesen Sie diesen Wert für das Postback, parsen Sie und Sie haben die Länder, die ausgewählt wurden.

In Ihrem PageLoad Problem das folgende: RegisterHiddenField ("txtCountryCodes", "");

Verwandte Themen