2012-02-16 42 views
0

我有一個包含2個comobox字段的表單,它們是鏈接的combox字段。Extjs 4在表單加載事件中設置了combox值

章節和吸取

當用戶選擇一個章節,在該章課程列表將被顯示。

如何根據EXTjs中的組合章節篩選組合課程4.如果選擇了章節組合,則只有組合課程應顯示課程,否則應爲空。

以及如何設置表單數據從服務器加載並填充到表單域時選擇的cmobo值。

章存儲

var chapter_store = Ext.create('Ext.data.Store', { 
    autoLoad: true, 
    fields: ['chapter_id', 'chapter_name'], 
    proxy: { 
     type: 'ajax', 
     url: BASE_URL + 'courses/chapters/getChaptersCombo/' + course_id, 
     actionMethods: { 
      read: 'POST' 
     }, 
     noCache: false, 
     reader: { 
      type: 'json', 
      root: 'results', 
      totalProperty: 'total' 
     } 
    }, 
    storeId: 'chapter_id' 
}); 

教訓店

var lesson_store = Ext.create('Ext.data.Store', { 
    autoLoad: true, 
    fields: ['lesson_id', 
      //'chapter_name', 
      'lesson_name', 'lc_relation_id' 
      ], 
    proxy: { 
     type: 'ajax', 
     url: BASE_URL + 'courses/lessons/getLessonsCombo/' + course_id, 
     actionMethods: { 
      read: 'POST' 
     }, 
     noCache: false, 
     reader: { 
      type: 'json', 
      root: 'results', 
      totalProperty: 'total' 
     } 
    }, 
    storeId: 'lesson_id' 
}); 

形式鏈接連擊

var quiz_form = Ext.create('Ext.form.Panel', { 
    items: [{ 
     xtype: 'combobox', 
     //readOnly:true, 
     id: 'test_chapter_combo', 
     name: 'test_chapter_combo', 
     //hiddenName: 'test_linkchapter_val', 
     displayField: 'chapter_name', 
     valueField: 'chapter_id', 
     fieldLabel: 'Select Chapter', 
     allowBlank: false, 
     blankText: 'Chapter is required', 
     triggerAction: 'all', 
     queryMode: 'remote', 
     store: chapter_store, 
     selectOnFocus: true, 
     listeners: { 
      select: { 
       fn: function (combo, value) { 
        var comboLesson = Ext.getCmp('test_lesson_combo'); 
        comboLesson.clearValue(); 
        lesson_store.load({ 
         params: { 
          chapters_id: combo.getValue() 
         } 
        }); 
       } 
      } 
     } 
    }, { 
     xtype: 'combobox', 
     //readOnly:true, 
     id: 'test_lesson_combo', 
     name: 'test_lesson_combo', 
     //hiddenName: 'test_linklesson_val', 
     displayField: 'lesson_name', 
     valueField: 'lc_relation_id', 
     mode: 'local', 
     fieldLabel: 'Link To Lesson', 
     allowBlank: false, 
     blankText: 'Lesson is required', 
     triggerAction: 'all', 
     store: edu_lesson_store, 
     queryMode: 'remote' 
    }] 
}); 

裝載形式從服務器數據

quiz_form.getForm().load({ 
    url: BASE_URL + 'courses/getCourseTest/' + quiz_id, 
    method: 'POST' 
}); 

回答

1

我不知道你使用的服務器端技術是的,但我敢肯定,你可以得到一些啓發/指導以下2個大環節:

HTH!

+0

我使用PHP-codeigniter作爲服務器端技術。現在過濾工作正常。當我從服務器加載表單數據(比如說已經保存的表單的編輯模式)並使用遠程存儲時,如何設置組合框中的值。如果爲combox使用陣列數據存儲,則在從服務器加載表單數據時,會自動將值選擇到combox中。 – nani1216 2012-02-16 12:11:29

+0

嘗試將組合配置中的name屬性設置爲「chapter_id」,然後使用嘗試使用form.loadRecord(model_record),表單將綁定模型記錄中的值到名稱=「model_field_name」的表單字段,更多loadRecord()這裏的信息http://docs.sencha.com/ext-js/4-0/#!/api/Ext.form.Panel-method-loadRecord – 2012-02-16 12:50:24