我填充一个Telerik的radgrid控件与从数据表(System.Data.DataTable)数据。正如我支撑别人的应用,我不能使用的任何其它数据源或显示控制。

在我的网格我有三列:让我们说他们的生产(列A),故障小工具(列B)和不完善比例(C栏)小工具。数据库查询提供了这些对我来说并执行计算C =乙/ A

我在网格的底部总计行(一个Telerik的GridFooterItem)。在列A和B Telerik的计算对我来说这些列的总数。我们不能从单独列C的列C的“总”计算正确的值。我们已经与(B的总和)/(A)的总和来填充它

我已经设法通过处理radgrid控件的DataBound事件和手动填充在页脚细胞以做到这一点。 (我不得不赶在GridFooterItem事件ItemCreated,然后把数值到它在DataBound事件后,它会自动计算出A和B的总数为我)。这感觉很哈克 - 也许有一个更好的办法? ?

总之,重要的一点是这样的:

我的网格被划分为组,所以我还需要填充塔C在GridGroupFooterItems。我不能让我的哈克技术,在这种情况下工作:我发现我想myGridFooterItem["WidgetsProduced"]页脚细胞,但我不能让组页脚细胞myGridGroupFooterItem["WidgetsProduced"] - 它只是不字典

我已经使用myGridGroupFooterItem.Cells[]尝试,但是这TableCellCollection包含了两个以上小区比我期望,由整数索引,以便访问它们感觉举步维艰(尤其是因为这是一个用户定义的报告一点点,所以列可以以任何顺序)。

所以:我怎么填充这些细胞与我的计算

有帮助吗?

解决方案

您的项目数据绑定事件看起来像

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年第二季度和2009年第三季度版radgrid控件的ASP.NET AJAX和它的工作在我的机器上。检查您的版本和使用要求更多的帮助 Telerik的论坛,如果需要的话的。

迪克

尝试此

<强>在ASPX页面:

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

(OR)

<强>在后面的代码页:

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

好吧,如果你使用自定义公式计算的结果,而不是标准的聚集像求和,平均值等,你可能必须依靠自己的逻辑。从组页脚的细胞应该是唯一的名称可转位 - 我记住,这是与以前的Telerik的ASP.NET电网版本支持,但是这是在最近的版本中添加 - 第二季度或2009年第三季度

迪克

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top