Обновленный ответ: мне предложили сделать все вызовы, чтобы обновить сетку только «один раз». Первоначально я использовал метод LoadComplete для обновления сетки, это было излишне вызывать функции при каждом обновлении. Поэтому я изменил свой код для удаления loadComplete (). Пожалуйста, смотрите новый код ниже.
Я также изменил методологию заполнения панели фильтров - теперь это делается полностью на уровне javascript и только один раз.
Однако, к сожалению, я все еще испытываю мерзкое поведение, описанное выше. Пожалуйста, если кто-нибудь видел это, высоко ценит ваш ответ.
обновленный код:
<script type="text/javascript">
$(function () {
<%= Html.ToJsColumnNames("dynamicGridDataColumnNames", Model.GridColumns ) %>
<%= Html.ToJsColumns("dynamicGridDataColumns", Model.GridColumns, "" ) %>
<%= Html.ToJsShowHideColums("dynamicGridDataShowHideColumns", Model.GridColumns) %>
<%= Html.ToJsGetCurrentFilters("dynamicGridDataCurrentFilters") %>
document.title = "CLEAR Masterlist";
jQuery("#list").jqGrid({
url: '<%=Url.Action("DynamicGridData")%>',
datatype: 'json',
mtype: 'POST',
colNames: dynamicGridDataColumnNames,
colModel: dynamicGridDataColumns,
pager: jQuery('#pager'),
pagerpos: 'center',
rowNum: 100,
rowList: [100, 100000000],
sortname: "Name",
sortorder: "asc",
height: 600,
width: 1235,
loadui: "block",
shrinkToFit: false,
multiselect: true,
multiboxonly: false,
caption: 'List of Names'
});
jQuery("#list").jqGrid('navGrid', '#pager', {
del: false, add: false, edit: false, search: false, refresh: false,
view: false, height: 250, jqModal: false, closeOnEscape: true
});
$("option[value=100000000]").text('All');
jQuery("#list").jqGrid('filterToolbar', { autosearch: true, searchOnEnter: true, stringResult: true
});
jQuery("#list").jqGrid('setFrozenColumns');
var fdiv = jQuery("#list").fhDiv;
var cf = dynamicGridDataCurrentFilters.split("&&");
for (var x = 0; x < cf.length; x++) {
var f = cf[x].split('~');
if (f.length > 1) {
var fld = "[id=gs_" + f[0] + "]";
jQuery(fld, fdiv).val(f[1]);
}
}
});
</script>