我想做一个图书管理检索,有几个关于参数发送接收的问题,
采用MVC模式,视图有Gird和检索框,检索框的控制器注册了点击事件函数,当点击搜索时,就能取到的数据。
我的问题是
1.这些数据通过什么方式发送到服务器,要动态创建proxy吗?
2.接受到的结果应该有个监听函数,如何注册?
3.在这个注册函数里如何将结果绑定到现存的grid上?请各位亲帮忙解答。最好带例子~谢谢!!

解决方案 »

  1.   

    1.源数据如果是在FWQ上,那么就用proxy对向去处理前台与后台交互,不过4.0以后,处理数据的主要组件store已经同proxy分离了,所以,在MVC模式下,一般proxy组件会出现在model层里,也就是实体对象的一个属性。
    例如:  Ext.regModel('Entity',{
       fields:[{},{}],
       proxy:{
         type:'ajax',
         url:'.jsp',
         reader:{root:'data'}
       }
      })然后在数据层引用他.new Extr.data.Store({
      model:'Entity'
    })2.至于监听,Extjs几乎所有带显示层的组件都可被监听,你只需要设置组件的listeners属性就可以了.
    例如监听store组件信息new Extr.data.Store({
      model:'Entity',
      listeners:{
        'load':function(){//监听数据装载事件     }
      }
    })3.我不是很理解你所说的注册函数具体指什么,不过如果你要将某一个函数运行结果绑定到某一个grid上(或许你希望这个函数的运行结果作为grid的某个属性值),你可以参考下我不久前提的一个贴,希望对撸主学习extjs有所帮助.
    extjs 组件构造器参数传递问题
      

  2.   


    就是类似于ajax里的onreadystatechange函数,当从服务器接收到数据就会自动调这个函数,我就可以在这个函数内绑定数据到grid上了
      

  3.   

    从FWQ接收到数据(响应成功)然后回调某个函数吧,这不就是ajax请求么?
    Ext.Ajax.request({
       url:'.jsp',
       success:function(res){  //响应成功后回调的函数,res为请求回前台的数据对象
         //在这里写逻辑把数据传到grid构造器里面就行了,由构造器去重新分配资源.
       }
    })
      

  4.   


    store.on('beforeload', function() {
    this.baseParams = {
    timeSection : Ext.getCmp('timeSection').getValue().trim(),
    startTime : Ext.getCmp("startTime").getRawValue(),
            endTime : Ext.getCmp("endTime").getRawValue(),
    classId : comboxTree.getValue()
    }});