2011-11-08 28 views
2

我的网格:如何在Telerik MVC Grid聚合头中显示非聚合模型值?

@(Html.Telerik().Grid<eGate.BackOffice.Core.Model.UI.EgateMenuRevisionViewData>() 
     .Name("Grid") 
    .Columns(columns => 
    { 
     columns.Bound(c => c.ParentId) 
      .Aggregate(a => a.Count()).ClientGroupHeaderTemplate(Html.ActionLink("Create a Revision for This Menu", "Edit", "Thing", new { menuid = "<#= Key #>" }, null).ToString()); 
     columns.Bound(c => c.ParentName); 
     columns.Bound(c => c.ThingName); 

    }) 

    .Groupable(grouping => grouping.Groups(groups => { 
     groups.Add(c => c.EgateMenu.EgateMenuId); 
    }).Visible(false)) 

这工作。但它给了我:

Create a revision for this menu 
1   Parent 1  Thing 1.1 
1   Parent 1  Thing 1.2 
1   Parent 1  Thing 1.3 
Create a revision for this menu 
2   Parent 2  Thing 2.1 
2   Parent 2  Thing 2.2 
2   Parent 2  Thing 2.3 

虽然这样的作品,我宁愿东西更直观,如:

Create a thing for parent 1 
Thing 1.1 
Thing 1.2 
Thing 1.3 
Create a thing for parent 2 
Thing 2.1 
Thing 2.2 
Thing 2.3 

问题1: 创建的事情...需要通过的ParentId到动作链接,但它需要显示客户端的ParentName,但一次只有一个存在于聚合中。

问题2: 我想通过Id进行分组而不显示结果中的Id列。但将该列设置为可见(false)会抑制clientgroupheadertemplate。

回答

0

添加Visible(false)到列绑定抑制自身在客户端的HTML甚至被渲染整个列 - 在ClientGroupHeaderTemplate的,因此抑制。

我会尝试添加ParentId作为数据密钥 - 例如,

.DataKeys(keys => 
{ 
    keys.Add(k => k.ParentId); 
} 

我想,如果你使用内置的网格(AJAX或服务器)数据绑定,虽然这只能帮助(用于插入至少)。然而,使用ActionLink ...我在客户端模板中使用mvc html助手的经验并不多 - 但是如果您说这个orignal示例使用了它,不应该像这样工作吗?

columns.Bound(c => c.ParentId).ClientTemplate("") 
     .Aggregate(a => a.Count()).ClientGroupHeaderTemplate(Html.ActionLink("Create a thing for \"<#= ParentName #>\"", "Edit", "Thing", new { menuid = "<#= Key #>" }, null).ToString()); 

我添加了一个空白的ClientTemplate,我认为这将工作,以便该ID不显示。

0

你试过隐藏不需要的列吗?

@(Html.Telerik().Grid<eGate.BackOffice.Core.Model.UI.EgateMenuRevisionViewData>() 
    .Name("Grid") 
.Columns(columns => 
{ 
    columns.Bound(c => c.ParentId).Visible(false); 
     .Aggregate(a => a.Count()).ClientGroupHeaderTemplate(Html.ActionLink("Create a Revision for This Menu", "Edit", "Thing", new { menuid = "<#= Key #>" }, null).ToString()); 
    columns.Bound(c => c.ParentName).Visible(false); 
    columns.Bound(c => c.ThingName); 

}) 
-1

根据Telerik的: 您现在可以使用下列值合计属性:和,最小值,最大值,上次,首先,计数,平均&自定义为每GridBoundColumn如果ShowFooter设置为true,网格将计算这些聚集。在自定义聚合的情况下,网格会引发事件OnCustomAggregate,您可以在其中使用e.Result设置所需的结果。

因此,请为每个GridBoundColumn尝试First,Last或Custom选项,并将ShowFooter属性设置为false。

<telerik:GridBoundColumn Aggregate="First" DataField="CustomerID" DataType="System.String" 
    HeaderText="CustomerID" SortExpression="CustomerID" UniqueName="CustomerID"> 
</telerik:GridBoundColumn> 
+0

-1因为这是Telerik ASP.NET MVC的相关问题,而不是Telerik ASP.NET Ajax – Levitikon