Ich habe einen Repeater und innerhalb des Repeaters eine Radiobutton-Steuerung, im Code dahinter fülle ich den Gruppennamen für die Radiobutton-Steuerung, also, wenn ich ihn starte, habe ich eine Tabelle mit vielen Zeilen und einige davon haben Radiobutton:
%Vor%Und in der Item-Datenbank des Repeaters fülle ich den Wert für Gruppenname:
%Vor%Aber wenn ich es starte, erzeugt der Repeater den Gruppennamen mit verschiedenen Namen:
%Vor%Also ließ es alle Radiobuttons überprüfen, anstatt es zu deaktivieren, wenn ein anderer für dieselbe Gruppe geprüft wird.
Ich finde diesen Code in einem Forum, aber es funktioniert nur, wenn ich nur einen Gruppennamen habe, aber ich kann mehr als einen Gruppennamen haben:
%Vor%Aber es kann mehr als eine Gruppe von Radiobuttons geben. In diesem Fall kann ich diesen Code nicht verwenden.
Gibt es irgendwo was zu tun? Danke
Dies ist ein bekannter Fehler im Zusammenhang mit RadioButton
control usage in ItemTemplate
oder AlternatingItemTemplate
( mehr Info ). Dies wird verursacht durch Repeater
mangelnde Benennung der Kontroll-ID & amp; Gruppennamen, die automatisch im Hintergrund zugewiesen werden (unter Verwendung von dynamic ClientIDMode
). Um dieses Problem zu beheben, richten Sie eine clientseitige Funktion wie folgt ein:
Legen Sie später das Skript fest, das auf das Optionsfeldsteuerelement wie folgt ausgerichtet ist:
%Vor% Hinweis: Das erste Argument der Methode setExclusiveRadioButton
sollte auf diese Regex-Konvention gesetzt werden: [repeater control ID].*[RadioButton_GroupName]
( RadioButton_GroupName
Wert kann mit Eval
abgerufen werden). Alternativ können Sie Basic HTML input type="radio"
oder stattdessen RadioButtonList
verwenden.
Referenz:
Verwenden von RadioButton-Steuerelementen in einem Repeater
Ähnliche Probleme:
Da ein anderer Benutzer die Ursache des Problems angegeben hat, würde ich dies nicht erklären, aber ich würde Ihnen die auf Jquery basierende Lösung anbieten:
%Vor% mit attr("name",jQuery("[name$='optValue']")
wird versuchen, alle Eingaben auf der Seite auszuwählen, die mit optValue
, d. h. optValue
-Elementen im Repeater enden. Danach wird das name
-Attribut auf den ersten Wert für alle optValue
-Elemente geändert. Die Funktion attr("name")
(hier im 'get'-Format) gibt immer die erste in der Liste zurück. So erhalten alle Optionsfelder das gleiche "Name" -Attribut in Html, was es ermöglicht, dass die Auswahl korrekt funktioniert.
Ein großartiges Workaround von diese Quelle
Stellen Sie auf der Client-Seite name
des Radios auf die von Ihnen gewünschte Gruppe ein, ABER notieren Sie den generierten Namen in einem data-
-Attribut.
Kopieren Sie dann kurz vor der Formularübergabe das Attribut data-
zurück in das Attribut name
, damit ASP.NET das Steuerelement auf dem Server erkennen kann.
Dieses Skript wird es tun:
%Vor% Um die Formularübermittlung zu erkennen, rufen Sie RegisterOnSubmitStatement
auf. Z.B. in deinem Page_Load
:
Tags und Links c# asp.net radio-button vb.net repeater