Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116

    [vb.net] DataGridView, visualizzare progressivo

    sto combattendo col DataGridView, e sto perdendo

    Leggo i dati da una tabella in un DataTable. Vi è una colonna numerica e vorrei vedere al suo fianco, il progressivo.

    L'sql l'ho fatta così:
    codice:
    Private sql As String = "select conto.*, 0.0 as progressivo from conto "
    Il caricamento dati l'ho fatto con questo codice:
    codice:
    Using con As New o.OdbcConnection(stringaConnessione)
    	con.Open()
    	dt = msodbc.GetDataTable(con, sql)
    	Dim progressivo As Decimal = 0
    	For Each r As DataRow In dt.Rows
    		progressivo += CDec(NullToZero(r("valore_operazione")))
    		r("progressivo") = progressivo
    		r.AcceptChanges()
    	Next
    
    End Using
    Questo il problema. Se ordino la griglia asc o disc per qualsiasi campo, debbo riscrivermi il progressivo.
    In che evento lo faccio?

    Ho provato a farlo nell'evento Sorded, come da codice, ma non va. Mi dareste una mano?


    codice:
    Private Sub DataGridView1_Sorted(sender As Object, e As System.EventArgs) Handles DataGridView1.Sorted
    	Dim progressivo As Decimal = 0
    	For Each r As DataRow In dt.Rows
    		Dim status_old As DataRowState = r.RowState
    		progressivo += CDec(NullToZero(r("valore_operazione")))
    		r("progressivo") = progressivo
    
    		If status_old = DataRowState.Unchanged Then
    			r.AcceptChanges()
    		End If
    	Next
    
    End Sub
    Pietro

  2. #2
    pietro, santa crespella, oramai sei grandicello dovresti saperlo che dire semplicemente "non va" non serve a niente

    spiegati meglio

  3. #3
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Va bene, sono grande, invecchiato a forza di combattere con Ms., ma che fare?

    Comunque, credo di avere già risolto.

    Non debbo creare il progressivo dal DataTable, ma dal DataTable.DefaultView

    Con questo codice vedo che va
    codice:
    Dim progressivo As Decimal = 0
    Dim dv As DataView = dt.DefaultView
    For Each r As DataRowView In dv
    	Dim status_old As DataRowState = r.Row.RowState
    	progressivo += CDec(NullToZero(r("valore_operazione")))
    	r("progressivo") = progressivo
    	If status_old = DataRowState.Unchanged Then
    		r.Row.AcceptChanges()
    	End If
    Next
    ciao
    Pietro

  4. #4
    (poi mi spieghi a cosa serve ricalcolare un progressivo al cambio dell'ordinamento: il progressivo non ha senso solo in ordine di data/sequenza di operazione? io addirittura nasconderei il progressivo con un ordinamento diverso...)

  5. #5
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Originariamente inviato da optime
    (poi mi spieghi a cosa serve ricalcolare un progressivo al cambio dell'ordinamento: il progressivo non ha senso solo in ordine di data/sequenza di operazione? io addirittura nasconderei il progressivo con un ordinamento diverso...)

    In effetti... forse hai ragione.
    Pietro

  6. #6

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.