Setați modul HTML numele de intrare în caseta de selectare ListView

voturi
0

Am încercat să adăugați o casetă de selectare într-un ListView cu valoare id-uri ale înregistrărilor din baza de date, astfel că pot permite utilizatorului să verifice pe cei care doresc să-l ștergeți și atunci când fac clic pe butonul de ștergere pot obține de colectare valoare de checkbox cu cererea .formă.

Problema mea este, pentru că într-o casetă de selectare ASP.NET ListView redă numele listview în proprietatea numele caseta de selectare, mă împiedică să fac Request.Form [ „checkboxname“].

Nu vreau să utilizați Listviews șterge comenzi ci pur și simplu utilizați Request.Form pentru a obține colectarea valorilor verificate.

Cum pot seta numele de pe caseta htmlinput astfel încât .NET nu se schimba in timpul de redare?

Am încercat:

        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;

Dar, totuși, face ca:

<input name=PmList$ctrl0$CheckBoxDelete type=checkbox id=PmList_ctrl0_CheckBoxDelete value=3 />
Întrebat 09/08/2009 la 15:09
sursa de către utilizator
În alte limbi...                            


3 răspunsuri

voturi
0

Eu l-am sortat cu:

    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(','));

Nu este o soluție ideală, dar aceasta nu funcționează pentru mine.

Publicat 09/08/2009 la 16:14
sursa de către utilizator

voturi
1

Acest lucru se întâmplă deoarece ListView este un container Naming. Puteți obține în jurul valorii de acest lucru în câteva moduri, dar toate se reduc la alegerea:

  • Extragere HTML pe care doriți.
  • Scoaterea elementele verificate într-un mod diferit.

Primul este greu de realizat, dar vei pierde probabil o mulțime de a ASP.NET construit în funcționalitate. Aș sfătui împotriva lui decât dacă ești profund familiarizat cu ciclul de viață de control.

Ai tot ce ai nevoie pentru tragerea valorile într-un mod ASP așteaptă:

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

Trebuie doar să așteptați pentru ierarhia de control pentru a fi populate, iar apoi bucla peste ListView.Items în căutarea pentru casetele de selectare. handler-ul „Delete“ buton eveniment este, probabil, un loc bun pentru a apela acest lucru de la.

De altfel, de ce sunt utilizați un HtmlInputCheckbox, mai degrabă decât o CheckBox?

Publicat 09/08/2009 la 18:15
sursa de către utilizator

voturi
0

eu fac asta

    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);
    }

Puțin mai ușor în opinia mea

Publicat 04/02/2010 la 20:35
sursa de către utilizator

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