2009-03-09 11 views
8

Ich habe ein Kontrollkästchen, das aktiviert und deaktiviert ist, wenn JS beim Laden der Seite ausgeführt wird.Deaktiviert Checkbox wird als nicht markiert angezeigt - ASP.NET

<input name="selectUnionDues" id="selectUnionDues" type="checkbox" checked="checked" runat="server" /> 

Wenn ich den Wert der Checkbox erhalten, indem Sie (auf der Serverseite)

this.selectUnionDues.checked //returns false 

Ich bekomme immer eine falsche

EDIT: Ich bin besorgt über schwere asp verwenden. Netzkontrollen, da die Seitengröße in dieser Anwendung niedrig sein muss. Gibt es einen Ausweg mit HTMl-Steuerelementen?

Antwort

0

Ich bekomme weniger als intuitives Verhalten. Wenn ich den Wert in PageInit teste, wird immer True zurückgegeben. Beim Testen in PageLoad wird der ausgewählte Wert zurückgegeben.

Verwenden Sie ein serverseitiges Steuerelement anstelle eines HTML-Steuerelements mit runat = server.

Sie auch "deaktiviert" Kontrolle, aber ich sehe nichts, das in Ihrem Markup deaktiviert ist. So oder so, besser ein Server WebControl zu verwenden.

+0

Zwischen Page_Init und Page_Load gibt es mehrere Seitenlebenszyklus-Methoden (die Sie bei Bedarf überschreiben können): LoadViewState und LoadPostData. Beide können die Werte in den Steuerelementen ändern. –

0

Wenn es Ihnen nichts ausmacht, sich auf JS zu verlassen, könnten Sie eine versteckte Eingabe haben, deren Wert sich ändert, wenn sich die check -Eigenschaft des Kontrollkästchens ändert und dann diese Wert-Server-Seite verwendet.

+0

Btw, ich denke, es wäre kein Problem, sich auf JS zu verlassen, weil JS dafür verantwortlich ist, dass das Kontrollkästchen deaktiviert wird. – Charlino

3

check this out http://www.4guysfromrolla.com/articles/012506-1.aspx

Kurz, (1) gibt es ein "SubmitDisabledControls" Eigentum von "Form" oder (2) zwicken der Javascript-der Autor

bereitgestellt
+0

Dies funktioniert nicht immer; Ich habe Tabellen mit Kontrollen nach der vorgeschlagenen Methode [hier] (http://forums.asp.net/p/1121242/3109517.aspx) deaktiviert und verhindert, dass 'SubmitDisabledControls' ordnungsgemäß funktioniert. Ich musste alle Steuerelemente in der Tabelle separat deaktivieren, um es zu verhalten. Aber danke für den Tipp. –

1

Wenn Sie das deaktivieren checkbox gibt es immer false zurück. Die beste Idee ist, das Kontrollkästchen nur lesbar zu machen, so dass es den Wert zurückgibt, wie es ist. machen Sie die readonly="readonly".

0

Obwohl die ursprüngliche Frage über HtmlInputCheckBox-Steuerelement war, denke ich, es wird nützlich sein zu erwähnen, dass ein ähnliches Problem auch für Checkbox-Steuerelement existiert, für die das Bild komplizierter ist, da es einen Unterschied zwischen Enabled = "False" und gibt deaktiviert = "deaktiviert". Ich poste Ergebnisse der Untersuchung hier: ASP.Net Checkbox.Checked is set to default when use disabled attribute or difference between Enabled property and disabled attribute. Insbesondere wird erläutert, warum die Checked-Eigenschaft zurückgesetzt wird, wenn das deaktivierte Attribut verwendet wird, und warum sie nicht zurückgesetzt wird, wenn die Servereigenschaft Enabled verwendet wird.

Verwandte Themen