2014-09-10 2 views
0

은 웹 응용 프로그램의 페이지에 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 : 'local'대신에'datatype : 'jsonstring'을 사용하는 이유가 불분명합니다. 귀하의 주요 질문 : 나는 모든 그리드에서''를 사용합니다. IE8이나 IE7을 시뮬레이트하고 다른 어떤 "X-UA 호환"태그를 사용해야하는 이유는 무엇입니까? 나는 당신이 [대답] (http://stackoverflow.com/a/25532422/315935)을 읽을 것을 권한다. – Oleg

+0

그리드를 렌더링하려면 위의 권장 사항과 5 초가 걸렸습니다. 나는 또한 지역을 시도했지만 아무런 차이가 없었으므로 나는 jsonstring으로 되돌아 갔다. 짝수는 그리드에 데이터가 없으면 5 초가 걸립니다. jsonstring을 사용하지 않아야하는 이유가 있습니까? –

+0

그리드는 데이터베이스에서 선택한 항목을 가져 오는 것보다 더 많은 작업을 수행하지 않으므로 사용자는 새 행이나 기존 행을 추가하거나 삭제할 수 있습니다. 사용하면 숨겨진 필드에 저장된 json이 업데이트됩니다. 페이지가 게시되면 json을 가져 와서 그에 따라 데이터를 업데이트합니다. –

답변

0

나는 당신의 페이지 라인

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

그것은 인터넷 익스플로러의 기본 설정 인 경우 페이지 이벤트에 대한 호환 모드를 사용하지 않는 Internet Explorer를 알려준다의 <head>에 포함 당신을 추천 할 것입니다 호환 모드 사용. 호환성 모드에서 페이지를 실행하면 대부분 단점이 발생합니다. HTML 페이지의 전체 예제를 보려면 the documentation을보고 의 헤더를 the answer에서 확인하십시오.

+0

감사합니다. 방금 그리드와 그 벌금이있는 빈 페이지를 만들었습니다. 페이지의 다른 것처럼 보입니다. –

+0

정보를 위해. 스크립트를 페이지 상단으로 이동 시켰고 성능 문제가 사라졌습니다. 왜 밑바닥에 있었는지는 아직 모르는 문제였습니다. 나는 노력할 것이다. –

+0

@AntonyDelaney : 잘 모르겠습니다.나는 모든 데이터를 항상 ** 에 넣는다. 왜냐하면 나는 JavaScript 코드와 HTML 데이터를 명확히 나누기를 좋아하기 때문이다. 따라서 중간에 코드를 사용한 경험이 없습니다. 그건 그렇고, 당신의 환경에서'onInitGrid' 트릭을 사용하려고했는데 ** 그리드 로딩을위한 총 시간을 ms로 측정 했습니까? 'startTime = new Date();'와'alert (new Date() - startTime)'줄을 [데모] (http://www.ok-soft-gmbh.com/jqGrid/performane-90000__.htm));'. 'onInitGrid'보다 나은 성능으로 트릭을 제공합니까? – Oleg