2009-03-09 20 views
8

Ho una casella di controllo di input che è selezionata e disabilitata quando alcuni JS vengono eseguiti al caricamento della pagina.La casella di controllo Disabile selezionata viene visualizzata come deselezionata - ASP.NET

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

Quando ottengo il valore della casella di controllo utilizzando (sul lato server)

this.selectUnionDues.checked //returns false 

ottengo sempre un falso

EDIT: Sono preoccupato usando asp pesante. controlli di rete in quanto la dimensione della pagina in questa applicazione deve essere bassa. C'è una via d'uscita usando i controlli HTMl?

risposta

0

Ho anche un comportamento non solo intuitivo. Se provo il valore in Page_Init, restituisce sempre true. Provarlo in Page_Load restituisce il valore selezionato.

Provare a utilizzare un controllo lato server anziché un controllo HTML con runat = server.

<asp:CheckBox ID="selectUnionDues" runat="server" Checked="true" /> 

Inoltre, è stato di controllo "disabile", ma non vedo tutto ciò che è disattivato nel vostro codice. Ad ogni modo, meglio usare un server WebControl.

+0

Tra Page_Init e Page_Load esistono più metodi per il ciclo di vita della pagina (che è possibile sovrascrivere se si desidera): LoadViewState e LoadPostData. Entrambi possono modificare i valori nei controlli. –

0

Se non ti piace fare affidamento su JS, potresti avere un input nascosto il cui valore cambia quando la proprietà checkbox della casella di controllo cambia e quindi usa quel lato del valore del server.

+0

Btw, immagino che non sarebbe un problema affidarsi a JS perché JS sta causando la disattivazione della casella di controllo. – Charlino

3

controllo questo fuori http://www.4guysfromrolla.com/articles/012506-1.aspx

Insomma, (1) c'è una proprietà "SubmitDisabledControls" di "forma" o (2) modificare il javascript l'autore fornito

+0

Questo non sempre funziona; Stavo disabilitando le tabelle, piene di controlli con il metodo suggerito [qui] (http://forums.asp.net/p/1121242/3109517.aspx) e impediva il funzionamento corretto di "SubmitDisabledControls'. Ho dovuto disabilitare tutti i controlli nella tabella separatamente per farlo funzionare. Ma grazie per il suggerimento. –

1

Se si disattiva la checkbox, restituisce sempre false. l'idea migliore è di rendere la casella di controllo in sola lettura, in modo che restituisca il valore così com'è. fare il readonly="readonly".

0

Sebbene la domanda originale riguardasse il controllo HtmlInputCheckBox, penso che sarebbe utile menzionare che esiste un problema simile anche per il controllo Checkbox, per il quale l'immagine è più complicata, perché c'è una differenza tra Enabled = "False" e disabled = "disabile". Inserisco i risultati dell'indagine qui: ASP.Net Checkbox.Checked is set to default when use disabled attribute or difference between Enabled property and disabled attribute. In particolare spiega perché la proprietà Checked viene ripristinata quando viene utilizzato l'attributo disabilitato e perché non viene ripristinata quando viene utilizzata la proprietà server Enabled.

Problemi correlati