2011-11-10 62 views
2

我有一个WPF GridView,部分数据需要显示在总计(Footer和Group总计)中,但不在实际的数据记录中。如何隐藏Telerik的GridView中的行?

我认为根据行数据编写触发器和隐藏行很容易,但事实证明,Telerik的GridView使用异常的面板进行虚拟化,因此虽然指定的行被隐藏,但空白空间留在应该去的地方。

这是我目前的风格。它隐藏的行,但它是等同于使能见度Hidden代替Collapsed(隐藏的项目,但留下的白色空间,它是)

<Style TargetType="{x:Type telerik:GridViewGroupRow}"> 
    <Setter Property="Visibility" Value="Visible" /> 
    <Style.Triggers> 
     <DataTrigger Binding="{Binding Group.Key, RelativeSource={RelativeSource Self}}" Value="SomeValue"> 
      <Setter Property="Visibility" Value="Collapsed" /> 
     </DataTrigger> 
    </Style.Triggers> 
</Style> 

我已经尝试设置的ItemTemplate为null,移除来自Telerik的GridViewVirtualizingPanel的项目,并调整可见性,但这些选项都不起作用。

有没有人知道我可以做到这一点?我想要基于触发器隐藏(和折叠)行,或者找到获取当前分组表达式的查询的方式,以便查询第二个集合并在Group Total中显示结果。我没有使用代码隐藏或什么hackish来完成这个问题。

编辑

作为一个有意思的是,我可以高度设置为1,而不是0。即使1是太多,但,因为我可以隐藏的记录数千这留下一个巨大的白色屏幕上的区域。

+0

你可以使用Snoop来找出你真正需要折叠的控件。 –

+0

@DanielHilgarth我试过了,并没有帮助我。行(折叠的项目)被添加到自定义'GridViewVirtualizingPanel',这是Telerik的自定义控件,显示合并的Row项目的空白。 – Rachel

+0

我有同样的问题,我所做的是创建另一个新的属性,只有getter和它的getter返回的主列表值过滤条件我有 – Jamaxack

回答

2

我贴了a question on Telerik's forums,显然这是不可能的。我的选择是要么过滤结果集,要么将行的高度设置为1.

如果过滤结果集,我的聚合不正确。如果我将行高设置为1,那么如果隐藏了很多记录(有),我仍然会得到很大的空白区域。

我的最终解决方案是将分组行的行高设置为1,并只显示未分组的项目。这意味着所有项目都会显示数据是否分组,但分组时会出现1px的白色线条,这些白色线条几乎不会通过网格中隐藏的项目。

0

如果你能在C#做到这一点,这里的代码自动隐藏行中的数据绑定:

protected void RadGrid1_ItemDataBound(object sender, GridItemEventArgs e) 
{ 
    if (e.Item is GridDataItem) 
    { 
     GridDataItem item = (GridDataItem)e.Item; 
     if (item.GetDataKeyValue("EmployeeID").ToString() == "4") //set your condition for hiding the row 
     { 
      item.Display = false; //hide the row 
     } 
    } 
} 

大多数Telerik控制响应的模式,如:

GridEditableItem editedItem = e.Item as GridEditableItem; 
editedItem.Display = false; 

你也可以做栏目:

GridColumn column = RadGrid1.MasterTableView.GetColumnSafe("CustomerID"); 
if(column != null) 
{ 
column.Visible = !column.Visible; 
RadGrid1.Rebind(); 
} 

这里有一个类似的提问/回答: Hide a gridView row in asp.net

+0

你在哪里挂钩那个事件? WPF的RadGridView没有'ItemDataBound'事件 – Rachel

+1

看到你的编辑...我正在寻找Telerik的WPF GridView的解决方案,而不是他们的ASP.Net GridView – Rachel

1

在你的绑定集合 布尔结交新布尔属性:可见{;设置; GE}在GridView和做

广场。

​<telerik:RadGridView.FilterDescriptors> 
<data:CompositeFilterDescriptor LogicalOperator="Or"> 
<data:CompositeFilterDescriptor.FilterDescriptors> 
<data:FilterDescriptor Member="Visible" Operator="IsEqualTo" Value="True" /> 
</data:CompositeFilterDescriptor.FilterDescriptors> 
</data:CompositeFilterDescriptor> 
</telerik:RadGridView.FilterDescriptors> 
+1

正如我在[我的回答](http:///stackoverflow.com/a/8344300/302677),过滤结果集会导致聚合总数不正确,所以这不适合我。 – Rachel