cache,nebo ajax   zodpovězená otázka

ASP.NET WebForms

Chtěl bych reagovat na tento příspěvek.

http://www.vbnet.cz/forum-tema--1524-zaj...

Totiž načítám z databáze velké množství dat,poprvé stránka jde,ale jakmile například na stránce kliknu na tlačítko,pravděpodobně se databáze začne načítat znovu a dojde k této chybě.Tím timeoutem jsem již chybu spravil.

Ale teď bych se chtěl tímto příspěvkem zeptat,je možné nějak data cacheovat,nebo nějakým způsobem načíst do proměnné,aby nedocházelo k opětovnému vykreslování gridview (refresh,bliknutí celé stránky)??? Nevím zda to souvisí s ajax a má cenu se ho začít učit.

Děkuji za info

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

V tom případě je problém v tom, že máte ve stránce šíleně moc dat a ViewState je větší než 4MB. Proto se neodešle. Mít ve stránce 4MB velký ViewState svědčí o špatném návrhu aplikace. Proč na stránce potřebujete tolik dat, měl byste je třeba stránkovat po 50, 100 záznamech nebo tak něco. Nepoužívejte ale stránkování pomocí GridView, ten si z DB vytáhne všechna data a pak je teprve vyfiltruje, stránkujte už v SQL dotazu proti databázi.

Probliknutí stránky je dáno samotným principem protokolu HTTP a jeho funkce. Při kliknutí na tlačítko se stránka odešle na server, ten provede požadované akce, a vrátí celou stránku novou. Prohlížeč nemůže vědět, že je skoro stejná, proto ji prostě vykreslí celou znovu. Pokud máte hodně dat, může být použití tecnhologie AJAX na místě, pokud použijete AJAX, pak se načtená stránka odešle na pozadí a zpátky přijde víceméně jen to, co se změnilo, stránka tedy neproblikne.

Pokud data z DB načítáte kódem při každém požadavku, pak můžete u GridView vypnout ViewState, aby stránka nebyla tak velká.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Kde najdu vypnutí viewstate,prosím vás?

Načítám do datatable a potom přes:

dst = new datatable
'upravy datatable,ktere by mozna sli udelat na serveru a ne primo na klientske strane,bohuzel nevím :(
Dim Data As New DataView(dst)
Gridview.DataSource = Data
Gridview.DataBind()

Co na to říkáte,nechcete poslat aplikaci mailem p.Herceg?

Díky za info.

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

Ještě mě napadlo,jak udělat stránkování?

Děkuji za cenné rady,vím že do cíle se dostaneme a pak to bude stát za to. :)

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

Pokud nevíte, co je to ViewState, nemá cenu začínat a o něco se v ASP.NET snažit, protože bet trochy teorie nemáte šanci pochopit, jak co funguje. Doporučuji vám, abyste si přečetl seriál o ASP.NET na tomto webu od začátku, tam je přesně popsáno, co to ViewState je. Data stačí do GridView nahrát jen při prvním načtení stránky, pak se právě uchovávají ve ViewState. Pokud vám ale ASP.NET hlásilo chybu, že ViewState je moc velký (jak jsem pochopil z prvního dotazu), pak do tabulky cpete šíleně moc dat, proto to chce to stránkování. Ale nejdřív si přečtěte seriál, jen vysvětlit co je to ViewState vydá na jeden velký článek.

Posílat mi aplikaci mailem je zbytečné, stejně nemám čas, abych se tím zaobíral detailněji. Poprat se s tím musíte sám, my vás tady na fóru můžeme jen nasměrovat.

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