2009-11-24 2 views
0

DirectStore를 사용하여 표를 채우려고합니다. Firebug에서 데이터를 볼 수는 있지만 데이터가 표시되지 않습니다. 나는 심지어 DataView에 데이터를 덤프하여 GridPanel에서 엉망이되는지 알 수 있었지만 아무것도 표시되지 않았습니다. JSON과 XML 리더를 사용하지 않고 사용해 보았습니다.DirectJNgine DirectStore를 사용하여 ExtJS 그리드 채우기

여기에 무슨 일이 일어날 지 모릅니다. 여기

는 자바 스크립트입니다 :

var RecordDef = Ext.data.Record.create([ 
    {name: 'ProgramName'} 
]); 

var jsonReader = new Ext.data.JsonReader({ 
    root: 'list', 
    fields: [ 
      {name: 'ProgramName', type: 'string'} 
     ] 
}); 

var xmlReader = new Ext.data.XmlReader({ 
    record: "ProgramName" 
}, RecordDef); 

var mystore = new Ext.data.DirectStore({ 
    autoLoad: true, 
    reader: jsonReader, 
    paramsAsHash: false, 
    storeId:'mystore', 
    directFn: DataAction.getProgramNames 
}); 

var grid = new Ext.grid.GridPanel({ 
    renderTo:'grid', 
    store: mystore, 
    columns: [ 
     {id:'ProgramName', header: 'ProgramName', sortable: true, dataIndex: 'ProgramName'} 
    ], 
    stripeRows: true, 
    autoExpandColumn: 'ProgramName', 
    fitToFrame: true, 
    fitContainer: true, 
    height: 200, 
    title: 'Coolness', 
}); 

그리고 이것은 방화범와 같이 내가 다시 받고 있어요 데이터입니다 :

{"result": 
    "{\"list\": 
      [{\"ProgramName\":\"Name1\"}, 
      {\"ProgramName\":\"Name2\"}, 
      {\"ProgramName\":\"Name3\"}, 
      {\"ProgramName\":\"Name4\"}]}", 
"tid":2,"action":"DataAction","method":"getProgramNames","type":"rpc"} 

답변

1

귀하의 결과 값이 문자열이 아닌 객체라는 이름의 목록입니다 배열이 들어 있습니다. 그것은 (전체 "결과"값 주위에 따옴표가 제거되었는지 주) 다음과 같이한다 : 그와

{"result": 
    {\"list\": 
      [{\"ProgramName\":\"Name1\"}, 
      {\"ProgramName\":\"Name2\"}, 
      {\"ProgramName\":\"Name3\"}, 
      {\"ProgramName\":\"Name4\"}]}, 
"tid":2,"action":"DataAction","method":"getProgramNames","type":"rpc"} 

은, 당신도 당신의 따옴표를 모두 이스케이프 할 필요가 없습니다.

+0

D' oh! 우리는 XML과 JSON을 가져 오지 않고, 클래스 중 하나는 JsonHierarchicalStreamDriver()를 사용하여 직접 메소드가 객체 목록을 반환하는 대신 JSON _String_을 반환했습니다. 감사합니다. –

+0

죄송합니다 .. 실제로 했어요 :) 답장을 보내 주셔서 대단히 감사합니다. –