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

    Problemi con l'ordinamento datagrid

    Ciao,

    ho il saeguente problema :

    ho creato un datagrid con ordinamento e paginazione

    ho gestito i vari eventi e fino a qui tutto bene!

    il problema nasce quando provo a cambiare pagina : perdo l'ordinamento

    nel caso opposto ovvero cambo ordine ho la proprietà del controllo datagrid che mi dice in che pagina mi trovo e quindi correttamente rimango nella stessa con un ordine diverso!

    Ho provato a richiamare il comando DataGridSortCommandEventArgs nella sub che cambia pagina ma niente mi dice che non posso usare quell'oggetto ovviamente

    Help me
    http://www.vogliadiweb.it
    http://www.mercedes-fin.it
    http://www.prezzibio.it

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2003
    Messaggi
    75
    Prova a settare queste impostazioni al datagrid

    <aspataGrid id="DataGrid1" runat="server" Height="85px" Width="622px" OnPageIndexChanged="saltapagina" AllowCustomPaging="false" PageSize="5" AllowPaging="True" AutoGenerateColumns="False" ShowFooter="True" AllowSorting="true" OnSortCommand="DataGrid1_Sort">

    Sub saltapagina(ByVal sender As Object, ByVal e As DataGridPageChangedEventArgs)
    DataGrid1.CurrentPageIndex = e.NewPageIndex
    binddata()
    End Sub

    Sub DataGrid1_Sort(ByVal Sender As Object, ByVal E As DataGridSortCommandEventArgs)

    Sub BindGrid(ByVal SortField As String)

    Dim DS As DataSet
    Dim MyConnection As OleDbConnection
    Dim MyCommand As OleDbDataAdapter
    Dim quanti As Integer
    MyConnection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\Web\Outlet\database\catalogo2.mdb;")
    MyConnection.Open()
    MyCommand = New OleDbDataAdapter("SELECT * FROM Catalogo", MyConnection)
    DS = New DataSet()
    MyCommand.Fill(DS, "Catalogo")
    ' in quanti viene inserito il numero di record della tabella
    quanti = DS.Tables("Catalogo").Rows.Count.ToString()
    Dim sources As DataView = DS.Tables("Catalogo").DefaultView
    sources.Sort = SortField
    DataGrid1.DataSource = sources
    DataGrid1.DataBind()
    End Sub

    Fammi saxe che succede

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2003
    Messaggi
    75

    Correzione

    scusa,ho dimenticato di mandarti questo:

    Sub DataGrid1_Sort(ByVal Sender As Object, ByVal E As DataGridSortCommandEventArgs)
    BindGrid(E.SortExpression)
    End Sub

  4. #4
    ora faccio una prova e ti faccio sapere

    grazie in anticipo
    http://www.vogliadiweb.it
    http://www.mercedes-fin.it
    http://www.prezzibio.it

  5. #5
    Sub saltapagina(ByVal sender As Object, ByVal e As DataGridPageChangedEventArgs)
    DataGrid1.CurrentPageIndex = e.NewPageIndex
    binddata()
    End Sub


    binddata cosa contiene?
    http://www.vogliadiweb.it
    http://www.mercedes-fin.it
    http://www.prezzibio.it

  6. #6
    Utente di HTML.it L'avatar di pireda
    Registrato dal
    Jul 2001
    Messaggi
    654
    Lui ti ha scritto Binddata() in realta devi richiamare la procedura che effettua il binding col tuo DataGrid (riempie il tuo DataGrid con i valori del DB)
    Maddalena... Perché proprio Iacchetti!...

  7. #7
    si l'avevo supposto

    però il problema sembra rimanere

    ovvero quando cambio pagina e carico la nuova pagina perdo l'ordine del datagrid perchè non posso richiamare l'evento DataGridSortCommandEventArgs
    http://www.vogliadiweb.it
    http://www.mercedes-fin.it
    http://www.prezzibio.it

  8. #8
    Utente di HTML.it
    Registrato dal
    Mar 2003
    Messaggi
    75

    Prova così

    Guarda non so se puo esserti di aiuto ma puoi inserire nel form un controllo Label nascosto e gli setti la proprietà text con il valore di default per l'ordinamento!
    Ogni volta che l'utente genera l'evento PageIndexChanged attivi il binding con quel parametro:
    Io ho provato e funziona!
    Certo non è ottimizzata...ma puo essere una soluzione semplice...
    Fammi saxe...!

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

    DataGrid1.CurrentPageIndex = e.NewPageIndex
    BindGrid(lblSort.Text)

    End Sub

    Sub BindGrid(ByVal SortFieldClicked As String)

    Dim DS As DataSet
    Dim MyConnection As OleDbConnection
    Dim MyCommand As OleDbDataAdapter
    Dim quanti As Integer
    MyConnection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\Web\Outlet\database\catalogo2.mdb;")
    MyConnection.Open()
    MyCommand = New OleDbDataAdapter("SELECT * FROM Catalogo", MyConnection)
    DS = New DataSet()
    MyCommand.Fill(DS, "Catalogo")
    ' in quanti viene inserito il numero di record della tabella
    quanti = DS.Tables("Catalogo").Rows.Count.ToString()
    Dim sources As DataView = DS.Tables("Catalogo").DefaultView
    sources.Sort = SortFieldClicked
    DataGrid1.DataSource = sources
    DataGrid1.DataBind()
    lblSort.Text = SortFieldClicked
    End Sub

  9. #9
    molto carina come cosa

    simile ai trucchetti javascript che utilizzavo in asp

    cmq ho appena trovato un articolo che spiega come fare ora gli dò n'occhiata e se va bene ti giro qui il codice

    grazie ancora
    http://www.vogliadiweb.it
    http://www.mercedes-fin.it
    http://www.prezzibio.it

  10. #10
    rieccomi,

    ho scoperto che non esiste un modo pulito di risolvere il problema,

    l'esempio che ho trovato usa l'oggetto viewstate per memorizzare sort e ordinamento "desc" o "asc"

    pensa te!

    Ciao

    Michele
    http://www.vogliadiweb.it
    http://www.mercedes-fin.it
    http://www.prezzibio.it

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.