Telerik RadGrid - Как отключить сортировку для столбца? - PullRequest
2 голосов
/ 28 апреля 2009

В их документации Telerik говорит, что есть способ отключить сортировку для определенного столбца с помощью свойства AllowSorting. Я смотрю на Telerik.Web.UI.GridColumn члены и нет свойства AllowSorting. Существует свойство Sortable, но оно защищено и должно быть переопределено. Итак, что мне использовать, чтобы отключить сортировку для определенного столбца?

В GridBoundColumn есть свойство AllowSorting, но в этом случае я использую GridTemplateColumn. Есть ли способ отключить сортировку на GridTemplateColumn?

Ответы [ 6 ]

6 голосов
/ 28 апреля 2009

Атрибут AllowSorting доступен из представления источника / разметки в Visual Studio. Например (упрощенно):

    <tr:RadGrid>
    <MasterTableView>
        <Columns>
            <tr:GridBoundColumn DataField="field" HeaderText="Description" 
                 AllowSorting="false" />
        </Columns>
    </MasterTableView>
    </tr:RadGrid>

Я не знаю, работает ли это для вас? Я еще не создал свои сетки из файлов с выделенным кодом, поэтому, если вы это делаете, я не могу с легкостью вам помочь Но вышесказанное работает для меня.


EDIT:

Ах, из исходного вопроса было не ясно, что вы использовали столбец GridTemplate. Так как вы сейчас используете свойство SortExpression, разве для вас не подходит тот же атрибут в разметке? Итак:

    <tr:RadGrid>
    <MasterTableView>
        <Columns>
            <tr:GridTemplateColumn HeaderText="Description" DataField="field" 
                SortExpression="">
                <!-- template here etc. -->
            </tr:GridTemplateColumn>
        </Columns>
    </MasterTableView>
    </tr:RadGrid>
4 голосов
/ 28 апреля 2009

Хорошо, я получил желаемый эффект, я отключил сортировку, установив для свойства GridTemplateColumn SortingExpression пустое значение

Grid.Columns.FindByUniqueName("Type").SortExpression = string.Empty;

Это похоже на взлом. Почему нет явного свойства, чтобы отключить сортировку? Ну что ж. Это работает.

Если вы знаете лучший способ, дайте мне знать.

Спасибо.

3 голосов
/ 08 марта 2012

Telerik теперь имеет новое свойство с именем HeaderButtonType (также существует в столбце шаблона!), Для которого можно установить значение «Нет» для отображения метки вместо кнопки ссылки для текста заголовка столбца.

0 голосов
/ 23 марта 2015

Как указано в Telerik Docs :

Если вы хотите отключить сортировку только для определенного столбца, вы можете настроить для свойства столбца IsSortable значение False:

<telerik:GridViewColumn IsSortable="False" />
0 голосов
/ 27 июня 2009

Вы всегда можете указать свой собственный шаблон заголовка с меткой в ​​качестве заголовка вместо кнопки ссылки, если вы используете GridTemplateColumn. Мы немного поработали, но это прекрасно работает. Если вы собираетесь отключить сортировку для всех ваших GridTemplateColumns, тогда ваш «взлом» будет лучшим.

0 голосов
/ 28 апреля 2009

Вот пример, показывающий, как отключить сортировку для определенного столбца.

Обратите внимание на свойство AllowSorting на уровне сетки (для всех столбцов).

Затем в коллекции Columns обратите внимание, как она отключена для этого конкретного столбца.

<telerik:RadGrid ID="RadGrid1" runat="server" AllowSorting="True">
    <HeaderContextMenu>
        <CollapseAnimation Duration="200" Type="OutQuint" />
    </HeaderContextMenu>
    <MasterTableView>
        <RowIndicatorColumn>
            <HeaderStyle Width="20px" />
        </RowIndicatorColumn>
        <ExpandCollapseColumn>
            <HeaderStyle Width="20px" />
        </ExpandCollapseColumn>
        <Columns>
            <telerik:GridBoundColumn AllowSorting="False" UniqueName="column">
            </telerik:GridBoundColumn>
        </Columns>
    </MasterTableView>
    <FilterMenu>
        <CollapseAnimation Duration="200" Type="OutQuint" />
    </FilterMenu>
</telerik:RadGrid>

Для TemplateColumns я бы попробовал отключить сортировку на уровне сетки и просто включить ее в нужных столбцах. Таким образом, вам не нужно ничего делать для TemplateColumn, поскольку он будет отключен по умолчанию.

...