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

    [asp.net vb]Ordinare dataview ottenuto da dataset

    Salve, ho un dataset e devo mettere i dati nel dataview e poi ordinare il dataview per prezzo.

    Così non mi funziona... Dove sbaglio???

    codice:
    
            Dim dtv As New DataView
            dtv.Table = dsetProdotti.Tables("valori")
            dtv.Sort = "prezzo"
            dtv.Table.AcceptChanges()
            prezzoGO.Text = dtv.Table.Rows(1).Item(3)
    ..Dimenticavo..... il dataset mi arriva in quel modo e non posso farci nulla.
    Sono due giorni che ho provato un pò tutto... ma i dati non vengono ordinati.

  2. #2
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    Hai visto l'esempio di MS ?
    http://msdn.microsoft.com/en-us/libr...view.sort.aspx


    codice:
    using System.Data;
    using System;
    
    public class A {
       static void Main(string[] args) {
          DataTable locationTable = new DataTable("Location");
          // Add two columns
          locationTable.Columns.Add("State");
          locationTable.Columns.Add("ZipCode");
    
          // Add data 
          locationTable.Rows.Add("Washington", "98052");
          locationTable.Rows.Add("California", "90001");
          locationTable.Rows.Add("Hawaii", "96807");
          locationTable.Rows.Add("Hawaii", "96801");
          locationTable.AcceptChanges();
    
          Console.WriteLine("Rows in original order\n State \t\t ZipCode");
          foreach (DataRow row in locationTable.Rows) {
             Console.WriteLine(" {0} \t {1}", row["State"], row["ZipCode"]);
          }
    
          // Create DataView
          DataView view = new DataView(locationTable);
    
          // Sort by State and ZipCode column in descending order
          view.Sort = "State ASC, ZipCode ASC";
    
          Console.WriteLine("\nRows in sorted order\n State \t\t ZipCode");
          foreach (DataRowView row in view) {
             Console.WriteLine(" {0} \t {1}", row["State"], row["ZipCode"]);
          }
       }
    }
    non mi pare ci sia la .acceptChanges del DataTable...
    Inoltre prova a mettere DESC vicino la parola "prezzo".

  3. #3
    Avevo provato 1000 cose.
    Alla fine ho trovato un cristo che fa così
    codice:
            Dim dtv As New DataView
    
            dtv.Table = FilterandSortTable(dsetProdotti.Tables("valori"), "", "prezzo asc")
    
           prezzoGO.Text = dtv.Table.Rows(1).Item(3)
    
    
     Public Shared Function FilterandSortTable(ByVal SourceTable As DataTable, ByVal strFilters As String, ByVal strOrder As String) As DataTable
            Dim Tbl As DataTable = SourceTable.Clone
            Dim rows() As DataRow = SourceTable.Select(strFilters, strOrder)
            For i As Integer = 0 To rows.Length - 1
                Tbl.ImportRow(rows(i))
            Next
            Return Tbl
        End Function

  4. #4
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    ok, ma il metodo .Sort deve funzionare.

    Il cristo, nel suo workaround, non fa altro che rifare la select sul set di dati a disposizione, con l'ordinamento voluto e filtri voluti.

  5. #5
    si, infatti la tua soluzione è meno contorta........ infatti sto ripartendo dalla tua. Per ora ho pensato di pubblicare quella perchè ho visto che su molti forum discussioni su questo argomento sono spesso aperte e mai completate se non con 'non mi funziona ancora'

    Magari cosi fra le due cose salviamo qualche povero omino dallo sclero totale dai ......... io ho fatto il meno ammettiamolo, il resto è opera tua e del povero cristo .... e ad entrambi non posso che inoltrare i miei ringraziamenti .

  6. #6
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    Originariamente inviato da binos1979
    il resto è opera tua e del povero cristo ....
    Ho copiato lo script che c'e' a quel link di Microsoft, non l'ho fatto io

    Comunque, non ti incitavo a cambiare le cose ora.
    So bene che c'e' un tempo limitato da dedicare ad ogni problema

  7. #7
    Figurati, in realtà le stavo già realmente cambiando...... tuttavia provo per un' ora ancora e poi smetto, come hai detto tu a volte il tempo è limitato, ma almeno provarci ..... diversamente ai posteri lasciamo l'arduo compito di migliorare il post con una soluzione finale....

  8. #8
    ok, per ora mi arrendo .... lascio come sono riuscito ---

  9. #9
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    prova:

    codice:
    DataView vista = new DataView(dsetProdotti.Tables("valori")); 
    vista.Sort = "Prezzo DESC"; 
    
    foreach (DataRowView riga in view) { 
      Console.WriteLine(" {0} \t {1}", riga[1], riga[3]); 
    }

  10. #10
    queste le avevo provate tutte ma avrò io un errore del cavolo che ne impedisce il funzionamento ........ poi vedo .....

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.