2012-03-29 525 views
0

我使用的过滤器行和列的冻结,同时配备了,他们似乎会发生冲突。这里是一个可视化的问题:使用的jqGrid的setFrozenColumns和filterToolbar一起,列消失

(上刷新)之前:

COL1(冷冻)| col2 | col3 | col4 | col5 | COL6

过滤行
搜索词| | | |

数据|数据|数据|数据|数据|数据

数据|数据|数据|数据|数据|数据

数据|数据|数据|数据|数据|数据

数据|数据|数据|数据|数据|数据

数据|数据|数据|数据|数据|数据

数据|数据|数据|数据|数据|数据

...

但之后进入过滤器

COL1(冻)|||||||

过滤行 新的搜索字词|||||||

data |||||||

data |||||||

数据|||||||

data |||||||

数据|||||||

数据|||||||

...

的线条||||||代表“夹在一起”的列 - 它们的数据和宽度已经消失。

代码的2行,似乎是在冲突是:

loadComplete:函数(){

$ .getScript(” <%= Url.Content(“〜/名称/ PopulateFilterBar/“)%>');

jQuery的( “#列表”)的jqGrid( 'setFrozenColumns');

},

的第一个语句是在MVC控制器的函数gnerates的下面的呼叫:

jQuery的( “[ID = gs_Name]”)。VAL( “公司”); }

如果我删除第一个命令,第二个工作得很好,但我失去了刷新过滤器单词的外观。如果我删除第二个,我失去了冻结列功能。

有没有人看到这个错误?

此外,我注意到列冻结时行的选择似乎并不总是工作。我已经放弃了冻结列功能,直到我可以解决此问题。

我在VS2010 ASP.NET,.NET 4,MVC中使用jqGrid,所有最新版本的jQuery。

回答

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>