Utilizzando l'approccio indicato nella domanda here, io sono in grado di ottenere i valori di elementi selezionati dal mio CheckBoxList
:Determinare se sono elementi selezionati in CheckBoxList utilizzando Request.Form
var selectedCheckBoxItems = from key in Request.Form.AllKeys
where key.Contains(cbl.ID)
select Request.Form.Get(key);
Posso quindi scorrere i risultati :
foreach (var item in selectedCheckBoxItems)
{
}
il problema è che item
è solo il valore di iscrizione, che per una casella di controllo, è semplicemente la stringa "on".
Ho bisogno di essere in grado di determinare quale elemento è "on", mediante indice o qualche altro metodo.
Domanda: Come faccio a determinare quali elementi della CheckBoxList
sono selezionati, utilizzando Request.Form
?
Ecco la mia definizione CheckBoxList:
<asp:CheckBoxList runat="server" ID="cblAnimalType" SelectionMode="Multiple" DataTextField="OptionText" DataValueField="OptionId" AutoPostBack="True"/>
Gli articoli sono aggiunti all'elenco da codice dietro:
DataTable dt = GetData(SqlGetListOptions, paramList);
cbl.DataSource = dt;
cbl.DataBind();
L'altra cosa importante da sapere è che ViewStateMode="Disabled"
, quindi devo usare Request.Form
per ottieni gli oggetti selezionati.
In risposta a un commento, ecco come il codice HTML per la CheckBoxList rende:
@Leopard rilevato che vede i valori resi nel codice HTML che non è si verificano nella mia situazione. La risposta di AdamE allo this question spiega perché. Ho la seguente riga nel file web.config:
<pages validateRequest="false" controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID">
il che spiega perché vedo "on" al posto del valore effettivo degli elementi selezionati. Non riesco a strappare la compatibilità da web.config senza verificare che non rompere qualcos'altro, ma sembra che se tale impostazione è sicura da rimuovere, i valori della casella di controllo saranno accessibili da codebehind.
Stai dicendo che quando si imposta 'ViewStateMode =" Abilitato "' quindi il corretto stato degli elementi di 'CheckListBox' funziona correttamente? – RBT
Sto dicendo che View State è disabilitato, quindi devo usare Request.Form. Se View State fosse abilitato, otterrei solo gli elementi selezionati dallo stato di visualizzazione del controllo, come [this] (http://stackoverflow.com/questions/18924147/how-to-get-values-of-selected-items- in-checkboxlist-with-foreach-in-asp-net-c) –
"On" è il 'DataValueField' per tutti gli elementi in' CheckBoxList'? –