Question

Je alimenter une RadGrid Telerik avec les données d'un DataTable (System.Data.DataTable). Comme je soutiens la demande de quelqu'un d'autre, je ne peux pas utiliser tout autre contrôle de code source ou l'affichage des données.

Dans ma grille, j'ai trois colonnes: disons qu'ils sont Widgets Produit (colonne A), défectueux Widgets (colonne B) et proportion défectuosité (colonne C). La requête de base de données fournit ces pour moi et fait le calcul C = B / A.

I ai une rangée de totaux (un GridFooterItem Telerik) au bas de la grille. Dans les colonnes A et B Telerik calcule les totaux pour ces colonnes pour moi. Nous ne pouvons pas calculer la valeur correcte pour le « total » de la colonne C de la colonne C seule:. Nous devons remplir avec (la somme de B) / (la somme de A)

J'ai réussi à le faire en manipulant l'événement DataBound du RadGrid et de remplir manuellement les cellules dans le pied de page. (Je devais attraper le GridFooterItem en cas de ItemCreated, puis mettre des valeurs en elle en cas de DataBound, après avoir calculé automatiquement les totaux pour A et B pour moi.) Cela se sent assez hacky - peut-être il y a une meilleure façon ... ?

Quoi qu'il en soit, le bit important est ceci:

Mon réseau est divisé en groupes, donc je dois aussi remplir la colonne C dans les GridGroupFooterItems. Je ne peux pas obtenir ma technique hacky à travailler dans ce cas: Je trouve la cellule de pied de page que je veux avec myGridFooterItem["WidgetsProduced"], mais je ne peux pas obtenir les cellules de pied de groupe avec myGridGroupFooterItem["WidgetsProduced"] - il est tout simplement pas un dictionnaire

Je l'ai essayé d'utiliser myGridGroupFooterItem.Cells[], mais ce TableCellCollection contient quelques autres cellules que je pense, donc les accès par index entier se sent un peu ropey (d'autant plus que c'est un rapport défini par l'utilisateur, de sorte que les colonnes peuvent être dans un ordre quelconque).

Alors: comment puis-je remplir ces cellules avec mon calcul

?
Était-ce utile?

La solution

votre article événement databound ressemble à quelque chose comme

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
}


}

Autres conseils

J'ai vérifié si indexeur nom unique fonctionne avec Q2 2009 et Q3 version 2009 de RadGrid pour ASP.NET AJAX et cela a fonctionné sur ma machine. Vérifiez votre version et demander plus d'aide en utilisant le forums Telerik si nécessaire.

Dick

Essayer cette

Dans la page Aspx:

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

(Ou)

Dans le code behind:

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

Eh bien, si vous utilisez formule personnalisée pour calculer les résultats au lieu d'agrégats standard comme somme, moyenne et ainsi de suite, vous avez probablement compter sur votre propre logique. Les cellules du groupe bas de page devraient être indexables par nom unique - Je me souviens cela n'a pas été pris en charge avec les versions précédentes Telerik ASP.NET grille mais cela a été ajouté dans les versions plus récentes -. Q2 ou Q3 2009

Dick

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top