当使用jqGrid的setFrozenColumns和filterToolbar时,列会消失

时间:2012-03-29 08:31:21

标签: jquery jqgrid

我正在同时使用过滤器行和冻结列功能,但它们似乎存在冲突。以下是问题的视觉效果:

之前(刷新时):

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。

1 个答案:

答案 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>