2013-03-12 76 views
0

我有一個jqgrid重新加載自己在設定的時間間隔,並使用多個搜索選項。所有工作都很好,除了重新加載時,我失去了之前輸入的所有數據和所有數據顯示的過濾/搜索。jqgrid - 我如何堅持先進的多重搜索網格重新加載

如何在重新加載後保留任何過濾/搜索。代碼如下。任何意見表示讚賞:

jQuery(document).ready(function() { 
     jQuery("#list").jqGrid({ 
      datatype: 'json', 
      url: 'GetWorkItems.ashx?view=MyActiveItems', 
      height: "100%", 
      scrollOffset: 0, 
      jsonReader: { 
       root: "rows", 
       page: "page", 
       total: "total", 
       records: "records", 
       repeatitems: false, 
       cell: "cell", 
       id: "Id", 
       userdata: "userdata", 
       subgrid: { 
        root: "rows", 
        repeatitems: true, 
        cell: "cell" 
       } 
      }, 
      colNames: ['', 'ID', 'TopParentID', 'Title', 'Assigned To', 'Status', 'Priority', 'Classification', 'Affected User', 'Support Group', 'Last Modified'], 
      colModel: [ 
        { name: 'Icon', index: 'Icon', align: 'right', width: 18, sortable: false, formatter: iconFormatter, search: false }, 
        { name: 'Id', index: 'Id', width: 45, sorttype: 'int', firstsortorder: 'desc' }, 
        { name: 'TopParentId', index: 'TopParentId', width: 65, align: 'center', sorttype: 'int', hidden: true }, 
        { name: 'Title', index: 'Title', width: 180 }, 
        { name: 'AssignedUser', index: 'AssignedUser', width: 100, align: 'center' }, 
        { name: 'Status', index: 'Status', width: 60, align: 'center' }, 
        { name: 'Priority', index: 'Priority', width: 50, align: 'center' }, 
        { name: 'Category', index: 'Category', width: 120, align: 'center' }, 
        { name: 'AffectedUser', index: 'AffectedUser', width: 100, align: 'center' }, 
        { name: 'Tier', index: 'Tier', width: 100, align: 'center' }, 
        { name: 'LastModified', index: 'LastModified', width: 120, align: 'center', formatter: 'date', formatoptions: { srcformat: 'Y-m-d H:i:s0', newformat: 'm/d/Y h:i A' } 
        }], 
      pager: '#pager', 
      rowNum: 15, 
      width: 980, 
      sortname: 'Id', 
      sortorder: 'asc', 
      viewrecords: true, 
      autowidth: true, 
      gridview: true, 
      loadonce: true, 
      ignoreCase: true, 
      caption: 'All Active Work Items Assigned To Me', 
      onSelectRow: function (id) { 
       //doing a redirect here 
      } 
     }); 

     $.extend($.jgrid.search, { multipleSearch: true, multipleGroup: true, recreateFilter: true, overlay: 0 }); 
     jQuery("#list").jqGrid('navGrid', '#pager', { add: false, edit: false, del: false }); 

     function iconFormatter(cellvalue, options, rowObject) { 
      return '<img src="./images/' + cellvalue + '" alt="workitem" />'; 
     }; 

     var interval = parseInt($("#<%=hidRefreshInterval.ClientID %>").val()); 
     window.setTimeout(refreshGrid, interval); 

     function refreshGrid() { 
      jQuery("#list").jqGrid('setGridParam', { datatype: 'json' }).trigger('reloadGrid'); 
      window.setTimeout(refreshGrid, interval); 
     } 
    }); 
+0

嗡嗡聲,我剛剛在我自己的項目上測試並設置了多個搜索參數,然後觸發重新加載保持所有這些設置,網格默認將控制器的所有搜索參數發回給控制器。你爲什麼需要multipleSearch?爲什麼需要在刷新時重置數據類型? – Mark 2013-03-12 14:04:38

+0

我不認爲'multipleSearch:true'也是必需的。你應該可以有多個過濾器沒有這個(我不親自設置它)。你可能也想擺脫jsonReader,因爲我也不認爲這是必要的。應該有大量清晰的例子供你從中建立起來。最終這是否使你走上了正確的道路? – Mark 2013-03-12 14:59:26

+0

是的,我通過刪除數據類型的重置,並改變JSON閱讀器,如下所示:page:function(){return 1; }, total:function(){return 1; }, records:function(obj){if。($ .isArray(obj)){ return obj.length; } if($ .isArray(obj.items)){ return obj.items.length; } return 0; }, – cmedine 2013-03-12 15:23:37

回答

1

因爲我們計算出'setGridParam', { datatype: 'json' })不需要,所以應該刪除。