我有一个窗口,顶部是搜索表单,底部是网格。
用户可以在搜索表单中输入值,然后单击按钮 - 获取记录。
点击此按钮,我通过以下列方式将表单字段中的值作为参数传递来加载网格存储:
store.load({
params:{
key1:Ext.getCmp('field1').getValue();
}
});
我尝试在商店代理本身提供参数,但遗憾的是它总是占用初始值(表单呈现时的值),而不是用户在表单字段中输入的最新值。以下是我在创建商店时为params赋值的方法:
extraParams:{
key1:Ext.getCmp('field1').getValue();
}
我想在两件事情上寻求指导:
一个。在定义商店时,我可以确保商店在查询服务器之前从表单字段中获取最新/当前值,这样我在调用加载函数时不必提供这些值吗?
这更加必要,因为我在底部有一个分页工具栏,它带有一个刷新按钮(以及下一个,最后一个,上一个,第一个导航图标)。
现在,每当用户点击刷新(或任何导航图标)时,商店就会在没有查询参数的情况下加载。
因此第二件事是:
湾如果'a'的答案是 - 在调用加载函数时手动将最新值传递给参数 - 那么我如何编写“刷新”按钮和导航图标(即下一个,最后一个,上一个和第一个)的处理程序分页工具栏,以便我可以将最新的表单值传递给加载函数。
感谢您提前提供任何帮助。
PS:我正在使用ExtJS 4。
答案 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事件,并且拾取的值始终是最新的。希望这有助于某人寻找类似的东西。