Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2001
    Messaggi
    573

    2 datagrid in una stessa pagina

    Ciao a tutti, volevo sapere se si possono inserire due datagrid nella stessa pagina con paginazione.

    Non mi da errore ma vedo si imbroglia con la paginazione
    Grazie, Elisa

  2. #2
    Se puoi postare un po' di codice forse possiamo aiutarti. Così può essere qualsiasi causa...

    Ciao
    AZ [Microsoft - .NET MVP]
    Mia Home page: http://ciclismo.sitiasp.it
    Asp.Net community: http://www.aspitalia.com
    Il mio blog: http://blogs.aspitalia.com/az

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2001
    Messaggi
    573
    <aspataGrid id="dgservizi" runat="server" PageSize="5" AllowCustomPaging="True" CellPadding="2"
    AllowPaging="True" BorderWidth="0px" AutoGenerateColumns="False" Width="700px" OnPageIndexChanged="pagservizi">
    <HeaderStyle cssclass=cap></HeaderStyle>
    <ItemStyle cssclass=txtr></ItemStyle>
    <FooterStyle cssclass=cap></FooterStyle>
    <PagerStyle NextPageText="Pagina successiva" PrevPageText="Pagina precedente"></PagerStyle>
    <Columns>
    <asp:TemplateColumn HeaderText="Informazioni Utili" ItemStyle-Width="700px">
    <ItemTemplate>
    <%#Container.DataItem("Denominazione")%> - <%#Container.DataItem("Via")%> - <%#Container.DataItem("Cap")%> <%#Container.DataItem("Localita")%>
    <hr size="1" color="#808080">
    </ItemTemplate>
    </asp:TemplateColumn>
    </Columns>
    </aspataGrid>
    .....
    <aspanel id=pservizilimitrofi runat=server visible=false>
    <tr>
    <td width=700 colspan=2>




    <aspataGrid id="dgservizilimitrofi" runat="server" PageSize="5" AllowCustomPaging="True" CellPadding="2"
    AllowPaging="True" BorderWidth="0px" AutoGenerateColumns="False" Width="700px" OnPageIndexChanged="pagservizilimitrofi">
    <HeaderStyle cssclass=cap></HeaderStyle>
    <ItemStyle cssclass=txtr></ItemStyle>
    <FooterStyle cssclass=cap></FooterStyle>
    <PagerStyle NextPageText="Pagina successiva" PrevPageText="Pagina precedente"></PagerStyle>
    <Columns>
    <asp:TemplateColumn HeaderText="Informazioni Utili zone limitrofe" ItemStyle-Width="700px">
    <ItemTemplate>
    <%#Container.DataItem("Denominazione")%> - <%#Container.DataItem("Via")%> - <%#Container.DataItem("Cap")%> <%#Container.DataItem("Localita")%>
    <hr size="1" color="#808080">
    </ItemTemplate>
    </asp:TemplateColumn>
    </Columns>
    </aspataGrid>

    Nel codebehind:
    dentro la binddata

    ....
    '//*Visualizzo i servizi
    Dim sql As String = "Select * from servizi where tipo=" & IdTipoServizio & " AND cap= " & cap & " Order by Denominazione"
    Dim sqlConta1 As String = "Select Count(*) from servizi where tipo=" & IdTipoServizio & " AND cap= " & cap & ""

    If dgservizi.VirtualItemCount = 0 Then
    Dim cmdQuanti As New OleDbCommand(sqlConta1, Conn)
    quanti1 = cmdQuanti.ExecuteScalar()
    dgservizi.VirtualItemCount = quanti1
    Else
    quanti1 = dgservizi.VirtualItemCount
    End If

    Dim Cmd As New OleDbDataAdapter(sql, Conn)
    Cmd.Fill(ds, (dgservizi.CurrentPageIndex * 10), 10, "Servizi")
    Dim Source As DataView = ds.Tables("Servizi").DefaultView
    dgservizi.DataSource = Source
    dgservizi.DataBind()
    ....
    '//*Visualizzo i servizi limitrofi
    Dim sqlservizilimitrofi = "SELECT ZONELIMIT.*, SERVIZI.* FROM SERVIZI INNER JOIN ZONELIMIT ON SERVIZI.Cap = ZONELIMIT.Cap1 where cap1= " & cap & " and tipo=" & IdTipoServizio & " Order by Denominazione"
    Dim sqlConta2 As String = "Select Count(*) FROM SERVIZI INNER JOIN ZONELIMIT ON SERVIZI.Cap = ZONELIMIT.Cap1 where cap1= " & cap & " and tipo=" & IdTipoServizio & ""

    If dgservizilimitrofi.VirtualItemCount = 0 Then
    Dim cmdQuanti As New OleDbCommand(sqlConta2, Conn)
    quanti2 = cmdQuanti.ExecuteScalar()
    dgservizilimitrofi.VirtualItemCount = quanti2
    Else
    quanti2 = dgservizi.VirtualItemCount
    End If

    Dim Cmd As New OleDbDataAdapter(sqlservizilimitrofi, Conn)
    Cmd.Fill(ds, (dgservizilimitrofi.CurrentPageIndex * 10), 10, "Servizilimitrofi")
    Dim Source As DataView = ds.Tables("Servizilimitrofi").DefaultView
    dgservizilimitrofi.DataSource = Source
    dgservizilimitrofi.DataBind()
    ....

    Sub pagservizi(ByVal sender As Object, ByVal e As DataGridPageChangedEventArgs)

    dgservizi.CurrentPageIndex = e.NewPageIndex
    BindData()

    End Sub

    Sub pagservizilimitrofi(ByVal sender As Object, ByVal e As DataGridPageChangedEventArgs)

    dgservizilimitrofi.CurrentPageIndex = e.NewPageIndex
    BindData()

    End Sub

    ... mi sembra di aver postato tutto il codice necessario....
    Praticamente se clicco su "pagina successiva" ricarica la pagina e non vedo + ne il datagrid sopra ne quello sotto

    grazie,
    Elisa

  4. #4
    Utente di HTML.it L'avatar di Legnetto
    Registrato dal
    May 2002
    Messaggi
    1,419
    Ho dato un'occhiata al volo, ma perchè metti nel file.aspx il pagesize dei datagrid a 5 poi nel databind prendi 10 righe?
    Prova a far funzionare singolarmente le due griglie e vedi se ci sono problemi con la paginazione, poi mettendole nella stessa pagina verifichi che non ci siano altri problemi.
    Ciao
    Legnetto

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2001
    Messaggi
    573
    si hai ragione ieri sera ero rinco. cmq anche se sistemato con 5 non funziona lo stesso

  6. #6
    Hai un unica funzione binddata dove dentro gestisci entrambe le datagrid. Non hai postato tutta la funzione credo, cmq sarebbe meglio separare la gestione delle due datasource.
    Poi mi sembra che utilizzi inutilmente e male la dataview. Modifica con
    codice:
    dgservizilimitrofi.DataSource = ds.Tables("Servizilimitrofi").DefaultView
    o con
    codice:
    dgservizilimitrofi.DataSource = ds.Tables("Servizilimitrofi")
    visto che non utilizzi alcuna funzione specifica di ordinamento o di filtro della dataview
    Saluti a tutti
    Riccardo

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2001
    Messaggi
    573
    .. però si incarata uguale uff... presi singolarmente funzionano

  8. #8
    Utente di HTML.it
    Registrato dal
    May 2001
    Messaggi
    573
    penso di aver trovato il problema.

    Qui sembra come se facesse un conto errato dei record,, mi attiva il link pagina successiva anche se non serve.
    Premesso che le query sono corrette perchè le ho testate in access ecco il codice:

    <aspataGrid id="dgservizilimitrofi" runat="server" PageSize="5" AllowCustomPaging="True" CellPadding="2"
    AllowPaging="True" BorderWidth="0px" AutoGenerateColumns="False" Width="700px" OnPageIndexChanged="pagservizilimitrofi">
    <HeaderStyle cssclass=cap></HeaderStyle>
    <ItemStyle cssclass=txtr></ItemStyle>
    <FooterStyle cssclass=cap></FooterStyle>
    <PagerStyle NextPageText="Pagina successiva" PrevPageText="Pagina precedente"></PagerStyle>
    <Columns>
    <asp:TemplateColumn HeaderText="Informazioni Utili zone limitrofe" ItemStyle-Width="700px">
    <ItemTemplate>
    <%#Container.DataItem("Denominazione")%> - <%#Container.DataItem("Via")%> - <%#Container.DataItem("Cap")%> <%#Container.DataItem("Localita")%>
    <hr size="1" color="#808080">
    </ItemTemplate>
    </asp:TemplateColumn>
    </Columns>
    </aspataGrid>
    ....................
    Dim sqlservizilimitrofi = "SELECT ZONELIMIT.*, SERVIZI.* FROM ZONELIMIT INNER JOIN SERVIZI ON ZONELIMIT.Cap2 = SERVIZI.Cap WHERE(((ZONELIMIT.Cap1) = " & Session("cap") & ") And ((SERVIZI.Tipo) = " & Session("IdTipoServizio") & ")) ORDER BY SERVIZI.Denominazione"
    Dim sqlConta3 As String = "Select Count(*) FROM ZONELIMIT INNER JOIN SERVIZI ON ZONELIMIT.Cap2 = SERVIZI.Cap WHERE(((ZONELIMIT.Cap1) = " & Session("cap") & ") And ((SERVIZI.Tipo) = " & Session("IdTipoServizio") & "))"

    If dgservizilimitrofi.VirtualItemCount = 0 Then
    Dim cmdQuanti3 As New OleDbCommand(sqlConta3, Conn)
    quanti3 = cmdQuanti3.ExecuteScalar()
    dgservizilimitrofi.VirtualItemCount = quanti3
    Else
    quanti3 = dgservizilimitrofi.VirtualItemCount
    End If

    Dim Cmd3 As New OleDbDataAdapter(sqlservizilimitrofi, Conn)
    Cmd3.Fill(ds, (dgservizilimitrofi.CurrentPageIndex * 5), 5, "Servizilimitrofi")
    dgservizilimitrofi.DataSource = ds.Tables("Servizilimitrofi").DefaultView
    dgservizilimitrofi.DataBind()
    ......................
    Sub pagservizilimitrofi(ByVal sender As Object, ByVal e As DataGridPageChangedEventArgs)

    dgservizilimitrofi.CurrentPageIndex = e.NewPageIndex
    BindData()

    End Sub
    Adesso c'è solo questo datagrid nella pagina.

  9. #9
    Utente di HTML.it
    Registrato dal
    May 2001
    Messaggi
    573
    Ok sembra risolto c'era un problema con VirtualItemCount che restava in memoria errato quanto passavo da un dg all'altro

    thanks a tutti lo stesso!
    Elisa

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 © 2025 vBulletin Solutions, Inc. All rights reserved.