2014-09-10 104 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