У нас есть JqGrid с Custom Select Formatter. При изменении выбора мы сохраняем изменения в глобальном var globalGridChanges. globalGridChanges отправляет для сохранения. Мы работаем над типом данных json, без публикации на стороне сервера.Чтобы обновить данные JqGrid с помощью специального форматирования, как и в случае встроенного редактирования JqGrid
jQuery("#jQGrid").jqGrid({
datatype: "jsonstring",
datastr: Data,
height: 400,
scroll: 0,
rowNum: 18,
rowList: [100, 120, 140, 150],
colNames: ['id', 'Issue Name', 'Indicator']
colModel: [ { name: 'id', index: 'id', hidden: true },
{ name: 'SIN', index: 'SIN', width: 200, sortable: true },
{name: 'DI', index: 'DI', width: 125, fixed: true, title: false, formatter: BuildDI }],ignoreCase: true });
// Fortmatter Function
function BuildDI(cellvalue, options, rowObject) {
var s = '<select class="DI" idAttr="+options["rowId"]+" width="100%"><option value=""></option>' <option value="1">A</option>'<option value="2">B</option></select>';
return s;
}
// Biding event to class DI
jQuery(document).on("change", ".DI", function() {
UpSaveData(this);
});
var globalGridChanges= Enumerable.Empty().ToDictionary();
function UpSaveData(obj) {
value = new oData();
id=obj.idAttr;
value.DI=obj.val();
globalGridChanges.Add(id, value);
}
Это прекрасно работает, теперь нам нужно реализовать пользовательский поиск (Excel Like Filter) на jQGrid. Мы планируем создать для этого функцию HeaderSeach, приведен пример кода;
jQuery.extend({ HeaderSeach: function (_this) {
var $grid = _this;
var col = $grid.getGridParam('colModel');
var cn = $grid.getGridParam('colNames');
var colL = col.length;
var gridP = ''
var gridId =jQuery(_this).attr('id');
jQuery(col).each(function (x) {
var c = this;
//gridP = $grid.jqGrid('getGridParam', c['name'])
if (!(c.hidden) && !(c['name'] == 'subgrid')) {
$grid.jqGrid('setLabel', c['name'], createSearchSpan(cn[x], c['name'], gridId));
}
});
}
});
Наш createSearchSpan создает DIV, имеющий кнопки, опции, выжидать поиск событий, которые очень simlar в фильтр окна Excel.
В приведенном выше подходе мы являемся основными данными. Изменения в отдельной переменной globalGridChanges и данные сетки (.p) остаются неизменными. Наш поиск не будет рассматривать измененные данные и будет работать с данными, загружаемыми в jqGrid. Мы можем использовать метод слияния (jqgrid data + globalGridChanges), но это будет специфично для этого подхода.
Для решения этого вопроса мы также хотим обновить данные JqGrid пользовательским форматированием, как в случае встроенного редактирования JqGrid. Попытка избежать обновления данных JqGrid в функции UpSaveData.
Tomcat Спасибо за ваше время, filterToolbar не заполняет наш пользовательский интерфейс, поэтому мы написали одно и его работу. Наша проблема не является фильтром нашей проблемы; как обновить JqGrid Data с помощью специального форматирования, как и в случае встроенного редактирования JqGrid. Теперь я понимаю, что для форматирования отображения для целей и для редактирования мы должны использовать только Formatter, мы также должны использовать редактирование JqGrid. Это решило нашу проблему. – Anil