2012-08-07 49 views
1

我在名爲:studentId,StudentName,studentLastname的窗口中有3個表單字段。如果我輸入studentID,它應該填充studentname和studentlastname的值。我怎樣才能做到這一點?我知道,我必須使用監聽器,但我不確定,我將如何從數據庫中爲此加載值。它應該是AJAx請求而不是表單提交/重新加載。在Extjs中填充表單字段變化4

請讓我知道你是否知道它。我正在使用Extjs 4和Spring MVC。

謝謝。 Jm

回答

1

答案應該走多遠?你也期待服務器端代碼?

在最基本的層面上,你需要定義一個modelproxy

Ext.define('Student', { 
    extend: 'Ext.data.Model', 
    fields: ['id', 'firstName', 'lastName'], 

    proxy: { 
     type: 'ajax', 
     url : 'students' 
    } 
}); 

然後,一旦你進入一個studentId你可以這樣做:

var iStudent = Ext.ModelManager.getModel('Student'); 

iStudent.load(studendId, { 
    success: function(aStudent) { 
     console.log(aStudent); 
     // Feed the student details into the form. 
    } 
}); 
+0

我不需要關於服務器端代碼的任何信息。我只想知道Extjs代碼。我提供了關於我的框架的信息,所以,你可能會明白我的用途。感謝您的信息,我會盡力讓你知道這裏..謝謝! – 2012-08-07 19:46:34

1

分機是功能豐富並提供多種方式來做你想做的事。如果您不準備花時間學習它的工作原理,那麼最好堅持使用JQuery或其他DOM操縱器,或者甚至可以使用原始的javascript和http請求。

您需要知道的一切都在Sencha Website的API文檔中,有很多示例和指南以及相當不錯的論壇。但有很多東西需要學習。

關於服務器端代碼幾乎沒有什麼信息,它不是Sencha教你Spring的工作。您的服務器需要能夠接受請求,並以Ext可以使用的格式返回簡單的「{success = true}」響應或數據。例如。 XML或JSON。還有一個DIRECT API,但我不建議它爲您的第一個應用程序。

比方說,你想使用一個JSON字符串,您的服務器響應會是這樣的

[{"studentId":12345,"studentFirstName":"John","studentLastName":"Smith"}, 
{"studentId":12346,"studentFirstName":"Jenny","studentLastName":"Brown"}, 
{"studentId":12347,"studentFirstName":"Able","studentLastName":"Seaman"}] 

您可以使用此通過Ext.Proxy和Ext.Model來填充Ext.Store(見lzhaki的答案)

你的文本框提供給您通過Ext.ComponentManager,您可以使用您的Ext.Component(S)提供的方法來執行類似.setValue()

當你開始分機方法可以是艱苦的工作,它遠遠超出DOM瑪尼你需要了解它是如何工作的,以獲得它爲程序員提供的價值和應用程序的可維護性。