Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 19
  1. #1

    Aiuto su pager GridView

    ho varie pagine con gridview.
    per ora ho messo un pager impostato da 10 ma avrei bisogno di creare una list box dove poter scegliere quante pagine vedere.
    due cose:
    -ne posso creare uno comune nella master che funziona per tutti?
    -al pager della GridView che gli devo dare per scegliere il pager?

  2. #2
    ho fatto così:
    codice:
    <asp:GridView ID="DecoderView" runat="server" AllowPaging="True" DataSourceID="DecoderSql"
            DataKeyNames="sito#" AllowSorting="True" PagerStyle-HorizontalAlign="Left" CssClass="grid"
            PageSize="3">
            <Columns>
                <asp:TemplateField>
                    <ItemTemplate>
                        <asp:CheckBox ID="SelectedItem" AutoPostBack="true" runat="server" OnCheckedChanged="SelectedItems_CheckedChanged" />
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>
            <PagerStyle HorizontalAlign="Left"></PagerStyle>
            <PagerTemplate>
                <asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged">
                    <asp:ListItem Selected="True">Nume pag</asp:ListItem>
                    <asp:ListItem>10</asp:ListItem>
                    <asp:ListItem>20</asp:ListItem>
                </asp:DropDownList>
            </PagerTemplate>
        </asp:GridView>
    nel code-behind:
    codice:
            protected void DropDownList1_SelectedIndexChanged(Object sender, EventArgs e)
            {
                GridViewRow gvr = DecoderView.BottomPagerRow;
                DropDownList ddl = (DropDownList)gvr.Cells[0].FindControl("DropDownList1");
                DecoderView.PageSize = ddl.SelectedIndex;
            }
    però mi funziona male.
    se selezioni 10 me ne fa vedere 1.
    se selezioni 20 me ne fa vedere 2.
    ho provato anche a mettere 5 e sempre un record mi fa vedere.
    sapete dirmi dov'è l'errore?

  3. #3
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    credo che tu debba utilizzare SelectedValue e non SelectedIndex

    ps. supponendo naturalmente che SelectedValue contenga il numero di record da visualizzare

    per esempio

    <aspropDownList ID="DropDownList1" runat="server" AutoPostBack="True">
    <asp:ListItem Value="10" Text="10"></asp:ListItem>
    <asp:ListItem Value="20" Text="20"></asp:ListItem>
    <asp:ListItem Value="30" Text="30"></asp:ListItem>
    </aspropDownList>
    Pietro

  4. #4
    si infatti ho fatto così e funziona:
    codice:
            protected void DropDownList1_SelectedIndexChanged(Object sender, EventArgs e)
            {
                GridViewRow gvr = DecoderView.BottomPagerRow;
                DropDownList ddl = (DropDownList)gvr.Cells[0].FindControl("DropDownList1");
                DecoderView.PageSize = int.Parse(ddl.SelectedItem.Text);
            }
    grazie!

  5. #5
    vorrei però aggiungere una voce che mi permetta di vedere tutti i risultati.
    come posso fare??

  6. #6
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Nel DropDown metti una voce nuova che ha Text="tutti" e value="1000000000"

    e leghi il tutto non a ddl.SelectedItem.Text ma a ddl.SelectedItem.Value
    Pietro

  7. #7
    avevo già provato a fare così.
    il problema è che quando selezioni la voce Tutti la dropdown sparisce.
    e nn è un problema di lunghezza pagina.

  8. #8
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    a me non sparisce per niente, solo che dà errore di memoria

    Al posto di mettere 1.000.000.000, ho messo 1.000.000 e va.

    Ma, ancora meglio, ho fatto così:

    codice:
            <asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True">
                <asp:ListItem Value="10" Text="10"></asp:ListItem>
                <asp:ListItem Value="20" Text="20"></asp:ListItem>
                <asp:ListItem Value="30" Text="30"></asp:ListItem>
                <asp:ListItem Value="-1" Text="tutti"></asp:ListItem>
            </asp:DropDownList>
    e intercetto il valore con
    codice:
        Protected Sub BindData()
            Dim sql As String = Query()
            Dim dt As DataTable = msole.GetDataTable(gl.StringaConnessioneRegioniProvinceComune, sql)
            Me.GridView1.DataSource = dt
            Me.GridView1.DataKeyNames = {"id_provincia"}
    
            Dim PageSize As Integer = CInt(Me.DropDownList1.SelectedValue)
            If PageSize <> -1 Then
                Me.GridView1.AllowPaging = True
                Me.GridView1.PageSize = PageSize
            Else
                Me.GridView1.AllowPaging = False
            End If
    
            Me.GridView1.DataBind()
    
        End Sub
    Pietro

  9. #9
    ok però purtroppo il VB nn lo conosco, ma mi pare di aver capito che attivi il pager solo se il valore selezionato è -1.
    io invece il pager lo vorrei sempre attivo.

  10. #10
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    prova a mettere come max 1.000.000, o hai più di un milione di record?
    Pietro

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.