0

現在のプロジェクトでは、Silverlightプロジェクトの開発にtelerik radコントロールを使用しています。ログインしているユーザーによると、列はデータグリッドに表示されます。一部のユーザーでは、一部のグリッド列が非表示に設定されているため、列間にギャップが生じます。 、ユーザーがログインしているとき、列の間のスペースがよく見えません、誰もがこのギャップを修正する方法を知っていますか、どうもありがとうございました。

コンバーターを使用していますが、

<telerik:GridViewDataColumn DataMemberBinding="{Binding LastQtyNotAvail}" Width="150" IsVisible="{Binding IsColumnVisibleToCustomer, Source={StaticResource PFOViewModel}}" IsReadOnly="True" TextAlignment="Right" HeaderTextAlignment="Center"/> 

public bool IsColumnVisibleToCustomer
 {get
 { 
   return !WebContext.Current.User.IsInRole("Customer");
 }
} public bool IsInRole(string role) { if ((this.Roles == null)) { return false; } return global::System.Linq.Enumerable.Contains(this.Roles, role); 
}
4

2 に答える 2

0

jQueryを使用してグリッド内の列数を確認し、それに基づいてパディングまたはマージンを設定します。私の推測では、列はまだコンテンツなしでそこにあるので、jQueryを使用してそれらを削除することもできます。$( "#column")。html()==""かどうかを確認してください

于 2013-03-08T14:44:08.317 に答える
0

RadGridViewのAutoGeneratingColumnsイベントを処理することをお勧めします。その後、想像した条件に応じて列の生成をキャンセルできます。

Telerikのドキュメントは、私ができる限り良いサンプルを提供します

列の自動生成を使用しない場合は、代わりに(グリッドの)Loadedイベントで列を削除してみてください。

何かのようなもの:

void Grid_Loaded(object sender, RoutedEventArgs e)
{
    RadGridView grid = sender as RadGridView;
    var remove = ((IEnumerable<GridViewDataColumn>)grid.Columns).FirstOrDefault(o => o.UniqueName == "PropertyName");
    if (remove != null)
    {
        grid.Columns.Remove(remove);
    }
}
于 2013-03-11T07:40:57.527 に答える