2009-06-29 3 views
4

누군가가이 사실에 대해 통찰력을 갖고 있는지 궁금해했습니다. 있는 jqGrid이 JSON 문자열 매우 행복하다 :jqGrid - jsonreader를 어떻게 구성합니까 (Jayrock와 함께 사용하기 위해)?

{'page':'1','total':1,'records':'4','rows':[{'id':1,'title':'Story Manager','assigned':'2009-06-22T10:52:28.0687738-05:00','due':'2009-07-29T10:52:28.0687738-05:00','completed':'2009-07-14T10:52:28.0687738-05:00'},{'id':2,'title':'Analysis','assigned':'2009-06-22T10:52:28.0687738-05:00','due':'2009-07-29T10:52:28.0687738-05:00','completed':'2009-07-14T10:52:28.0687738-05:00'},{'id':3,'title':'Narrative','assigned':'2009-06-22T10:52:28.0687738-05:00','due':'2009-07-29T10:52:28.0687738-05:00','completed':'2009-07-14T10:52:28.0687738-05:00'},{'id':4,'title':'Graphic','assigned':'2009-06-22T10:52:28.0687738-05:00','due':'2009-07-29T10:52:28.0687738-05:00','completed':'2009-07-14T10:52:28.0687738-05:00'}]} 

Jayrock이 (.NET JSON-RPC 프레임 워크)로 JSON 문자열을 제공 :

{id:'-1','result':{'page':'1','total':1,'records':'4','rows':[{'id':1,'title':'Story Manager','assigned':'2009-06-22T10:52:28.0687738-05:00','due':'2009-07-29T10:52:28.0687738-05:00','completed':'2009-07-14T10:52:28.0687738-05:00'},{'id':2,'title':'Analysis','assigned':'2009-06-22T10:52:28.0687738-05:00','due':'2009-07-29T10:52:28.0687738-05:00','completed':'2009-07-14T10:52:28.0687738-05:00'},{'id':3,'title':'Narrative','assigned':'2009-06-22T10:52:28.0687738-05:00','due':'2009-07-29T10:52:28.0687738-05:00','completed':'2009-07-14T10:52:28.0687738-05:00'},{'id':4,'title':'Graphic','assigned':'2009-06-22T10:52:28.0687738-05:00','due':'2009-07-29T10:52:28.0687738-05:00','completed':'2009-07-14T10:52:28.0687738-05:00'}]}} 

, 즉 그것은 작동하는 JSON 주위에 "{id:'-1','result':{ /* ... snip ... */ }}"래퍼를 추가합니다.

JSON 결과의 구문 분석을 시작하기 위해 jqGrid의 jsonReader 속성을 올바른 위치로 가리 키도록 할 여지가 있습니까? 나는이 모든과 시간의 지옥을 가지고 있어요 난 당신의 대답은, Stuntz에 대한 ... 덕분에 빠른 예를 게시하고 싶었

--- 편집 ---

:). 다음 예는 .NET, Jayrock, jQueryjqGrid입니다. 위의 JSON과 작동합니다. 콘텐츠 유형을 설정해야하는지 여부는 잊어 버립니다.

var lastsel; // last row selected (for editing)  

jQuery(document).ready(function(){ 
    jQuery("#mygrid").jqGrid({ 
     contentType: "text/plain; charset=utf-8", 
     datatype: function(postdata) 
     { 
      $.ajax({ 
       url: 'http://localhost:2064/StoryManager/StoryManager.ashx/getPageItemRoles?id=3', 
       data: postdata, 
       complete: function(response, status) 
       { 
        if(status=='success') 
        { 
         var mygrid = jQuery("#mygrid")[0]; 
         var o = eval("(" + response.responseText + ")"); // TODO don't use eval. it's insecure, but older browsers support it... 
         mygrid.addJSONData(o.result); 
        } 
       } 
      }) 
     },     
     colNames:['ID', 'Title', 'Assigned To', 'Assigned', 'Due', 'Completed'], 
     colModel:[ 
      {name:'id', label:'ID', jsonmap:'id', hidden: true, editrules: { edithidden: true }}, 
      {name:'title', jsonmap:'title', editable: true}, 
      {name:'assignedto', label:'Assigned To', jsonmap:'assignedto', editable: true}, 
      {name:'assigned', jsonmap:'assigned', editable: true}, 
      {name:'due', jsonmap:'due', editable: true}, 
      {name:'completed', jsonmap:'completed', editable: true} 
     ], 
     jsonReader: { 
      repeatitems: false 
     } 
    }); 
}); 
+0

안녕하세요, 솔루션 파일을 공유 할 수 있습니까? 나는 Jaryrock과 Jqgrid를 사용하여 성공하지 못한 채 며칠 동안 노력해 왔습니다. – Josh

