Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Problem sa page-ingom

[es] :: .NET :: ASP.NET :: Problem sa page-ingom

[ Pregleda: 412 | Odgovora: 8 ]

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

toxi_programer
Nemanja Todić
Beograd

Član broj: 104396
Poruke: 354
*.adsl-a-1.sezampro.yu.

Sajt: www.todicsoft.com


Profil

icon Problem sa page-ingom29.04.2008. u 17:27

Zar sledeći kod ne bi trebalo da vrati samo prva tri reda iz tabele? Kako bilo, ja dobijam kao rezultat sve redove iz tabele.
dataSrc je AccessDataSource tipa.

Code:

DataSourceSelectArguments arg = new DataSourceSelectArguments(0,3);
arg.AddSupportedCapabilities(DataSourceCapabilities.Page);

DataTable tbl = ((DataView)dataSrc.Select(arg)).ToTable();

foreach ( DataRow row in tbl.Rows)
{
    Response.Write(((int)row["KorisnikId"]).ToString() + "<br/>");
}


Dakle, ja hoću da dobijem samo prva tri reda ili npr od trećeg do šestog reda iz tabele. Napisao sam ovaj kod, ali on ne radi to što meni treba( jer vraća sve redove u tabeli), pa mi je potrebna vaša pomoć.
To što ne mogu ovde da pišem ćirilicom ima svoje ime - diskriminacija.

Moj sajt: http://www.todicsoft.com/
29.04.2008. u 17:27 

Prokleta_Nedelja

Član broj: 90608
Poruke: 277
91.191.24.*

Sajt: www.adresar.ba


Profil

icon Re: Problem sa page-ingom29.04.2008. u 18:25
Prva tri reda mozes odabrati sa SELECT TOP 3...
medjutim ako ti treba od 3 do 6 onda nisam siguran. Mislim da access nema LIMIT komandu kao MySQL gdje bi odabir tri reda pocevsi od treceg do sestog izgledao: SELECT * FROM moja_tabela LIMIT 3,3
Poslovni imenik i adresar Bosne i Hercegovine http://www.adresar.ba http://wap.adresar.ba
29.04.2008. u 18:25 

toxi_programer
Nemanja Todić
Beograd

Član broj: 104396
Poruke: 354
*.adsl-a-1.sezampro.yu.

Sajt: www.todicsoft.com


Profil

icon Re: Problem sa page-ingom29.04.2008. u 18:50
Da, kapiram ja to... Ali postoje ugrađene kontrole koje i sa access bazom omoguće pageing... Hm... Našao sam na google, lik je imao isti ovaj problem, ali ostao je bez adektvatnog odgovora.
To što ne mogu ovde da pišem ćirilicom ima svoje ime - diskriminacija.

Moj sajt: http://www.todicsoft.com/
29.04.2008. u 18:50 

deerbeer
nikola džuverović
xemicomputers

Član broj: 174418
Poruke: 269
*.adsl-3.sezampro.yu.

Sajt: www.dynamicinfoscreen.com


Profil

icon Re: Problem sa page-ingom29.04.2008. u 20:35
Da u pravu si ...DataSourceSelectArguments je slabo dokumentovan..
Al nekad me .NET toliko razmazi da vise potrosim vremena na net-u trazeci ono sto mi treba umesto da to napravim sam ...
Napravi svoju funkciju koja bi vracala DataTable za zadane parametre (int nStartIndex,int nCount) .
Ne bi trebalo da bude tesko....
Code:

DataTable SelectPage (DataTable src ,int nStartIndex,int nCount) 
{
DataTable dt = new DataTable () ; 
if (nStartIndex != -1 &&  (nStartIndex + nCount < src.Rows.Count))
{
 for (int i = nStartIndex ; i <  nStartIndex + nCount ; i++)
  {
    .....
    ....
  }

  return dt  ; 

}

}

jelenko pilenkovac strikes again ...
29.04.2008. u 20:35 

toxi_programer
Nemanja Todić
Beograd

Član broj: 104396
Poruke: 354
*.adsl-a-1.sezampro.yu.

Sajt: www.todicsoft.com


Profil

icon Re: Problem sa page-ingom29.04.2008. u 21:06
Da, radi to sve OK ali problem je ako u tabeli imam 5000 redova. Ja ću, i sa tvojim kodom, morati da iz baze select komandom selektujem svih pet hiljada pa tek onda da odbacim ono što mi ne treba. To mu dođe nekako neoptimizovano, pogotovo pošto se radi o veb aplikaciji, znači može za gooomilu korisnika u isto vreme da se obrađuje ovaj zahtev...

Al jbg... A izgleda da to ne može drugačije, mislim nekako preko SQL sintakse da se filtrira?


DOPUNA:
Bah, evo šta nađoh na jednom drugom sajtu:
Citat:
If the table you are paging through has one million records in it, all one million records are queried, transported to the application, and then a select few (the current page) are displayed. I'm guessing you can see where you may run into a slight performance issue with this.

Ceo artikal na adresi: http://www.dotnetjunkies.ddj.c...1E-448A-BC23-B64B871F967F.dcik

