Gruppenname funktioniert nicht in mehr als einem Radiobutton in Repeater asp.net

8

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

    
Esraa_92 14.09.2017, 11:41
quelle

3 Antworten

7

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:

%Vor%

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:

Radiobutton im Repeater

nur eine Radiobutton-Auswahl im Repeater

ASP.NET - Optionsfelder in Repeatern

    
Tetsuya Yamamoto 20.09.2017, 10:09
quelle
5

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

    
Webruster 20.09.2017 11:11
quelle
2

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 :

%Vor%     
Bozhidar Stoyneff 26.09.2017 09:42
quelle