Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di ciupaz
    Registrato dal
    Dec 2000
    residenza
    Milano
    Messaggi
    848

    Campo calcolato in GridView

    Ciao a tutti,
    vorrei riuscire ad aggiungere ad un mio GridView che mi mostra i dettagli di un carrello della spesa, un record in fondo riportante solo il totale dell'importo, che non è altro che la somma dei valori presenti nell'ultima colonna dei vari record recuperati.
    E' possibile fare una cosa del genere?

    Grazie

  2. #2
    Utente di HTML.it L'avatar di tyson69
    Registrato dal
    Jan 2005
    Messaggi
    154
    io fossi in te lo estrarrei da sql con il SUM()

  3. #3
    Utente di HTML.it L'avatar di ciupaz
    Registrato dal
    Dec 2000
    residenza
    Milano
    Messaggi
    848
    Il problema è che dovrei comunque aggiungere una riga in fondo alla GridView contenente un solo campo, il totale appunto.
    In questo caso come si fa?

  4. #4
    Utente di HTML.it L'avatar di tyson69
    Registrato dal
    Jan 2005
    Messaggi
    154
    METTILO NEL <footertemplate></footertemplate>

  5. #5
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    questo è un vecchio esempio di un DataGrid, ma forse fa al tuo caso:

    ho un campo del database chiamato 'long'. la somma di tutti i record di tale campo la metto nel piede della griglia e lo ricavo da una variabile 'somma'
    codice:
    <asp:TemplateColumn HeaderText="LONG">
    	<ItemTemplate>
    		<%#Container.DataItem("long")%>
    	</ItemTemplate>
    	<FooterTemplate>
    		<%#somma%>
    	</FooterTemplate>
    	<FooterStyle Font-Bold="True"></FooterStyle>
    </asp:TemplateColumn>
    la variabile protected somma viene valorizzata nell'evento ItemDataBound, come da esempio:

    codice:
    Protected Somma% = 0
    Private Sub DataGrid1_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles DataGrid1.ItemDataBound
    Select Case e.Item.ItemType
        Case ListItemType.Item, ListItemType.AlternatingItem
    	'ottengo il DbDataRecord che fornisce i dati legati
    	Dim dbr As Data.Common.DbDataRecord = DirectCast(e.Item.DataItem, Data.Common.DbDataRecord)
    
    	'estraggo il campo [long]
    	Somma += DirectCast(NullToZero(dbr("long")), Integer)
    
    	'aggiungo ad ogni riga lo stile
    	e.Item.Attributes.Add("onmouseover", "this.style.backgroundColor = 'Silver'")
    	If e.Item.ItemType = ListItemType.AlternatingItem Then
    	    e.Item.Attributes.Add("onmouseout", "this.style.backgroundColor = 'White'")
    	Else
    	    e.Item.Attributes.Add("onmouseout", "this.style.backgroundColor = 'White'")
    	End If
    
    	'aggiungo il title
    	Dim grid As DataGrid = DirectCast(sender, DataGrid)
    	Dim id%
    	id = CInt(grid.DataKeys(e.Item.ItemIndex)) 'uguale a id = CInt(dbr("id"))
    
    	Dim wc As WebControl = DirectCast(e.Item.Cells(16).Controls(1), WebControl)
    	wc.ToolTip = "Cancella record n° " & id
    	'disabilito il pulsante se id=4
    	If id = 4 Then wc.Enabled = False
    
    	wc = DirectCast(e.Item.Cells(17).Controls(0), WebControl)
    	wc.ToolTip = "Cancella record n° " & id
    
    	wc = DirectCast(e.Item.Cells(14).Controls(1), WebControl)
    	wc.ToolTip = "Informazioni su record n° " & id
    
    
    
    	End Select
    
    End Sub

    ho copiato integralmente il metodo: tu utilizza quello che ti serve (era un esempio per uso didattico)



    ps. NullToZero è una funzione che intercetta i dbnull e li trasforma in 0
    Pietro

  6. #6
    Utente di HTML.it L'avatar di ciupaz
    Registrato dal
    Dec 2000
    residenza
    Milano
    Messaggi
    848
    Interessante questo esempio, grazie.
    Ora provo a metterlo in pratica.

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.