ExtJS 4 - 如何使用带有表格中最新值的参数加载网格存储?

时间:2011-09-26 13:38:13

标签: forms extjs load grid store

我有一个窗口,顶部是搜索表单,底部是网格。

用户可以在搜索表单中输入值,然后单击按钮 - 获取记录。

点击此按钮,我通过以下列方式将表单字段中的值作为参数传递来加载网格存储:

store.load({
    params:{
        key1:Ext.getCmp('field1').getValue();
    }
});

我尝试在商店代理本身提供参数,但遗憾的是它总是占用初始值(表单呈现时的值),而不是用户在表单字段中输入的最新值。以下是我在创建商店时为params赋值的方法:

extraParams:{
    key1:Ext.getCmp('field1').getValue();
}

我想在两件事情上寻求指导:

一个。在定义商店时,我可以确保商店在查询服务器之前从表单字段中获取最新/当前值,这样我在调用加载函数时不必提供这些值吗?

这更加必要,因为我在底部有一个分页工具栏,它带有一个刷新按钮(以及下一个,最后一个,上一个,第一个导航图标)。

现在,每当用户点击刷新(或任何导航图标)时,商店就会在没有查询参数的情况下加载。

因此第二件事是:

湾如果'a'的答案是 - 在调用加载函数时手动将最新值传递给参数 - 那么我如何编写“刷新”按钮和导航图标(即下一个,最后一个,上一个和第一个)的处理程序分页工具栏,以便我可以将最新的表单值传递给加载函数。

感谢您提前提供任何帮助。

PS:我正在使用ExtJS 4。

3 个答案:

答案 0 :(得分:4)

yourStore.on('beforeload',function(store, operation,eOpts){
        operation.params={
                  status:cmbStatus.getValue(),
                  value:txtBuscarPor.getValue(),
                  empresa:'saasd',
                  app:'dsads'
            };

},this);

答案 1 :(得分:0)

与您的问题(b)相关(并且因为您在评论部分特别要求这样做):

我看到只有一种标准方法可以挂钩PagingToolbar按钮处理程序,这是非常有限的。

Ext.toolbar.Paging在实际更改当前页面之前触发'beforechange'事件。见API docs。返回false的侦听器将停止页面更改。

所有其他方法都需要扩展Ext类,如果ComboBox可以更容易地使用您自己的BoundList实现(这是呈现下拉列表的类)或通过配置参数,这将不会成为问题到BoundList resp。分页工具栏。

我试图将这种缺乏灵活性的内容放在Ext留言板上,但几乎被忽略了。

答案 2 :(得分:0)

可能的解决方案是使用商店的“beforeload”事件并在其中提供参数列表。这样,无论何时加载存储,都会触发其beforeload事件,并且拾取的值始终是最新的。希望这有助于某人寻找类似的东西。