3

WPFGridViewがあり、データの一部を合計(フッターとグループの合計の両方)に表示する必要がありますが、実際のデータレコードには表示しないでください。

行のデータに基づいてトリガーを記述して行を非表示にするのは簡単だと思いましたが、TelerikGridViewは仮想化に通常とは異なるパネルを使用しているため、指定された行は非表示になりますが、空白が残ります。行く。

これが私の現在のスタイルです。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からアイテムを削除し、可視性を調整しようとしましたが、これらのオプションはどれも機能していないようです。

誰かが私がこれを達成できる方法を知っていますか?トリガーに基づいて行を非表示(および折りたたみ)にするか、現在のグループ化された式のクエリを取得して、2番目のコレクションをクエリし、結果をグループ合計に表示できるようにする方法を見つけます。私はこれを達成するためにCode-Behindまたは何かハックなものを使用することに問題はありません。

編集

興味深い補足として、高さを1に設定できますが、0には設定できません。1でも多すぎます。何千ものレコードを非表示にできるため、画面に大きな白い領域が残ります。

4

3 に答える 3

2

Telerikのフォーラムにも質問を投稿しましたが、どうやらこれは不可能です。私のオプションは、結果セットをフィルタリングするか、行の高さを1に設定することです。

結果セットをフィルタリングすると、集計が正しくありません。行の高さを1に設定した場合でも、非表示になっているレコードがたくさんあると(そこにある)、空白の領域が大きくなります。

私の最終的な解決策は、グループ化された行の行の高さを1に設定し、グループ化されていないアイテムのみを表示することでした。これは、データがグループ化されていないかどうかをすべてのアイテムに表示することを意味しますが、グループ化すると、非表示のアイテムがあるグリッドをほとんど目立たない1pxの白い線が表示されます。

于 2011-12-01T15:59:27.840 に答える
1

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();
}

同様の質問/回答 は次のとおりです。asp.netでgridView行を非表示にする

于 2011-11-10T15:46:42.097 に答える
1

バインディングコレクションboolに新しいブールプロパティを作成します:Visible {ge; set;}

グリッドビューに配置して完了します。

​&lt;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>
于 2014-08-07T12:53:49.560 に答える