2012-06-25 3 views
0

ExtJS (3)를 사용하고 있으며 JSON을 사용하여 쿼리되는 데이터베이스의 레코드를 사용하여 콤보 상자/드롭 다운을 채우려고합니다.JSON으로 ExtJS 콤보 박스 채우기

var projectDropDown = new Ext.data.Store({ 
    autoLoad: true, 
    url: 'dropdown.json', 
    storeId: 'projectDropDown', 
    idProperty: 'ProjectID', 
    fields: [ 'ProjectID', 'ProjectName' ] 
}); 

그리고 내 콤보 코드 :

{ 
    xtype: 'combo', 
    id: 'ProjectName', 
    fieldLabel: 'Project Name', 
    valueField: 'ProjectID', 
    displayField: 'ProjectName', 
    store: projectDropDown, 
    typeAhead: true, 
    mode: 'local', 
    triggerAction: 'all', 
    emptyText:'Select a Project...', 
    selectOnFocus:true 
} 

json으로이처럼 내 데이터를 반환 :

[ 
    { 
     "ProjectID":"1", 
     "ProjectName":"Mike's Test Project" 
    }, 
    { 
     "ProjectID":"2", 
     "ProjectName":"My Second Test Project" 
    }, 
    { 
     "ProjectID":"3", 
     "ProjectName":"My Third Project" 
    }, 
    { 
     "ProjectID":"6", 
     "ProjectName":"More testing from me" 
    } 
] 

나는 내가 생각 여기

내 JSON 호출입니다 닫기, 나는 연결을 만들기 위해 내가 무엇을 놓치고 있는지 보지 못한다.

어떤 도움을 주셔서 감사합니다.

답변

2

첫 번째 단계는 저장소에 저장소 (또는 저장소 크기 등)를 출력하여 저장소에 데이터가 제대로로드되는지 확인하는 것입니다.

제 생각에는 일부 루트 객체로 반환되는 JSON을 묶어야한다는 것입니다. 그런 다음

var projectDropDown = new Ext.data.Store({ 
    autoLoad: true, 
    url: 'dropdown.json', 
    storeId: 'projectDropDown', 
    reader: new Ext.data.JsonReader(
    { 
     root: 'projects' 
    }), 
    idProperty: 'ProjectID', 
    fields: [ 'ProjectID', 'ProjectName' ] 
}); 

를 JSON이 대신에 내가 반환되는 JSON을 chaning 가야합니까 어떻게

{ 
    "projects" : [ 
     {"ProjectID":"1","ProjectName":"Mike's Test Project"}, 
     {"ProjectID":"2","ProjectName":"My Second Test Project"}, 
     .... 
    ] 
} 
+0

모습으로 돌아 변경 :과 같이 지정된 root 요소와 상점 JSONReader를주는 시도? 나는 그것을 수행하는 방법이나 그것이 무엇인지 불확실합니다. – Mike

+0

@Mike JSON을 반환하는 코드를 제어하지 않습니까? –

+0

@Mike 아니면 실제로 JSON 파일에서 가져온 것입니까? 그냥 텍스트 문서처럼 편집하십시오 –