2014-09-10 100 views
0

已在我們的Web應用程序的頁面上實現了jqgrid。一切工作,如顯示記錄和刪除記​​錄,但當我把IE瀏覽器兼容模式進入IE 7或8它需要3到5秒才顯示網格。我也只顯示一條記錄。jqgrid IE 8/7性能

我正在使用jquery 1.6,並試圖升級到最新版本沒有區別。我注意到的一件事是jquery調用了一個名爲clean的函數,這個函數看起來只需要3秒就可以瀏覽這些瀏覽器,但我不知道爲什麼或者它在做什麼。

    var id = $("#<%=DesID.ClientID%>").val(); 
      $.getJSON("data.aspx?id=" + id, function (data) { 

       jQuery("#list2").jqGrid({ 
        datatype: 'jsonstring', 
        colNames: ['', 'Id', 'BodyId', ' Officers Body', 'Alternative Responsible Officer', ''], 
        colModel: [ 
        { 
         name: 'RowID', 
         sortable: false, 
         shrinkToFit: false, 
         width: 10, 
         formatter: function (cellvalue, options, rowObject) { 
          var Rowid = options.rowId; 
          return "<span >" + Rowid + " </span>"; 

         } 
        }, 
        { name: 'Id', index: 'Id', width: 0, hidden: true, sortable: false }, 
        { name: 'BodyId', index: 'BodyId', sortable: false, width: 0, hidden: true }, 
        { name: 'BodyName', index: 'BodyName', sortable: false, shrinkToFit: true }, 
        { name: 'BodyNameRo', index: 'BodyNameRo', sortable: false, width: '100%' }, 
        { 
         name: 'Delete', 
         sortable: false, 
         shrinkToFit: true, 
         width: 20, 

         formatter: function (cellvalue, options, rowObject) { 
          var Rowid = options.rowId; 
          return "<input type='button' value='Delete' class='btn' onClick='deleteRecords(" + Rowid + ");' />"; 

         } 
        } 
       ], 
        beforeSelectRow: function (rowid, e) { 
         return false; 
        }, 
        onInitGrid: function() { 
         // get reference to parameters 
         var p = $(this).jqGrid("getGridParam"); 

         // set data parameter 
         p.datastr = data; 
        }, 
        viewrecords: true, 
        caption: "", 
        autowidth: true, 
        shrinkToFit: true, 
        height: '100%', 
        scroll: false, 
        gridview: true, 
        loadOnce: true 
       }); 

       HiddenJson.val(JSON.stringify(data)); 

    }); 
+0

代碼中有很多奇怪的事情。例如'colModel'有兩個**列,名字相同:'name:'actions''。這是一個錯誤。你使用'sortname:'id'',網格中沒有''id''列。目前還不清楚爲什麼你使用'datatype':'jsonstring'而不是'datatype:'local''。關於你的主要問題:我在我所有的網格中都使用了'。爲什麼你可能需要模擬IE8或IE7並使用任何其他''X-UA-Compatible「'標籤?我建議您另外閱讀[答案](http://stackoverflow.com/a/25532422/315935)。 – Oleg 2014-09-10 10:13:28

+0

嘗試了上面的建議,並且仍然需要5秒來渲染網格。我也試過本地但沒有區別,所以我把我帶回jsonstring。即使在網格中沒有數據也需要5秒。有沒有理由不使用jsonstring? – 2014-09-10 10:51:06

+0

網格不再做任何事情,從那裏獲取數據庫中的選定項目,用戶可以添加或刪除新的或現有的行。由於使用這樣做,存儲在隱藏字段中的json被更新。當頁面發佈時,我接收json並相應地更新數據。 – 2014-09-10 10:54:48

回答

0

我會建議你在你的頁面行

<meta http-equiv="X-UA-Compatible" content="IE=edge"/> 

它通知Internet Explorer中不使用兼容模式爲頁面事件如果Internet Explorer的默認設置是<head>包括使用兼容模式。在兼容模式下運行頁面幾乎只有缺點。查看the documentation以獲取更完整的HTML頁面示例,並從the answer檢查the demo的標題。

+0

謝謝我會嘗試。我剛剛創建了一個空白頁面,只有他的網格和罰款。看起來像在頁面上的其他東西。 – 2014-09-10 12:46:08

+0

僅供參考。我將腳本移動到頁面頂部,並且性能問題消失了。爲什麼在底部是一個我仍然不知道的問題。我會試着找出答案。 – 2014-09-10 14:43:57

+0

@AntonyDelaney:我不確定。我將所有的JavaScript **總是**放在''中,因爲我喜歡將JavaScript代碼與HTML數據清晰地分開。所以我沒有任何使用中間代碼的經驗。順便說一下,你是否嘗試在你的環境中使用'onInitGrid'技巧,**測量**加載網格的總時間(以毫秒爲單位)?查看[演示](http://www.ok-soft-gmbh.com/jqGrid/performane-90000__.htm)行'startTime = new Date();'和'alert(new Date() - startTime );'。 「onInitGrid」提供更好的性能? – Oleg 2014-09-10 14:52:04