[ bokac @ 25.05.2004. 22:36 ] @
Pravim asp.net stranu sa DataGrid-om koji lista podatke po 20 iz baze. Problem je u tome sto moj DataGrid ne lista zaista podatke, a ne shvatam sta sam pogresio u kodu. Evo ga primer koda pa ako moze neko da mi pomogne. Hvala.
Code:

public class WebForm1 : System.Web.UI.Page
{
protected System.Web.UI.WebControls.Button butt;
protected System.Web.UI.WebControls.DataGrid DataGrid1;
protected int sIndex;
    
private void Page_Load(object sender, System.EventArgs e)
{
}
private void butt_Click(object sender, System.EventArgs e)
{
Binding();
}
public void Binding()
{
string veza="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\Inetpub\\wwwroot\\NekiFolder\\baza.mdb";
            
OleDbConnection conn=new OleDbConnection(veza);
string strCom;
if(IsPostBack)
{
sIndex =0;
strCom = "SELECT TOP 1 id FROM tabela1 ORDER BY id DESC" ;
OleDbCommand countCommand = new OleDbCommand(strCom, conn);
conn.Open();
OleDbDataReader countReader=countCommand.ExecuteReader();
if(!countReader.Read())
{
DataGrid1.VirtualItemCount=0;
}
else
{
DataGrid1.VirtualItemCount= countReader.GetInt32(0);
}
conn.Close();
}
strCom="SELECT TOP 20 id, a1, a2, a3, a4 FROM tabela1 WHERE id < "+(DataGrid1.VirtualItemCount-(sIndex-1) )+" ORDER BY id DESC";
OleDbCommand fCommand=new OleDbCommand(strCom, conn);
conn.Open();
OleDbDataReader fReader=fCommand.ExecuteReader();
DataGrid1.DataSource=fReader;
DataGrid1.DataBind();
conn.Close();
}

private void DataGrid1_PageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
{
DataGrid1.CurrentPageIndex=e.NewPageIndex;
sIndex=(DataGrid1.CurrentPageIndex*DataGrid1.PageSize);
Binding();
}


Podesavanja DataGrid-a: AllowPaging="True" AllowCustomPaging="True" PageSize="20"
[ ZokiR @ 26.05.2004. 01:48 ] @
Kako misliš „ne lista zaista“? Meni se čini da bi ovaj kod prikazao inicijalnu listu kada korisnik pritisne dati taster, ali Paging ne bi radio zato što reinicijalizuješ sIndex na nulu svaki put kada pozoveš Biniding().

Pored toga, onaj if (PostBack) u Binding() metodi ti je suvišan, zato što je to uvek tačno. A i "SELECT TOP 1 id FROM tabela1 ORDER BY id DESC" možeš da zameniš sa "SELECT MAX(id) FROM tabela1".
[ bokac @ 26.05.2004. 09:58 ] @
Hmmm, hvala ti ali izgleda da nece da mi radi ni na taj nacin koji kazes. Sada u najboljem slucaju dobijam samo prvih 20 bez Paging-a strana, a u najlosijem ne dobijam nista. Mislim da mi je kljucni problem oko postavljanja zadnje vrednosti ID prilikom svakog sledeceg zahteva strane. Jel zna neko bolji nacin za Page-ovanje DataGrid iz SqlDataReader-a. Znaci da od ukupno podataka DataGrid prikaze prvih 20 pa sledecim klikom na page-2 narednih 20 uz ponovni upit baze i sl. ?
[ Radudzoni @ 30.05.2004. 23:42 ] @
Pogledaj ovaj clanak, pomoci ce ti sigurno...
Tu imas Pageing & Sorting u DataGrid Web kontroli...
http://www.dotnetjohn.com/articles/articleid108.aspx

pozdrav
[ bokac @ 31.05.2004. 08:17 ] @
Thanks Radudzoni, svaka pomoc je uvek dobrodosla.

Pozdrav.