Set HTML nome casella di input in listview

voti
0

Sto cercando di aggiungere una casella di controllo in una lista con il valore come ID dei record del database in modo che possano permettere all'utente di controllare quelli che vogliono eliminare e quando fanno clic sul pulsante Elimina posso ottenere insieme il valore della casella con richiesta .modulo.

Il mio problema è, perché casella di controllo in un ASP.NET listview rende il nome listview nella proprietà nome della casella di controllo, che mi impedisce di fare Request.Form [ checkboxname].

Non voglio usare listviews cancellare i comandi, ma semplicemente utilizzare Request.Form per ottenere l'insieme dei valori controllati.

Come posso impostare il nome della casella di controllo in modo da HtmlInput .NET non cambia nel tempo di rendering?

Ho provato:

        ListViewDataItem dataItem = (ListViewDataItem)e.Item;
        HtmlInputCheckBox _CheckBoxDelete = (HtmlInputCheckBox)e.Item.FindControl(CheckBoxDelete);

            _CheckBoxDelete.Visible = true;
            _CheckBoxDelete.Value = DataBinder.Eval(dataItem.DataItem, id).ToString();
            _CheckBoxDelete.Name = deletechecked;

Ma ancora rende simile:

<input name=PmList$ctrl0$CheckBoxDelete type=checkbox id=PmList_ctrl0_CheckBoxDelete value=3 />
È pubblicato 09/08/2009 alle 15:09
fonte dall'utente
In altre lingue...                            


3 risposte

voti
0

Ho ordinato fuori con:

    string idCollectionTodelete = string.Empty;

    foreach (string x in Request.Form)
    {
        if (x.IndexOf("CheckBoxDelete") > -1)
        {
             idCollectionTodelete += Request.Form[x] + ",";
        }

    }
    new DB().DeleteUserPm(
      ActiveUsername(), subdomain, idCollectionTodelete.TrimEnd(','));

Non è una soluzione ideale, ma funziona per me.

Risposto il 09/08/2009 a 16:14
fonte dall'utente

voti
1

Questo sta accadendo perché ListView è un contenitore di denominazione. È possibile ottenere intorno a questo in un paio di modi, ma tutte si riducono alla scelta di:

  • Il rendering del codice HTML che si desidera.
  • Tirando fuori le voci selezionate in un modo diverso.

Il primo è fattibile, ma è probabile che perdere un sacco di ASP.NET di costruito in funzionalità. Vorrei consigliare contro di essa a meno che siate profondamente familiarità con il ciclo di vita di controllo.

Hai tutto il necessario per la trazione dei valori in un modo ASP si aspetta:

HtmlInputCheckBox _CheckBoxDelete = (HtmlInputCheckBox)item.FindControl("CheckBoxDelete");

Hai solo bisogno di aspettare che la gerarchia di controllo per essere popolata, e quindi un ciclo sulle ListView.Items cercano le caselle di controllo. Il tuo gestore di eventi del pulsante "Elimina" è probabilmente un buon posto per chiamare questo da.

Per inciso, perché stai usando un HtmlInputCheckbox, piuttosto che un CheckBox?

Risposto il 09/08/2009 a 18:15
fonte dall'utente

voti
0

lo faccio

    List<HtmlInputCheckBox> chkDeleteContacts = new List<HtmlInputCheckBox>();

    foreach (RepeaterItem item in rptrFamilyContacts.Items)
    {
        chkDeleteContacts.Add((HtmlInputCheckBox)item.FindControl("chkDeleteContact"));
    }

    foreach(HtmlInputCheckBox chkDeleteContact in chkDeleteContacts)
    {
        //Delete Contact
        if(chkDeleteContact.Checked)
            blnStatus = BusinessUtility.DeleteConsumerContact(LoginConsumerID, chkDeleteContact.Value);
    }

Un po 'più facile a mio parere

Risposto il 04/02/2010 a 20:35
fonte dall'utente

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more