1

我在一个名为:studentId、StudentName、studentLastname 的窗口中有 3 个表单字段。如果我输入 studentID,它应该填充 studentname 和 studentlastname 的值。我怎样才能做到这一点?我知道,我必须使用侦听器,但我不确定我将如何从数据库中加载值。它应该是 AJAx 请求,而不是表单提交/重新加载。

如果你知道,请告诉我。我正在使用 Extjs 4 和 Spring MVC。

谢谢。米

4

2 回答 2

1

答案应该走多远?您是否还期望服务器端代码?

在最基本的层面上,您需要使用代理定义模型

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.
    }
});
于 2012-08-07T14:21:51.153 回答
1

Ext 功能丰富,提供了不止一种方法来做你想做的事。如果您不准备花时间了解它是如何工作的,那么最好还是坚持使用 JQuery 或其他 DOM 操作器,或者甚至是原始的 javascript 和 http 请求。

您需要知道的一切都在Sencha 网站上的 API 文档中,其中有很多示例和指南以及一个非常好的论坛。但是有很多东西要学。

那里关于服务器端代码的信息很少,教你 Spring 不是 Sencha 的工作。您的服务器需要能够接受请求并返回简单的“{success=true}”响应或 Ext 可以使用的格式的数据。例如。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() 之类的方法

当您开始使用 Ext 时可能是一项艰巨的工作,它远远超出了 DOM 操作,您需要了解它是如何工作的,以获得它为程序员提供的价值和您的应用程序的可维护性。

于 2012-08-07T17:53:51.077 回答