0

在我们当前的项目中,我们正在使用telerik rad控件来开发silverlight项目,根据登录用户,列显示在数据网格上,对于某些用户,一些网格列被设置为不可见,这导致列之间的间隙,当用户登录时,列之间的空间看起来不太好,有没有人知道如何解决这个差距,非常感谢。

我们正在使用转换器,

<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 文档将为您提供尽可能好的样本

如果您不使用列的自动生成,请尝试删除(网格的)加载事件中的列。

就像是:

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 回答