Práce s ArrayList   otázka

ASP.NET WebForms

Zdravím,chci se zeptat,vytvořil jsem si nové pole

ArrayList arr = new ArrayList();

Po kliknutí na CheckBox se vyvolá událost v nichž kontroluji,pokud je true,ulož do arrayListu ID daného CheckBoxu.Pokud opět kliknu na jiný CheckBox,opět mi do arrayListu přidá další id.

protected void chck_CheckedChanged(object sender, EventArgs e)
        {
            CheckBox cb = (CheckBox)sender;
            string chid = ((CheckBox)sender).ID;
            
            
            if (cb.Checked)
            {

                arr.Add(chid);           
      
            }}

Můj problém je přidávání prvků do ArrayListu.Vždy tam mám uložený pouze jeden prvek a to vždy ten poslední.Díky za odpověď

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Pole se inicializuje při "každém" požadavku a tak nemůže být plněno postupně.V ASP.net nelze použít globální proměnné,které by byly přístupné i mezi jednotlivými požadaky (logicky dáno technologií webu).Nevím proč něco řešíte zrovna takto - nepřijde mi to nejšťastnější řešení,ale pokud už je nutné,tak si ukládejte hodnoty např.do cookies nebo tak.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Jaké by tedy podle Vás bylo lepší řešení?Děkuji za odpověď.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Záleží čeho chcete docílit..k čemu potřebujete ukládat ID Checkboxů nebo jakou funkcionalitu dáváte dohromady?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Přes id přenáším určitý parametr,podle kterého poznám,který checkBox byl označen a uložím do listu a z listu do databáze.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Tak to uložte rovnou do databáze. Anebo nemůžete který checkbox je zaškrtnut zjistit až ve chvíli, kdy to ukládáte do databáze? Odesílat stránku na server po každé změně každého checkboxu je opruz a prasárna ještě k tomu.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Rovnou do databáze to ukládat nechci, vzhledem k tomu, že bych se musel při každém checkboxu připojovat a to si myslím že není nejrychlejší a taky kdybych si rozmyslel zašktrnutí checkboxu a odškrtnul ho, tak by to zase muselo z databáze smazat. Ten Vámi nabízený druhý způsob není špatný, uvažoval jsem nad ním, ale mám vygenerovanou tabulku a v ní ty checkboxy, mám tam ale taky tlačítko další pomocí kterého vygeneruji na místě první tabulky tabulku novou, takže ta první tam nebude a samozřejmě ani ty checkboxy, takže při kliknutí na ulož nemůžu zkontrolovat checkboxy té první tabulky, ale pouze té nově vygenrované. Pokud bych to měl v arraylistu, tak bych tam měl všechny hodnoty. Proto se chci zeptat zda to nějak takto jde, nebo jiný způsob při zachování požadované funkčnosti. Děkuji za odpovědi.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Tak v tom případě si to asi uložte do nějakého HiddenFieldu nebo do ViewState, aby se to zachovalo mezi jednotlivými postbacky.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Zdravím, jakým způsobem by se v tomto případě zjišťovalo který checkbox je zaškrtnutý a který není v momentě kdy to chci ukládat do databáze?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

V code-behind byste si vytáhl požadovaná data buďto s hiddenfieldu nebo z ViewState.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Ano, to vím, já měl na mysli, jakým způsobem by se zjišťovalo, který checkbox mám zaškrtnutá a který ne, kdybych to nepřenášel přes viewstate nebo hiddenfieldu, ale kdybych ty zaškrtnuté checkboxy kotroloval před uložením, jak to doporučoval pan Herceg v předchozí odpovědi.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Ideální je použít komponentu CheckBoxList, projít kolekci Items a podívat se, co je aktuálně zaškrtnuté.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback