在我们目前的项目中,我们使用telerik rad控件开发silverlight项目, 根据登录用户,列显示在datagrid上,对于某些用户,某些网格列设置为不可见,这导致列之间存在间隙,当用户登录时列之间的空间不看起来不错, 有没有人知道如何解决这个差距,非常感谢。
我们正在使用转换器,
<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);
}
答案 0 :(得分:0)
我会使用一些jQuery来检查网格中的列数,并根据它设置填充或边距。我的猜测是列仍然没有内容,所以你也可以删除那些使用jQuery。只需检查$(“#column”)。html()==“”
答案 1 :(得分:0)
最好处理RadGridView的AutoGeneratingColumns事件。然后,您可以根据您想象的任何条件取消生成列。
The Telerik documentation will give you as good a sample as I can
如果您不使用自动生成列,请尝试删除(网格中的)已加载事件中的列。
类似的东西:
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);
}
}