asp.Net Casella di controllo NON ha alcun valore?

RISOLTO: Come è possibile ottenere il VALORE di una casella di controllo in un datalist? Caselle di controllo non hanno alcun VALORE.

<asp:DataList
     ID='dlTest'
     runat='server'
     RepeatColumns='2'>

     <ItemTemplate>
         <asp:HiddenField ID='cbTestID' runat='server' value='<%# Eval("id") %>' />
         <asp:CheckBox ID='cbTest' runat='server' /> <%# Eval("name") %><br />
     </ItemTemplate>

//CODE BEHIND

foreach (DataListItem cb in dlTest.Items) {
    CheckBox chk = (CheckBox)cb.FindControl("cbTest");
    HiddenField hf = (HiddenField)cb.FindControl("cbTestID");
    if(chk.Checked)
    {
        Response.Write(hf.Value);
    }
  • c’è una domanda specifica, o sei solo lamentarsi?
  • Si precisa che nella FAQ per evitare di essere scortese. Si consiglia anche di fare domande che sono costruttive. Siamo in grado di capire la tua frustrazione, ma lamentarsi non sta andando a raccogliere eventuali risposte utili.
  • Non sono sicuro di capire. Sto cercando una risposta a passare i valori da caselle di controllo, invece di semplicemente il testo. Questo dovrebbe essere abbastanza costruttivo. Ho usato questa tecnica con le caselle di controllo per 13 anni, e i programmatori sono stati così. Si prega di ri-leggere il post, e se non puoi rispondere, non c’è problema. Forse qualcun altro può.
  • Quindi provare a rimuovere l’emozione dalla domanda e chiedere di nuovo.



2 Replies
  1. 2

    Non hanno un VALORE per la casella di controllo, perché è solo un singolo elemento, il che significa che può essere Vero o Falso e lo si può verificare come questo,

          if(myCheckBox.Selected)
          { do this.. or even fire an event when it changed. 
             or assign some number to some datatype.. }

    Invece CheckBoxList non hanno valore come qualsiasi altro elenco che si può ottenere come

          CheckBoxList1.SelectedValue

    o È possibile fare le seguenti due cose due con checkboxlist

                       CheckBoxList1.SelectedIndex
                       CheckBoxList1.SelectedItem
    • Il CheckBoxList funzioni bene, tuttavia, non è possibile personalizzarlo. Ho bisogno di personalizzare il testo accanto alla casella di controllo, non come etichetta, ma come immagini, testo, link, etc. Ad esempio, se avete intenzione di associare le attività di un dipendente, la vostra casella di controllo sarebbe avere il testo (Il compito di testo) e un valore. Solo perché è controllato, non significa che non so COSA è stato controllato. Non posso contare su di testo accanto al campo. Capisco cosa stai dicendo, ma non funziona. E non credo che posso usare il CheckBoxList con un DataItem o un ripetitore, posso?
    • Utilizzando un Repeater potrebbe essere un’opzione. È quindi possibile costruire il proprio modello e costruire la vostra casella di controllo elenco vincolante dominio personalizzato oggetti, invece di hacking tuoi contenuti mediante l’utilizzo di un fisso CheckBoxList. A volte è più facile per il fai da te, piuttosto che cercare di personalizzare i controlli esistenti.
  2. 0

    Provare a utilizzare la Casella di Testo attributi/proprietà invece di Valore.

    <asp:CheckBox ID="cbTest" runat="server" Text="Text from Checkbox"/>
    
    protected void Button1_Click(object sender, EventArgs e)
    {
        Label1.Text = cbTest.Text;
    }

    Di vederlo in azione: demo

    Fare riferimento a questo articolo per CheckBoxList (utilizzando l’attributo di Testo/proprietà) di attuazione.

    O se davvero si desidera utilizzare il Valore di proprietà della Casella di controllo, controllare questo articolo.

    HTH.

    • Ho provato, ma “TESTO” viene visualizzato come un’etichetta accanto alla casella di controllo. Non voglio che si visualizzi come un’etichetta.
    • Ah, ok. Vedere la mia cura rispondere. Grazie.
    • Ho dovuto lavorare con il CheckBoxList, e di restituire il valore (il Mio campo ID) come ho fatto passare attraverso il ListItems, tuttavia, non riesco a personalizzare il CheckBoxList di quanto avrei voluto. Quindi ricorrere al DataList… Che ora non ha valori, appena selezionata/deselezionata/testo. Non è utile per quello che sto cercando di fare. Sembra caselle di controllo sono buone solo per il testo. Ma che cosa circa l’ID? Se ho potuto nascondere il testo, che sarebbe bene. Ma io non lo vedo come un’opzione.
    • Se ho capito bene, si preferisce utilizzare l’ID come “valore” dato che non voglio avere etichette accanto alla casella di controllo. Ho trovato questo articolo su come ottenere l’ID di una casella di controllo (anche se l’esempio si utilizza un Ripetitore invece di DataList): weblogs.asp.net/jgalloway/archive/2007/07/07/…. HTH.

Lascia un commento