2016-12-01 8 views
1

Можно ли сохранить сортировку сетки/фильтр/выделение на grid.refresh() в некотором разумном оптимизированном виде? Мне нужно обновить сетку при событии изменения размера окна, чтобы приспособиться к новому размеру окна. Я предполагаю, что обновление внутренне уничтожает и воссоздает сетку, не учитывая возможные активные сортировки/фильтра/выбора. Поскольку сетка может содержать много данных (виртуальная прокрутка), я бы хотел избежать ненужных запросов, рендеринга и сортировки db. Думаю, я ищу обновление, которое обновит существующие данные.shieldUI фильтр сетки/сохранение сортировки по обновлению сетки

ответ

0

Я нашел решение в методе обновления самостоятельно. Он принимает объекты опций, в которых можно предоставить текущие параметры источника данных для сохранения. Пример для сохранения сортировки и/или фильтра:

var options = { 
    dataSource: $("#grid").swidget().dataSource 
} 
$("#grid").swidget().refresh(options); 

Пожалуйста, воздержитесь, если я ошибаюсь. Для выбора я предполагаю, что можно получить выбранные индексы и повторно выбрать после вызова обновления.

EDIT: фильтр и сортировка сохраняются, но сбрасываются строки фильтров (теряет все активные входные значения). Может ли это быть ошибкой? Как сохранить значения в строке фильтра?

1

Швы как они только что реализовали это - вот example.

Возможно, оно будет включено в следующий выпуск.

Вот код в примере, который делает это:

jQuery(function ($) { 
    $("#grid").shieldGrid({ 
     dataSource: { 
      data: gridData, 
      schema: { 
       fields: { 
        id: { type: Number }, 
        name: { type: String }, 
        company: { type: String }, 
        phone: { type: String }, 
        age: { type: Number }, 
        gender: { type: String } 
       } 
      }, 
      filter: { 
       // create the initial filter in that form 
       and: [ 
        { path: "name", filter: "con", value: "John" } 
       ] 
      } 
     }, 
     filtering: { 
      enabled: true 
     }, 
     paging: true, 
     columns: [ 
      { field: "id", width: "250px", title: "ID" }, 
      { field: "name", title: "Person Name", width: "250px" }, 
      { field: "company", title: "Company" }, 
      { field: "phone", title: "Phone", width: "250px" }, 
      { field: "age", title: "Age" } 
     ] 
    }); 
}); 
+0

пожалуйста размещает свой ответ, используя этот пример. – Sachith