我正在同时使用过滤器行和冻结列功能,但它们似乎存在冲突。以下是问题的视觉效果:
之前(刷新时):
col1 (frozen) | col2 | col3 | col4 | col5 | col6
filter row
search term | | | |
data | data | data | data| data| data
data | data | data | data| data| data
data | data | data | data| data| data
data | data | data | data| data| data
data | data | data | data| data| data
data | data | data | data| data| data
但是在输入过滤器之后
col1 (frozen) |||||||
filter row
new search term|||||||
data |||||||
data |||||||
data |||||||
data |||||||
data |||||||
data |||||||
线||||||
代表“夹在一起”的列 - 它们的数据和宽度已经消失。
似乎存在冲突的两行代码是:
loadComplete: function () {
$.getScript('<%=Url.Content("~/Names/PopulateFilterBar/")%>');
jQuery("#list").jqGrid('setFrozenColumns');
},
第一个语句是对MVC控制器中的一个函数的调用,该函数会产生以下内容:
jQuery("[id=gs_Name]").val("company"); }
如果我删除了第一个命令,那么第二个命令运行得很好但是我在刷新时失去了过滤词的外观。如果我删除了第二个,我将失去冻结的列功能。
有没有人看到过这个错误?
此外,我注意到,当列被冻结时,行的选择似乎并不总是有效。我已经放弃了冻结的列功能,直到我可以解决这个问题。
我在VS2010 ASP.NET,.NET 4,MVC中使用jqGrid,所有最新版本的jQuery。
答案 0 :(得分:0)
更新后的答案:有人建议我拨打所有电话只“一次”更新网格。最初,我使用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>