1

DataTable ( ) からのデータを Telerik RadGrid に入力していますSystem.Data.DataTable。他の人のアプリケーションをサポートしているため、他のデータ ソースや表示コントロールを使用できません。

私のグリッドには 3 つの列があります。作成されたウィジェット (列 A)、障害のあるウィジェット (列 B)、および障害の割合 (列 C) であるとしましょう。データベース クエリはこれらを提供し、C = B / A の計算を行います。

GridFooterItemグリッドの下部に合計行 ( Telerik ) があります。列 A と B では、Telerik がこれらの列の合計を計算してくれます。列 C だけから列 C の「合計」の正しい値を計算することはできません。(B の合計) / (A の合計) を入力する必要があります。

DataBoundRadGridのイベントを処理し、フッターのセルに手動で入力することで、これを実現できました。(イベントで をキャッチし、GridFooterItemAと B の合計を自動的に計算した後ItemCreated、イベントに値を入れる必要がDataBoundありました。) これはかなりハックな感じがします。もっと良い方法があるのではないでしょうか...?

とにかく、重要なビットはこれです:

私のグリッドはグループに分割されているため、GridGroupFooterItems の列 C にも入力する必要があります。この場合、ハッキーなテクニックを使用できません: で必要なフッター セルを見つけてmyGridFooterItem["WidgetsProduced"]いますが、グループ フッター セルを取得できませんmyGridGroupFooterItem["WidgetsProduced"]。辞書ではありません。

を使用してみましmyGridGroupFooterItem.Cells[]たが、これTableCellCollectionには予想よりも多くのセルが含まれているため、整数インデックスでアクセスするのは少し面倒です (特に、これはユーザー定義のレポートであるため、列は任意の順序である可能性があります)。

では、これらのセルに計算を入力するにはどうすればよいでしょうか?

4

4 に答える 4

1

これを試して

Aspx ページ:

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

(または)

コードビハインドページ:

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
于 2011-10-29T05:48:06.900 に答える
1

アイテムのデータバインドイベントは次のようになります

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
}


}
于 2009-12-17T17:34:33.657 に答える
1

一意の名前のインデクサーが ASP.NET AJAX 用の RadGrid の 2009 年第 2 四半期および 2009 年第 3 四半期バージョンで動作するかどうかを再確認し、私のマシンで動作しました。バージョンを確認し、必要に応じてTelerik フォーラムを使用してサポートを求めてください。

ディック

于 2010-01-05T14:48:22.390 に答える