+0

안녕하세요, 저는 실제로 JSON을 사용하여 XML을 사용하지 않았습니다. 당신이 그것에 관심이 있다면 나는 온라인에 뭔가를 넣을 수 있습니다. Jayrock/JSON의 경우이 방법으로 수행 할 수 있다고 제안되었습니다. http://forums.asp.net/t/1430017.aspx – wprl

답변

2

아니요, jsonReader를 통해이를 수행 할 수 없습니다. 내부적으로 격자는 다음을 수행합니다.

 ts.p.page = data[ts.p.jsonReader.page]; 

... 점선 하위 속성에는 작동하지 않습니다.

대신 데이터 유형을 함수로 설정하여 수동으로 그리드 데이터를 가져와야합니다. $ .ajax를 사용하여 데이터를 가져와 grid.addJsonData를 호출하면 그리드처럼 모든 응답을 전달하는 대신 응답의 하위 속성을 전달할 수 있습니다.

+0

제대로 작동한다고 생각하니? 전에 비슷한 일을 해 봤어? 내가 뭔가를 놓치지 않으면, 나를 위해 작동하지 않는 것 같아요 ... – wprl

+0

jsonReader를 구성하지만 당신처럼하지는 않습니다. 나는 출처를 확인했는데, 나는 그 문제를 볼 수있다. 나는 갱신 할 것이다. –

+0

감사합니다. 이번에는 $ .ajax 표기법이 ASP.NET의 일부라고 생각했습니다. 나처럼 보이고 jQuery 문서는 혼자있는 시간이 필요합니다! – wprl

1

이 게시물과 링크는 정말 도움이되었습니다. 나는 아직이 어떻게 작동하는지에 대한 명확한 이해가없는 있지만, 난 그냥 누군가가 그들의 고통 :)이 GetRecords라는의 반환 JSON입니다

완화 시키는데 도움이 게시 것이라고 생각 :

을 { "id": - 1, "결과": { "페이지": "1", "합계": "1", "레코드": "2", "행": [{ ""id ":"13 " "invdate": "2007-10-06", "name": "클라이언트 3", "금액": "1000.00", "세금": "0.00", "합계": "1000.00" ""id ":"12 ","invdate ":"2007-10-06 ","name ":"클라이언트 2 ","금액 ":"700.00 ","세금 ":"140.00 " , "total": "840.00", "note": "no 세금"}]}}

,

그리고이 작업 코드 : 평가를 사용하는 것은 안전하지 않은 이유 그런데

jQuery(document).ready(function(){ 
    jQuery("#list4").jqGrid({ 
     contentType: "text/plain; charset=utf-8", 
     datatype: function(postdata) 
     { 
      $.ajax({ 
       url: 'http://localhost/Booga/Baba.ashx/getRecords', 
       data: "{}", // For empty input data use "{}", 
       dataType: "json", 
       type: "GET", 
       contentType: "application/json; charset=utf-8", 
       complete: function(response, status) 
       { 
        if(status=='success') 
        { 
         var mygrid = jQuery("#list4")[0]; 
         var o = eval("(" + response.responseText + ")");// TODO don't use eval. it's insecure, but older browsers support it... 
         mygrid.addJSONData(o.result); 
        } 
       } 
      }) 
     },     
    colNames:['Inv No','Date', 'Client', 'Amount','Tax','Total','Notes'], 
    colModel:[ 
     {name:'id',index:'id', width:55}, 
     {name:'invdate',index:'invdate', width:90, jsonmap:"invdate"}, 
     {name:'name',index:'name asc, invdate', width:100}, 
     {name:'amount',index:'amount', width:80, align:"right"}, 
     {name:'tax',index:'tax', width:80, align:"right"},  
     {name:'total',index:'total', width:80,align:"right"},  
     {name:'note',index:'note', width:150, sortable:false}  
    ], 
     jsonReader: { 
      repeatitems: false 
     } 
    }); 
}); 

는, 아는 사람 있나요? 내 코드에 대한 주석을 보라. 나는 forum.asp 링크에서 그 부분을 움켜 잡았다.

1

.l.e. JSON을 감싸는 "{id : '- 1', 'result': {/ * ... snip ... * /}} 래퍼를 추가합니다.

이것은 JayRock이 SMD 응답을 처리하는 방식의 부작용입니다. "id"는 "응답 식별자"이며 비동기 통신을위한 보조 장치입니다.

비동기 요청을 여러 번 실행하면 (응답을 기다리지 않고도) "요청 ID"를 지정할 수 있고 JayRock이이를 존중합니다 ... 응답을 나열 할 수 있습니다. 요청과 함께.

조금 이해가되기를 바랍니다.

관련 문제