2014-03-05 3 views
2

나는 다음과 같은 JSON을 반환하는 PHP 스크립트를 가지고는 ExtJS는

[ 
    { 
     "Code":0, 
     "Message":"No problem" 
    }, 
    { 
     "name":"o016561", 
     "status":1, 
     "locks":[ 
     { 
      "ztn":"155320", 
      "dtn":"20131111", 
      "idn":"78" 
     }, 
     { 
      "ztn":"155320", 
      "dtn":"20131111", 
      "idn":"91" 
     } 
     ] 
    }, 
    { 
     "name":"o011111", 
     "status":1, 
     "locks":[ 
     { 
      "ztn":"155320", 
      "dtn":"20131111", 
      "idn":"91" 
     } 
     ] 
    }, 
    { 
     "name":"o019999", 
     "status":0, 
     "locks":[ 

     ] 
    }, 
    { 
     "name":"o020000", 
     "status":0, 
     "locks":[ 

     ] 
    }, 
    { 
     "name":"o020001", 
     "status":0, 
     "locks":[ 

     ] 
    } 
] 

편집 :

a bit smal...

:
이 그리드 이런 식으로 뭔가를 찾아야한다

namestatus을 그리드에로드 할 수있었습니다. - 지금까지는 그렇게 좋았습니다. 그러나 더 중요한 부분은 내 격자에로드되는 locks 배열의 중첩 된 데이터가 필요하지만 코드를 작동시킬 수 없다는 것입니다. 어떤 도움을 주시면 감사하겠습니다.

중요한 경우 ExtJS 4.2를 사용하고 있습니다. 편집 2

:

나는

Ext.define("Locks", { 
    extend: 'Ext.data.Model', 
    fields: [ 
     'ztn', 
     'dtn', 
     'idn' 
    ] 
}); 

Ext.define("ConnectionModel", { 
    extend: 'Ext.data.Model', 
    fields: ['name', 'status'], 
    hasMany: [{ 
     model: 'Locks', 
     name: 'locks' 
    }] 
}); 

var store = Ext.create('Ext.data.Store', { 
    model: "ConnectionModel", 
    autoLoad: true, 
    proxy: { 
     type: 'ajax', 
     reader: { 
      type: 'json', 
      root: 'name' 
     } 
    } 
}); 

을 시도하지만 ... 을 여러 가지 방법으로 잘못 될 듯 ztndtn가 표시 단지로 구분 될 수 있다면 좋지 않을까 같은 열의 공백

+0

어떻게 격자 모양을한다 : 여기

는 그것을위한 프록시? 어떤 열? – Patrick

+0

@Indianer 방금 원래 게시물을 편집했습니다 – p4b4

+0

여기에 모델 정의를 입력하십시오 .. –

답변

3

renderer을 열에 추가 할 수 있습니다. 그 렌더러에서 당신은 여기

는 작업 바이올린의 ... 기록으로 아무것도 할 수 http://jsfiddle.net/Vandeplas/MWeGa/3/

Ext.create('Ext.grid.Panel', { 
    title: 'test', 
    store: store, 
    columns: [{ 
     text: 'Name', 
     dataIndex: 'name' 
    }, { 
     text: 'Status', 
     dataIndex: 'status' 
    }, { 
     text: 'idn', 
     renderer: function (value, metaData, record, rowIdx, colIdx, store, view) { 
      values = []; 
      record.locks().each(function(lock){ 
       values.push(lock.get('idn')); 
      }); 
      return values.join('<br\>'); 
     } 
    }, { 
     text: 'ztn + dtn', 
     renderer: function (value, metaData, record, rowIdx, colIdx, store, view) { 
      values = []; 
      record.locks().each(function(lock){ 
       values.push(lock.get('ztn') + ' ' + lock.get('dtn')); 
      }); 
      return values.join('<br\>'); 
     } 
    }], 
    height: 200, 
    width: 600, 
    renderTo: Ext.getBody() 
}); 

당신이 당신의 백엔드를 제어 할 수 있다면 당신은 더 나은 형태를 변경 귀하의 데이터 중 다음과 같이 더 많이 입력하십시오 :

{ 
    "code": 0, 
    "message": "No problem", 
    "success": true, 
    "data": [ 
     { 
      "name": "o016561", 
      "status": 1, 
      "locks": [ 
       { 
        "ztn": "155320", 
        "dtn": "20131111", 
        "idn": "78" 
       }, 
       { 
        "ztn": "155320", 
        "dtn": "20131111", 
        "idn": "91" 
       } 
      ] 
     }, 
     { 
      "name": "o011111", 
      "status": 1, 
      "locks": [ 
       { 
        "ztn": "155320", 
        "dtn": "20131111", 
        "idn": "91" 
       } 
      ] 
     } 
    ] 
} 

그런 식으로 제어 데이터 (성공, 메시지, 코드 등)를 데이터와 혼합하면 프록시가 올바르게 선택합니다 (경험 한 문제의 원인 일 수 있음). 나는 성공 boolean => Ext를 추가하여 실패 처리기로 간다. 예외 처리시 많은 도움이됩니다.

proxy: { 
    type: 'ajax', 
     api: { 
     read: ___URL____ 
    }, 
    reader: { 
     type: 'json', 
     root: 'data', 
     messageProperty: 'message' 
    } 
} 
+0

... 예기치 않은'Uncaught TypeError : 속성을 읽을 수 없습니다 'Container'undefined'가 나타났습니다. 나는 ExtJS에 익숙하지 않은가? 그래서이게 무슨 뜻이야? 내 예제에서 – p4b4

+0

? 이상한 .. 나는 그것을 재현 할 수 없다. 기본적으로 그것은 의미한다 : 당신은 예를 들어; 'a' 그리고 당신은'a.Container' =>하려고하지만'a'는'undefined '이므로 속성은'Container'가 아닙니다 .. 대부분의 경우 쉼표가 없거나 어리석은 짓 때문이 아닙니다. – VDP

+0

만약 그 시점으로 되돌아 가서 2 열 – VDP

관련 문제