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

Custom Paging DataGrid problem!

[es] :: .NET :: Custom Paging DataGrid problem!

[ Pregleda: 2426 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

bokac
Beograd

Član broj: 19866
Poruke: 110
*.sbb.co.yu



Profil

icon Custom Paging DataGrid problem!16.08.2004. u 10:51 - pre 241 meseci
Pravim ASP.NET C# aplikaciju, a zapelo je kod paging rezultata po strani.
Situacija je sledeca:

MS Access baza: |tabela1| id - AutoNumber, Polje1 - Text, Polje2 - Text, .....

Paging sam zamislio tako da stanje grid-a cuva u ViewState-u, a takodje imam i 2 eksterna dugmeta Previous i Next, kao i dva OleDBCommand-a (cmdNext, cmdPrevious). Evo ga deo koda:
Code:

.......
private int CurrentPage;

private void Page_Load(object sender, System.EventArgs e)
        {
            ....
            if(!Page.IsPostBack)
            {
                conn.Open();
                cmdNext=new OleDbCommand("SELECT TOP 10 id, Polje1, Polje2 FROM tabela1 ORDER BY id DESC", conn);
                fillGrid(cmdNext);
            }

        }

private void fillGrid(System.Data.OleDb.OleDbCommand currentOleDbCommand)
        {
            System.Data.OleDb.OleDbDataReader dr;
            ...
            conn.Open();
            dr=currentOleDbCommand.ExecuteReader();
            DataGrid1.DataSource=dr;
            DataGrid1.DataBind();
            dr.Close();
            conn.Close();
            ViewState["CurrentPage"]=CurrentPage;
            ViewState[CurrentPage.ToString()]=DataGrid1.Items[0].Cells[0].Text;

            if(DataGrid1.Items.Count<DataGrid1.PageSize)
            {
                btnNext.Enabled=false;
            }
        }
private void btnNext_Click(object sender, System.EventArgs e)
        {

            btnPrevious.Enabled=true;
            CurrentPage=(int)(ViewState["CurrentPage"]);
            CurrentPage++;
            string lastid=DataGrid1.Items[9].Cells[0].Text;
            conn.Open();
            string upit="SELECT TOP 10 id, Polje1, Polje2 FROM tabela1 WHERE id<"+lastid+" ORDER BY id DESC";
            cmdNext=new OleDbCommand(upit, conn);
            fillGrid(cmdNext);
        }

private void btnPrevious_Click(object sender, System.EventArgs e)
        {
            btnNext.Enabled=true;
            CurrentPage=(int)(ViewState["CurrentPage"]);
            CurrentPage--;
            if(CurrentPage>=0)
            {
                string firstid;
                firstid=(string)(ViewState[CurrentPage.ToString()]);
                conn.Open();
                cmdPrevious=new OleDbCommand("SELECT TOP 10 id, Polje1, Polje2 FROM tabela1 WHERE id>="+firstid+" ORDER BY id DESC", conn);
                fillGrid(cmdPrevious);
            }
        }

Kada ovo pokusam da izvrsim klikom na dugme Next Explorer mi izbaci sledecu gresku:

Syntax error (missing operator) in query expression 'id<'

Kada postavim breakpoint kod stringa upit, prelaskom misa preko id<"+lastid+" pokazuje mi id="" sto kapiram znaci da nikakva vrednost nije dodeljena promenljivoj lastid. Nije mi jasno kako???
 
Odgovor na temu

esnaf

Član broj: 9417
Poruke: 43
*.fiberop.matgnet.com



Profil

icon Re: Custom Paging DataGrid problem!16.08.2004. u 13:21 - pre 241 meseci
Code:


<asp:datagrid id="dgRadnici" style="Z-INDEX: 107; LEFT: 22px; POSITION: absolute; TOP: 140px"
                runat="server" Height="50px" Width="641px" Font-Size="X-Small" AutoGenerateColumns="False" BorderColor="Black" BorderWidth="1px" CellPadding="2" AllowPaging="True" OnPageIndexChanged="Grid_Change"
                PageSize="5">
                <HeaderStyle BackColor="Silver"></HeaderStyle>
                <Columns>
                    <asp:BoundColumn DataField="Polje1" HeaderText="Naziv"></asp:BoundColumn>
                    <asp:BoundColumn DataField="Ime" HeaderText="Ime"></asp:BoundColumn>
                    <asp:BoundColumn Visible="False" DataField="Polje2" ReadOnly="True" HeaderText="NAziv"></asp:BoundColumn>
                    <asp:BoundColumn DataField="Polje3" HeaderText="Naziv"></asp:BoundColumn>
                    <asp:BoundColumn DataField="Polje4 HeaderText="Naziv"></asp:BoundColumn>
                    <asp:HyperLinkColumn Text="Pregled detalja" Target="detalj" DataNavigateUrlField="Radnik_Sifra" DataNavigateUrlFormatString="radnik_edit.aspx?sifra={0}"
                        HeaderText="Detalji"></asp:HyperLinkColumn>
                </Columns>
                <PagerStyle PageButtonCount="100" Mode="NumericPages"></PagerStyle>
            </asp:datagrid>




Zasto ne bi isformatirao DataGrid na ovaj nacin.Obrati paznju na predzadnji tag <PagerStyle> i na atribut asp:datagrid-a Allowpaging="true".
 
Odgovor na temu

bokac
Beograd

Član broj: 19866
Poruke: 110
*.sbb.co.yu



Profil

icon Re: Custom Paging DataGrid problem!16.08.2004. u 14:12 - pre 241 meseci
Pa ne znam tacno sta bih dobio sa tim ali mislim da znam sta bih izgubio a to su performanse. Zamisli da imas 1000000 (ili 5x, 10x vise) rekorda u bazi i ti ih sve "povuces" u memoriju zahtevom stranice. Pa puta x zahteva od n posetilaca..... itd. Ovako ti "povlacis" samo 10 zapisa po zahtevu a memorija na serveru ti je prazna. Ovako trenutno izgleda moj DataGrid:
Code:

<asp:datagrid id="DataGrid1" runat="server" AutoGenerateColumns="False" ForeColor="Black" GridLines="Vertical" CellPadding="3"
 BackColor="White" BorderWidth="1px" BorderStyle="Solid" BorderColor="#999999" AllowCustomPaging="True" AllowPaging="True">
<SelectedItemStyle Font-Bold="True" ForeColor="White" BackColor="#000099"></SelectedItemStyle>
<AlternatingItemStyle BackColor="#CCCCCC"></AlternatingItemStyle>
<HeaderStyle Font-Bold="True" ForeColor="White" BackColor="Black"></HeaderStyle>
<FooterStyle BackColor="#CCCCCC"></FooterStyle>
<Columns>
<asp:TemplateColumn HeaderText="ID">
<ItemTemplate>
<asp:Label Runat="server" ID="idLabel" Text='<%#DataBinder.Eval(Container, "DataItem.id")%>'>
</asp:Label>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="naslov">
<ItemTemplate>
<asp:Label Runat="server" Text='<%#"<a href=reply.aspx?id="+DataBinder.Eval(Container, "DataItem.id")+">"+DataBinder.Eval(Container, "DataItem.subject")+"</a>" %>' ID=Label2> ID=Label1>
</asp:Label>
</ItemTemplate>
</asp:TemplateColumn>                
<asp:TemplateColumn HeaderText="Vreme:">
<ItemTemplate>
<asp:Label Runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.dt") %>' ID="LabelVreme">
</asp:Label>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
<PagerStyle Visible="False" HorizontalAlign="Center" ForeColor="Black" BackColor="#999999"></PagerStyle>
</asp:datagrid>

Ako te ne mrzi posalji aspx.cs fajl za tvoj primer, mozda se nismo razumeli ili gresim.
 
Odgovor na temu

esnaf

Član broj: 9417
Poruke: 43
*.fiberop.matgnet.com



Profil

icon Re: Custom Paging DataGrid problem!16.08.2004. u 15:25 - pre 241 meseci
Dobio bi na tome sto se ne bi smarao oko next i previous button-a
Formatiranje datagrida na ovaj nacin je jednostavnije, ali u tvom slucaju ako imas toliko recorda onda nije resenje.
Pitanje je samo kome treba pretrazivanje tolikih redova(stranu po stranu).
Bolje ti je da tolike podatke korisnik isfiltrira (npr search textbox) i tako smanjis
broj recorda

Pozdrav!!!
 
Odgovor na temu

bokac
Beograd

Član broj: 19866
Poruke: 110
*.sbb.co.yu



Profil

icon Re: Custom Paging DataGrid problem!16.08.2004. u 15:50 - pre 241 meseci
Pa naravno da je tvoj nacin elegantniji, jednostavniji itd. Ali stvar je u tome sto ovo sto ja pravim treba da bude forum, a ja ne mogu da predpostavim koliko ce ljudi zaista da ga gleda a koliko ce se ukljuciti u njegov rad, itd. Znam da je Previous, Next "smaranje" u odnosu na paging sa brojevima ali ako neko ima nesto bolje neka slobodno posalje. Samo bez "SELECT * FROM tabela", molio bih.
U svakom slucaju hvala ti na pomoci.

Pozdrav.
 
Odgovor na temu

bokac
Beograd

Član broj: 19866
Poruke: 110
*.sbb.co.yu



Profil

icon Re: Custom Paging DataGrid problem!17.08.2004. u 15:12 - pre 241 meseci
Ljudi, jel ima neko mozda da zna u cemu je ovde problem namucih se a nije mi jasno u cemu je fora. Jel neko moze da mi kaze da li ovo zaista cita zadnji red DataGrid kontrole koja ima 10 stavki???
Code:

string lastid=DataGrid1.Items[9].Cells[0].Text;
 
Odgovor na temu

[es] :: .NET :: Custom Paging DataGrid problem!

[ Pregleda: 2426 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

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