Asp.net Telerik RadGrid中的计算单元';s GridGroupFooter项目
我正在用数据表(Asp.net Telerik RadGrid中的计算单元';s GridGroupFooter项目,asp.net,telerik,radgrid,Asp.net,Telerik,Radgrid,我正在用数据表(System.data.DataTable)中的数据填充Telerik RadGrid。因为我支持其他人的应用程序,所以我不能使用任何其他数据源或显示控件 在我的网格中,我有三列:假设它们是生成的小部件(A列)、错误的小部件(B列)和错误比例(C列)。数据库查询为我提供了这些,并进行计算C=B/A 我在网格底部有一个总计行(TelerikGridFooterItem)。在A列和B列中,Telerik为我计算这些列的总数。我们无法仅从C列计算C列“总计”的正确值:我们必须用(B之和
System.data.DataTable
)中的数据填充Telerik RadGrid。因为我支持其他人的应用程序,所以我不能使用任何其他数据源或显示控件
在我的网格中,我有三列:假设它们是生成的小部件(A列)、错误的小部件(B列)和错误比例(C列)。数据库查询为我提供了这些,并进行计算C=B/A
我在网格底部有一个总计行(TelerikGridFooterItem
)。在A列和B列中,Telerik为我计算这些列的总数。我们无法仅从C列计算C列“总计”的正确值:我们必须用(B之和)/(A之和)填充它
我通过处理RadGrid的DataBound
事件并手动填充页脚中的单元格来实现这一点。(我必须在itemscreated
事件中捕获GridFooterItem
,然后在DataBound
事件中输入值,在它为我自动计算了A和B的总数之后。)这感觉很不对劲-也许有更好的方法
无论如何,重要的是:
我的网格被分成多个组,因此我还需要填充GridGroupFooterItem
s中的C列。在这种情况下,我无法使用我的黑客技术:我正在使用myGridFooterItem[“WidgetsProduced”]
找到我想要的页脚单元格,但我无法使用myGridGroupFooterItem[“WidgetsProduced”]
找到组页脚单元格-它只是不是一本字典
我尝试过使用myGridGroupFooterItem.Cells[]
,但是这个TableCellCollection
包含的单元格比我预期的要多,所以通过整数索引访问它们感觉有点不方便(特别是因为这是一个用户定义的报告,所以列可以是任意顺序)
那么:我如何用我的计算填充这些单元格呢?好吧,如果您使用自定义公式来计算结果,而不是像总和、平均值等标准聚合,那么您可能必须依赖您自己的逻辑。组页脚中的单元格应该可以通过唯一的名称进行索引-我记得以前的Telerik ASP.NET网格版本不支持这一点,但这是在较新的版本中添加的-2009年第2季度或第3季度
Dick您的项目数据绑定事件看起来像
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
}
}
我仔细检查了unique name indexer是否适用于2009年第2季度和2009年第3季度版本的RadGrid for ASP.NET AJAX,它在我的机器上运行正常。检查您的版本,如果需要,请使用获取更多帮助 迪克试试这个 在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
嗯,不知道为什么-1。你能解释一下吗?@Ram-否决投票的提示是“这个答案没有用”,我想这是对这个答案的描述。在我的问题中,我说过使用UniqueName作为索引访问组页脚单元格不起作用。也许这在以后的版本中是固定的,但不幸的是,这对我没有帮助。我如何将文本框(或文字,最好是)放入该单元格?您可以在网格中使用页脚模板:当然,在啊中的示例!我的网格是动态生成的,因此我必须弄清楚如何以编程方式创建模板,但这似乎是一种方法。谢谢。谢谢-是的,看起来我是在2008年第二季度。我看看能不能弄到一个新版本。