Telerik Rad Grid View Пространство заголовка

В нашем текущем проекте мы используем элементы управления 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); 
}

person Karthik    schedule 07.03.2013    source источник
comment
Как сделать столбцы невидимыми? Вы пытались удалить столбцы вместо того, чтобы скрыть их? Не могли бы вы опубликовать код?   -  person Andrew    schedule 09.03.2013
comment
Я обновил код, я пытаюсь показать все 20 столбцов для основного пользователя и только 10 столбцов для клиента, поэтому есть ли другой способ, кроме использования isvisible, visibilty и удаления столбцов, спасибо за ваш ответ   -  person Karthik    schedule 11.03.2013


Ответы (2)


Вам лучше обработать событие AutoGeneratingColumns RadGridView. Затем вы можете отменить создание столбцов в соответствии с любыми условиями, которые вы себе представляете.

Если вы не используете автогенерацию столбцов, попробуйте вместо этого удалить столбцы в загруженном событии (сетки).

Что-то вроде:

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);
    }
}
person Silver Solver    schedule 11.03.2013
comment
большое спасибо, у меня это сработало, я внес изменения в код, так как мне нужно удалить несколько столбцов, код выглядит так: сетка RadGridView = отправитель как RadGridView; Список ‹GridViewColumn› columnListnew = новый Список ‹GridViewColumn› (); var column0 = grdProducts.Columns [WeeklyUsage]; columnListnew.Add (column0); foreach (столбец var в columnListnew) {grdProducts.Columns.Remove (столбец); } - person Karthik; 12.03.2013

Я бы использовал jQuery, чтобы проверить количество столбцов в сетке и установить отступы или поля на основе этого. Я предполагаю, что столбцы все еще там без содержимого, поэтому вы также можете удалить их с помощью jQuery. Просто проверьте, что $ ("# column"). Html () == ""

person Jon R.    schedule 08.03.2013
comment
Я обновил код. Пожалуйста, взгляните на него и дайте мне знать .. спасибо за вашу помощь .. - person Karthik; 11.03.2013