Uchování volby filtru   zodpovězená otázka

C#, ASP.NET WebForms

Zdravím vespolek,

vzhledem k tomu že jsem vždy dostal odpověď na moje všetečné otázky, rád bych Vás poprosil o další :-)

Mám stránku 1, ve které si filtrem vyberu například sebe.

Zobrazí se mi záznamy které jsou určeny mě.

Já si zvolím jeden ze záznamů, provedu v něm nějaké změny a nyní bych se chtěl opět vrátit na stránku 1, bohužel už tam nemám filtr.

Takže jej opět nastavím a proces se opakuje.

Pokoušel jsem se nastavenou hodnotu uložit v Session, bohužel se mi to nedaří.

Zkusil jsem udělat si tlačítko, kterým si uložím vyhledávané parametry (je jich více) do Session a paksi je následně při otevření stránky (v proceduře OnInit) obnovit.

Bohužel mi vždy po stisku tlačítka proběhne script OnInit a já o hodnotu příjdu..

Script OnInit

        protected override void OnInit(EventArgs e)
        {
            txtFindMe.Text = Session["ssnUserID"].ToString();
            rblClosedORNot.SelectedValue=Session["ssnFindOpenClosed"].ToString();
        }

Script tlačítka:


        protected void Button1_Click(object sender, EventArgs e)
        {
            Session.Add("ssnUserID", txtFindMe.Text);
            Session.Add("ssnFindOpenClosed", rblClosedORNot.SelectedValue);
        }

Kdepak já truhlík dělám kopanec ?

Díky za Vaše reakce

Karel Láska

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

Session NE!! :-))

Využijte buďto cookies nebo viewstate.Potažmo by šlo použít i localstorage,nicméně ta není všemi povolena-podporována.

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

Díky,

cookies mě také napadly, ale viewstate jsem se dočetl, že platí pouze pro dané otevření stránky a v případě přechodu na jinou stránku o viewstate přicházím.. Nebo to tak není?

A propo? proč ne session?

Karel

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

Chápete to správně, ViewState se na toto nehodí.

Session nepoužívejte, protože se nechová deterministicky a není spolehlivá. Když si uživatel otevře stejnou stránku ve dvou záložkách prohlížeče (spousta uživatelů to dělá, chce vidět stejný seznam filtrovaný nebo řazený podle různých kritérií), ale session je sdílená, takže v jedné záložce si nastaví filtry a ve druhé se mu to nastavení přepíše.

Zkuste si třeba na libovolném letenkovém portálu najít ve dvou záložkách dva navazující spoje, abyste mohl srovnávat časy příletů a odletů - protože všechno cpou do session, bude to zlobit.

Pokud se uživatelé do vaší aplikace přihlašují, pak bych to uložil do databáze - filtry jim zůstanou i když na to vlezou z jiného počítače. Pokud se nepřihlašují, pak do cookies. To má ovšem limit 4kB, což není mnoho.

Session jen v případě, že není vyhnutí - možná bych ji použil na nákupní košík v e-shopu, tam je naopak žádoucí, aby session sdílená byla.

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

Díky za odpověď,

cesta přes databázi bude asi nejjednodušší, používám přihlášení ve win.(Je to intranetová aplikace).

Každopádně přemýšlel jsem i nad cookies, ale narazil jsem tam na zvláštní věc - nejdou mi přidat..

Postupoval jsem podle http://www.fantomasmag.net/clanky/pouzit... a nedaří se mi definovat používání cookies,

co dělám špatně?

using System.Web.HttpContext;

Možná jsem to blbě pochopil...

Díky Karel

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

http://www.codeproject.com/Articles/3191...

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

Zdravím,

díky moc za odpovědi, problémy jsou vyřešeny :-)

Vzhůru k dalším :-D

Díky Karel Láska

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