Set HTML innspill boksen navn i listevisningen

stemmer
0

Jeg prøver å legge til en avkrysningsboks i en listevisning med verdi som IDer av postene fra databasen slik at jeg kan tillate brukeren å kontrollere de som de vil slette, og når de klikker på slett knappen jeg kan få verdien samling av boksen med anmodning form mens.

Mitt problem er, fordi boksen i en listevisning ASP.NET gjengir listevisningen navn i navnet tilhører den boksen, det hindrer meg å gjøre Request.Form [ checkboxname].

Jeg ønsker ikke å bruke listviews slette kommandoer, men bare bruke Request.Form å få samling sjekket verdier.

Hvordan kan jeg sette navn på htmlinput boksen så .NET endrer ikke det på render tid?

Jeg har prøvd:

        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;

Men fortsatt er det gjengir som:

<input name=PmList$ctrl0$CheckBoxDelete type=checkbox id=PmList_ctrl0_CheckBoxDelete value=3 />
Publisert på 09/08/2009 klokken 14:09
kilden bruker
På andre språk...                            


3 svar

stemmer
0

Jeg har sortert det ut med:

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

Det er ikke en ideell løsning, men det fungerer for meg.

Svarte 09/08/2009 kl. 15:14
kilden bruker

stemmer
1

Dette skjer fordi Listview er en navne Container. Du kan komme rundt dette i et par måter, men de alle koke ned til valg av:

  • Gjengi HTML du ønsker.
  • Trekke ut de merkede elementene på en annen måte.

Førstnevnte er gjennomførbart, men du vil sannsynligvis miste mye av ASP.NET innebygde funksjonaliteten. Jeg vil råde mot det med mindre du er dypt kjent med kontroll livssyklus.

Du har alt du trenger for å trekke verdiene på en måte ASP venter:

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

Du trenger bare å vente på at kontrollen hierarkiet å være befolket, og deretter sløyfe over ListView.Items jakt etter boksene. Din "Slett" -knappen arrangement handler er sannsynligvis et godt sted å ringe dette fra.

Forresten, hvorfor bruker du en HtmlInputCheckbox, snarere enn en avkrysnings?

Svarte 09/08/2009 kl. 17:15
kilden bruker

stemmer
0

jeg gjør dette

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

Litt lettere etter min mening

Svarte 04/02/2010 kl. 19:35
kilden bruker

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