Telerik RadGrid показывает GridExpandColumn с списком доменных сущностей.

Вопрос или проблема

Я использую Telerik RadGrid для отображения списка доменных сущностей. В столбце подразумевается добавление (нет заголовка столбца, показывает иконку с треугольником/стрелкой, которая ничего не делает).

скриншот столбцов сетки

Я считаю, что этот столбец является “GridExpandColumn”

Telerik.Web.UI.GridExpandColumn Этот столбец появляется, когда у сетки есть иерархическая структура, чтобы облегчить функциональность развертывания/схлопывания. Столбец развертывания всегда размещается перед всеми другими столбцами содержимого сетки и не может быть перемещен.

Мои сущности действительно содержат одно свойство, которое является коллекцией, но это не то, что я когда-либо хотел бы показывать как детальный вид.

В результате экспериментов я смог определить, что если я не вызываю radGrid.DataBind() после установки radGrid.DataSource, этот столбец не показывается.

Кто-нибудь (а) знает, где/если это задокументировано и (б) есть ли другой способ (кроме создания DTO желаемых свойств без каких-либо коллекций или явного удаления столбца в коде за кулисами) предотвратить его создание? У меня AutoGenerateColumns=”false”, а список столбцов на странице aspx представляет собой комбинацию столбцов GridTemplateColumn и GridBoundColumn).

Еще один забавный момент: Мое приложение на самом деле состоит из двух приложений, одно на c# и одно на vb, приложение vb.net не имеет той же проблемы с лишним столбцом, несмотря на вызов radGrid.DataBind() сразу после установки источника данных.

Ответ или решение

При использовании Telerik RadGrid для отображения списка доменных сущностей возникает проблема, связанная с присутствием непонятного столбца "GridExpandColumn". Этот столбец, который не имеет заголовка и отображает иконку разворачивания/сворачивания, может вызывать путаницу, особенно если у вас нет намерения использовать иерархическую структуру данных. В данной статье мы подробно рассмотрим, почему возникает этот столбец и как с ним можно работать.

Причины появления GridExpandColumn

  1. Иерархические структуры данных: По умолчанию, если ваш объект содержит коллекцию (например, список связанных сущностей), Telerik RadGrid может автоматически интерпретировать это как необходимость для развертывания/свертывания связанных данных. Хотя в вашем случае нет желания отображать подробности, RadGrid по-прежнему пытается включить эту функциональность.

  2. Выбор источника данных: Когда вы привязываете источник данных к RadGrid и вызываете метод DataBind, RadGrid автоматически проверяет, есть ли у ваших сущностей связанные данные, и исходя из этого создает столбец для развертывания.

  3. Отсутствие документации: Некоторые аспекты работы RadGrid с иерархическими данными не всегда подробно документированы, что может вызвать недоумения у разработчиков.

Решения по устранению GridExpandColumn

Существует несколько способов решения данной проблемы, которые не требуют создания DTO или удаления столбца в коде:

  1. Настройка источника данных: Если возможно, измените структуру своих доменных сущностей так, чтобы RadGrid не интерпретировал коллекцию как иерархическую. Это может быть достигнуто с помощью внедрения интерфейсов, которые скрывают связанные коллекции.

  2. Настройка свойств RadGrid:

    • Убедитесь, что свойство AutoGenerateColumns установлено в false. Это предотвратит автоматическое создание любых дополнительных столбцов, включая GridExpandColumn.
    • Проверьте, установлено ли свойство MasterTableView.ParentRelations.length на пустое значение, чтобы явно указать, что нет родительских отношений.
  3. Управление событием PreRender: В обработчике события PreRender вы можете программно скрыть GridExpandColumn:

    protected void RadGrid1_PreRender(object sender, EventArgs e)
    {
       RadGrid radGrid = (RadGrid)sender;
       if (radGrid.MasterTableView.Columns.FindByUniqueName("GridExpandColumn") != null)
       {
           radGrid.MasterTableView.Columns.FindByUniqueName("GridExpandColumn").Visible = false;
       }
    }
  4. Обратитесь к настройкам визуализации: Убедитесь, что никакие свойства визуализации не созданы для выполнения автоматического отображения GridExpandColumn для любых связанных структур.

О различиях между приложениями

Замеченный вами факт о том, что ваше приложение на VB.Net не демонстрирует данной проблемы, может быть связано с различиями в конфигурациях, версиях библиотек или даже настройках сборок проектов. Обратите внимание на то, какие версии Telerik используются в обеих сборках и сравните конфигурацию RadGrid в каждом приложении. Также стоит проверить, не используются ли разные механизмы привязки данных или настройки в момент выполнения.

Заключение

Существует множество факторов, способствующих появлению стобца GridExpandColumn в Telerik RadGrid. Понимание структуры ваших доменных сущностей и правильная настройка RadGrid являются ключевыми для устранения данной проблемы. Предложенные рекомендации и методы помогут вам оптимизировать отображение данных и избавить вас от нежелательных столбцов, сохраняя при этом эффективность вашего кода.

Оцените материал
Добавить комментарий

Капча загружается...