2011-11-10 101 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