Domanda

Sono compilazione di un Telerik RadGrid con i dati da un DataTable (System.Data.DataTable). Come sto sostenendo applicazione di qualcun altro, non riesco a utilizzare qualsiasi altro controllo origine dati o la visualizzazione.

Nella mia griglia ho tre colonne: diciamo che sono Widget PRODOTTA (colonna A), difettosi Widget (colonna B) e Proporzione difettosità (colonna C). La query di database fornisce questi per me e fa il calcolo C = B / A.

Ho una fila totali (a GridFooterItem Telerik) nella parte inferiore della griglia. Nelle colonne A e B Telerik calcola i totali per le colonne per me. Non possiamo calcolare il valore corretto per l' 'totale' di colonna C da sola colonna C:. dobbiamo popolarlo con (la somma di B) / (la somma di A)

Sono riuscito a fare questo gestendo l'evento DataBound del RadGrid e popolando manualmente le cellule del piè di pagina. (Ho dovuto prendere il GridFooterItem in caso ItemCreated, poi mettere i valori in esso in caso DataBound, dopo che era calcolati automaticamente i totali per A e B per me.) Questo si sente abbastanza hacky - forse c'è un modo migliore ... ?

In ogni caso, il bit importante è questa:

La mia griglia è suddivisa in gruppi in modo Ho anche bisogno di compilare la colonna C nelle GridGroupFooterItems. Non riesco a ottenere la mia tecnica hacky a lavorare in questo caso: Sto trovando la cella di piè di pagina che voglio con myGridFooterItem["WidgetsProduced"], ma non riesco a ottenere le cellule gruppo piè di pagina con myGridGroupFooterItem["WidgetsProduced"] - semplicemente non è un dizionario

Ho provato con myGridGroupFooterItem.Cells[], ma questo TableCellCollection contiene un paio più cellule che mi aspetto, in modo da accedervi da indice intero si sente un po 'ropey (tanto più che si tratta di un rapporto definito dall'utente, in modo che le colonne possono essere in qualsiasi ordine).

Quindi: come faccio a popolare queste cellule con il mio calcolo

?
È stato utile?

Soluzione

il vostro evento oggetto databound sembra qualcosa di simile

grd_ItemDataBound(object sender,GridItemEventArgs e)
{
//catch the footer element
if(e.Item.ItemType==GridItemType.GroupFooter)
{
    (e.Item.FindControl("yourTextBox") as TextBox).Text = your calculated value
}


}

Altri suggerimenti

I ricontrollato se nome univoco indicizzatore funziona con 2 ° trimestre 2009 e 3 ° trimestre 2009 versione di RadGrid per ASP.NET AJAX e ha funzionato sulla mia macchina. Controllare la versione e chiedere più aiuto utilizzando il Telerik forum se necessario.

Dick

Prova questo

In pagina aspx:

<telerik:GridBoundColumn Aggregate="Sum" DataField="Price" DataFormatString="{0:C}" EmptyDataText="0" FooterText="Total :" HeaderText="Price" UniqueName="Price"> ...

(Or)

Nel codice dietro pagina:

Private Sub RadGrid1_ItemDataBound(ByVal sender As Object, ByVal e As Telerik.Web.UI.GridItemEventArgs) Handles RadGrid1.ItemDataBound       
    Dim Item As GridDataItem
    Dim value as Double
    Select Case (e.Item.ItemType)
    Case Telerik.Web.UI.GridItemType.AlternatingItem, Telerik.Web.UI.GridItemType.EditItem,Telerik.Web.UI.GridItemType.Item,Telerik.Web.UI.GridItemType.SelectedItem

        Item = e.Item
    '------ Calculate Total  amount -----------
        Item("TotalPayment").Text = CDbl(Item("TotalPayment").Text) 
        value += CDec(Item("TotalPayment").Text)

    Case Telerik.Web.UI.GridItemType.Footer
        '------ Display the total  amount in Footer ------
        Dim footerItem As GridFooterItem = e.Item
        If Not RadGrid1.Items.Count = 0 Then footerItem("TotalPayment").Text = "Total :" + value
    End Select
End Sub

Bene, se si utilizza la formula su misura per calcolare i risultati, invece di aggregati standard come somma, media e così via, probabilmente dovete contare sulla vostra propria logica. Le cellule dei piè di pagina di gruppo dovrebbero essere indicizzabili dai nome univoco - Mi ricordo che questo non era supportato con le versioni precedenti Telerik ASP.NET griglia, ma questo è stato aggiunto nelle versioni più recenti -. Q2 o Q3 2009

Dick

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top