[Ovu poruku je menjao toxi_programer dana 29.04.2008. u 22:29 GMT+1]
To što ne mogu ovde da pišem ćirilicom ima svoje ime - diskriminacija.

Moj sajt: http://www.todicsoft.com/
29.04.2008. u 21:06 

deerbeer
nikola džuverović
xemicomputers

Član broj: 174418
Poruke: 269
*.adsl-1.sezampro.yu.

Sajt: www.dynamicinfoscreen.com


Profil

icon Re: Problem sa page-ingom29.04.2008. u 21:38
Pogledaj http://msdn2.microsoft.com/en-us/library/way3dy9w.aspx

Citat:
@toxi_programer
Da, radi to sve OK ali problem je ako u tabeli imam 5000 redova. Ja ću, i sa tvojim kodom, morati da iz baze select komandom selektujem svih pet hiljada pa tek onda da odbacim ono što mi ne treba.

U svakom slucaju ovo treba da bude posao SQL servera ili access-a tj. da ti ne vrati celu bazu u DataSet :)
SQL upitom vrati neku osnovnu filtriranu tabelu (do recimo 100 rekorda) pa onda radis "select" nad tim podacima
(Ako dobijas tabelu od 5000 redova znaci da je trebas skratiti sql upitom ... )

jelenko pilenkovac strikes again ...
29.04.2008. u 21:38 

maksvel
Čačak

Član broj: 107376
Poruke: 266
91.148.92.*

Sajt: itlab.tfc.kg.ac.yu


Profil

icon Re: Problem sa page-ingom04.05.2008. u 17:20
U principu, Access i nije za previše konkurentnih korisnika... A SQL Server 2005 ima funkciju za to, nađoh ovo:
Custom Paging in ASP.NET 2.0 with SQL Server 2005
Unix is user-friendly—it's just choosy about who its friends are.
_______________________
http://www.tfc.kg.ac.yu
04.05.2008. u 17:20 

toxi_programer
Nemanja Todić
Beograd

Član broj: 104396
Poruke: 354
*.adsl-3.sezampro.yu.

Sajt: www.todicsoft.com


Profil

icon Re: Problem sa page-ingom04.05.2008. u 20:46
@maxvel
Koliko vidim, to je samo primer sa čitanje red-po-red iz tabele, ali ne i kako povući iz baze samo "od-do".


Evo, da izložim kako sa rešio problem. Jednostavnije je od ostalih rešenja na koje sam nailazio.
Prvo, da objasnim šta je šta. litDisplay je literal. Tabela "korisnici" sadrži AutoIncrement polje "KorisnikId"( koje je i primarni ključ). ID poslednje prikazanog reda se čuva u ViewState-u, a ja selektujem "TOP n" redova čiji je ID veći od onog koji je smešten u ViewState( dakle poslednje prikazan ID).

Da bih prešao na sledeći prikaz, dovoljno je da postavim npr button i pritiskom na njega će se učitati sledećih npr. 5 redova tabele.
Code:

protected void Page_Load(object sender, EventArgs e)
{
    int n = 4; //broj redova koji će biti prikazani
    if (!IsPostBack)
        ViewState.Add("KorisnikId", 0); //pamti id poslednjeg prikaza

    int kId = (int)ViewState["KorisnikId"]; //uzima vrednost poslednjeg prikaza
    //sql komanda koja selektuje n redova iz tabele počev od poslednje prikazanog
    string sqlSel = "select TOP " + n + " * from korisnici where KorisnikId > " + kId;
    //neka moja klasa koja izvraši SQL upit i vrati DataTable
    DataTable tbl = BazaPodataka.IzvrsiUpit(sqlSel); 
    litDisplay.Text = ""; // u litDisplay prikazuje rezultat
    for( int i = 0; i < n && i < tbl.Rows.Count; ++i)
    {
        litDisplay.Text += tbl.Rows[i]["ime"] + "<br/>"; //prikaži pročitan podatak
    }
    if (tbl.Rows.Count == 0) 
        litDisplay.Text += "<br/><b> kraj tabele</b>";
    else
        ViewState["KorisnikId"] = (int)tbl.Rows[tbl.Rows.Count-1]["KorisnikId"];//pamti id poslednjeg prikaza
}


Ja mislim da je ovo OK rešenje.
To što ne mogu ovde da pišem ćirilicom ima svoje ime - diskriminacija.

Moj sajt: http://www.todicsoft.com/
04.05.2008. u 20:46 

maksvel
Čačak

Član broj: 107376
Poruke: 266
91.148.92.*

Sajt: itlab.tfc.kg.ac.yu


Profil

icon Re: Problem sa page-ingom04.05.2008. u 22:00
Ako radi, onda radi Nego, izgleda da sam gore dao pogrešan link, pravi je http://aspnet.4guysfromrolla.com/articles/031506-1.aspx
Unix is user-friendly—it's just choosy about who its friends are.
_______________________
http://www.tfc.kg.ac.yu
04.05.2008. u 22:00 

[es] :: .NET :: ASP.NET :: Problem sa page-ingom

[ Pregleda: 412 | Odgovora: 8 ]

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.