Výběr dat z MSSQL do dynamicky vygenerovaných objektů   otázka

ASP.NET WebForms, Databáze

Dobrý den,

už dlouho si lámu hlavu s tím, jak s následujícím problémem:

Dynamicky si generuji do stránky řádky (podle počtů řádků v tabulce v databázi) a v nich dynamicky generuji objekty (podle toho, co si uživatel nadefinuje, že chce vidět za sloupce z tabulky). Dále také řádky s mezisoučty ale to už teď nehraje roli.

Tyto vygenerované řádky chci odstránkovat po 100 záznamech na jednu stránku.

Teď si ale lámu hlavu s tím, jak to udělat...

Mohl bych to zobrazil vše. Jenže tabulka v databázi může mít i statisíce řádků, a pokud by uživatel nepoužil žádný filtr, tak okamžitě přetíží server.

Pokud již v sql dotazu použiju podmínku že chci vybírat ROW_NUMBER mezi 1 a 100 a po kliknutí na tlačítko další vybírat ROW_NUMBER mezi 101 a 200, tak se může stát že uživateli, který právě doprohlédl první stránku, klikne na tlačítko další aby viděl druhou, a jiný uživatel mezi tím provedl v tabulce nějaké změny, tak uvidí některé řádky které už byly na první stránce, nebo naopak některé vůbec neuvidí, protože ROW_NUMBERs se mezi tím změnily.

Lze toto nějakým způsobem ošetřit, nebo nevíte někdo, zda by existovala ještě jiná metoda, kterou bych zajistil, že uživatel uvidí všechny záznamy z tabulky - rozstránkované po 100 řádcích, a to pouze jednou?

Doufám že jsem můj problém popsal alespoň trošku srozumitelně :-) ... Petr

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

A proč nepřepíšete SQL proceduru tak,že by v parametru přijímala požadovaný rozsah a aktuální pozici.V případě,že by uživatel překlikával na další "stránku" tak by v parametru přišel třeba int s aktuální pozicí.následně byste v SQL zajistil vygenerování požadovaných řádků.Tedy něco jako "where row_num > actual_position" Žádná věda.

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