Set HTML input négyzetet név közé listview

szavazat
0

Próbálom felvenni a négyzetet listanézetben az érték azonosítók a adatbázisrekordot így lehetővé teszi a felhasználó számára, hogy ellenőrizze az is, hogy a törlendő és mikor kattints a törlés gombra tudok értéke gyűjteménye négyzetet kérelemmel .forma.

A problémám az, mert négyzetet listanézetben ASP.NET teszi a listview nevét a name tulajdonság a négyzetet, hogy megakadályozza, hogy tegyek Request.Form [ „checkboxname”].

Nem akarom használni listanézetek törölni parancs, de egyszerűen kezelhető Request.Form, hogy a gyűjtemény ellenőrzött értékeket.

Hogyan lehet beállítani nevét htmlinput négyzetét, a .NET nem változik meg a render idő?

Megpróbáltam:

        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;

De még mindig azt teszi, mint például:

<input name=PmList$ctrl0$CheckBoxDelete type=checkbox id=PmList_ctrl0_CheckBoxDelete value=3 />
A kérdést 09/08/2009 15:09
a forrás felhasználó
Más nyelveken...                            


3 válasz

szavazat
0

Még válogatni ki a következőkkel:

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

Ez nem ideális megoldás, de ez nem működik nekem.

Válaszolt 09/08/2009 16:14
a forrás felhasználó

szavazat
1

Ez azért történik, mert ListView egy elnevezési Container. Akkor lehet megkerülni ezt a pár módon, de mindannyian szűkülnek le a választott:

  • Teszi a HTML akar.
  • Húzza ki a bejelölt elemeket eltérő módon.

Az előbbi megvalósítható, de akkor valószínűleg laza sok ASP.NET beépített funkcionalitás. Azt tanácsolom ellene, ha az ember mélyen ismeri a kontroll életciklusát.

Megvan, amire szükség van a húzás az értékeket ki oly módon ASP vár:

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

Csak azt kell várni az ellenőrzési hierarchia feltöltődnek, majd hurkot a ListView.Items keresi a dobozt. A „Törlés” gomb eseménykezelő valószínűleg egy jó hely, hogy hívják ezt a következőtől.

Mellesleg, miért használ HtmlInputCheckbox helyett CheckBox?

Válaszolt 09/08/2009 18:15
a forrás felhasználó

szavazat
0

Ezt csinálom

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

Kicsit könnyebb véleményem

Válaszolt 04/02/2010 20:35
a forrás felhasználó

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