Telerik MVC Grid.Группировка на клиента - PullRequest
3 голосов
/ 23 августа 2011

Telerik Эксперты, мне нужна ваша помощь, ребята!

В моей сетке данные связываются с клиентом через .ClientEvents .OnDataBinding. Я просто звоню grid.dataBind(customData). Данные отображаются, но группировка, фильтрация, сортировка не работают. Можно ли группировать или фильтровать материал после вызова grid.dataBind?

Сейчас он просто перемещает мои столбцы и не группирует. Сортировка и фильтрация также не выполняется

Не могли бы вы показать мне простой пример группировки без каких-либо вызовов на сервере, пожалуйста?

Ответы [ 3 ]

2 голосов
/ 03 сентября 2011

Вы можете рассмотреть возможность использования функции Режим работы , которая была выпущена в недавнем выпуске Q2 2011 .

Режим работы клиента - Этот новый режим позволяет выполнять такие операции, как сортировка, разбиение по страницам, фильтрация или группировка, только на клиенте, выполняя один начальный вызов на сервер, чтобы получить всеdata.

Реализация клиентского режима:

    Html.Telerik().Grid(Model)
    .Name("YourGrid")
    .DataBinding(dataBinding => dataBinding
         .Ajax()
               .OperationMode(GridOperationMode.Client) // Set to Client
               .Select("Select", "Home")
    )

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

<script type='text/javascript'>

function yourGrid_onDataBinding(e){

    //Grabs your Grid
    var yourGrid = $("#yourGrid").data("tGrid");

    //Removes any existing groupings
    yourGrid.groups = [];        

    //Ensure the column you wish to group by is EXACTLY as it appears in the Grid
    yourGrid.group("yourColumnName"); 
}

</script>

Вот несколько полезных тем на форуме Telerik MVC, которые могут помочь вам решить вашу проблему, если это не является жизнеспособным решением для вас:

на стороне клиентаГруппировка |Имеет большой код для операций группировки на стороне клиента

Связывание данных на стороне клиента |Больше клиентского кода, рассказывает о ClientSideGroupHeaderTemplates

Группировка с OperationMode.Client |Если у вас есть какие-либо проблемы с OperationMode.Client

2 голосов
/ 30 августа 2011

Как я знаю, вы не сможете сделать это без повторного попадания на сервер.Но вы можете сделать это с помощью Ajax throw JavaScript.

Все, что вам нужно сделать, - и эти методы перепривязывают вашу сетку:

// For filtering
grid.filter("propName~eq~youValue"); 

// For grouping 
grid.group("column Title"); 

И позаботьтесь, чтобы это был заголовок столбца, а не имя свойства, поэтомуесли ваше свойство равно «CustomerName», а заголовок столбца - «Customer Name», то вы должны передать заголовок столбца.

В любом случае это вызовет Ajax-контроллер для повторного связывания Grid.


Обновление:

Ваша сетка должна установить .EnableCustomBinding(true), и вы должны украсить метод контроллера, который получит вашу сетку Ajax с [GridAction(EnableCustomBinding = true)] Атрибутом.

Надеюсь, это помогло

1 голос
/ 04 сентября 2011

Я делаю точно то же самое в моей сетке.Я использую 2011.2.629, jQuery 1.6.2.На самом деле я делаю это для внешней фильтрации - поэтому я не использую встроенную фильтрацию - но группировка и сортировка работают для меня.

Нам нужен код, чувак.

Как уже упоминалось, убедитесь, что у вас есть следующий набор:

dataBinding.Ajax().OperationMode(GridOperationMode.Client)

Связана ли ваша сетка во время выполнения?Если нет, привяжите его к пустой viewModel, такой же, как та, которую вы используете в dataBind ().Кроме того, как вы привязываетесь к новому списку?Это может быть что-то в вашем onDataBinding ().

...