ExtJS使用总结经验2

[/code][color=blue]Ext.data.JsonStore使用HttpProxy加载数据时传递参数的两种方法[/color]

1.用baseParams属性
[code="java"]
var Type1Store = new Ext.data.JsonStore({
fields: ['name','id'],
url: 'LoadData.aspx',
baseParams: {mode: 'type1'},
autoLoad: true
});

第一种方法传参数可能有时传递不到,为空,第二种比较保险
2.在Store load的时候传递
Type2Store.load({params:{mode: 'type2',type1: record.data.id}}); 


2、Ext.getCmp('imageReportID').update()
以上是更新组件id为'imageReportID'的展示html中的内容。。。

3、当数据库数据量过大的时候,进行查询,譬如下拉框HTTP请求数据,等待时间过长,则会请求失败,所以可做如下修改

Ext.Ajax.timeout = 180000;

延长Ext中的Ajax请求时间,则问题可以解决

4、ExtJS中Ajax请求,带参数传递的精简例子:(注释掉的传参也是行得通的)

点击Grid中一行数据产生反应
grid.on("rowclick", function(grid, rowIndex, e) {

var riskAdvice = document.getElementById("riskAdvice");
var record = grid.getStore().getAt(rowIndex);
if(riskAdvice){
riskAdvice.innerHTML = "";
}
var riskAdviceID = record.get('flowRate');
Ext.Ajax.request({
method:'POST',
url : 'queryRiskAdvice.action',//?riskAdviceID=' + riskAdviceID,
params:{riskAdviceID : riskAdviceID},
success : function(response, options) {
var arrays = Ext.util.JSON.decode(response.responseText);
riskAdvice.innerHTML = arrays.riskDealAdvice;
}
});
});


5、不带样式渲染面板 即去掉默认样式 ,配置以下属性即可 unstyled:true

6、提交数据时,提示用户等待数据返回信息

var loadMarsk = new Ext.LoadMask(Ext.getBody(), {
msg : '正在查询中,请稍候......',
removeMask : true
// 完成后移除
});
loadMarsk.show(); //显示
当数据已经查询到,则取消该滚动提示,显示数据
storeReplys.on("load", function() {
loadMarsk.hide();
var totalCount = storeReplys.getTotalCount();
if (totalCount == 0) {
Ext.MessageBox.alert("提示", "没有查询到相关数据。");
return;
}
Ext.getCmp('start').setDisabled(false);
Ext.getCmp('clear').setDisabled(false);
Ext.getCmp("labelt").add(fieldset);
Ext.getCmp("logPanel").doLayout();
Ext.getCmp("scrollPanel").doLayout();

Ext.getCmp("panel").doLayout();
});


3、关于这个问题,花了我将近两天时间啊!都快把我弄哭了。。。~~~~(>_<)~~~~
问题:如何在JS文件中的Store对象得到非赋予给根属性 root 的对象的值,用啥EL表达式都行不通。。。。实在没办法了。。。试下结果成功了!

var storeReplys = new Ext.data.Store( {
proxy : new Ext.data.HttpProxy( {
url : 'dailyBehaviorQuery.action',
params : param,
async : false, //ASYNC 是否异步( TRUE 异步 , FALSE 同步,此处需要引进一个外部js文件,此处文件已改动过,同步请求才能成功)
success:function(response, options) {
var arrays = Ext.util.JSON.decode(response.responseText);
if(startDate == '' || endDate == ''){
startDate = arrays.dateStart.replace("T"," ");
endDate = arrays.dateEnd.replace("T"," ");
}
}
}),
reader : new Ext.data.JsonReader( {
root : 'rows'
}, [ {
name : 'time',
mapping : 'time',
convert : function(v) {
return v.replace("T", " ");
}
}])
});


[color=red]4、在ExtJS中用Store对象请求信息,如何动态请求,对Store中的数据实现动态更新,可采纳如下方法:(此处个人觉得实现以上要求,只要再次调用Store对象的load方法就行了。。。)[/color]

storeReplys.load( {
params : param,
callback : function(records, options, success) {

},
scope : storeReplys,
add : false // 此处为false表示不追加在原有数据的后面,清除原有数据。
});


5、动态加载GRID头部标题、即显示的列并对数据重新请求并加载

StoreQueryParams.on('load', function() {
var size = StoreQueryParams.getCount();
var flag = false;
//alert(size);
for (var i = 0; i < size; i++) {
var temp = StoreQueryParams.getAt(i).get('name');
cm.setHidden(Number(temp) - 1, false);
}
grid.reconfigure(gridStore, cm);
grid.getView().refresh();
gridStore.load({
params : param
});
});


6、在ExtJS中this.form.el.is.undefined
在ExtJS中,经常会需要用到一个窗口中嵌入一个form表单,进行表单提交,在提交表单并且关闭窗口,这个时候,会报上面错误,因为form在提交表单的时候,ajax提交表单是基于iframe的,需要去取window里面form的值,而form的window值此时已经被销毁,form.dom已经回收,正常情况下需要回调调用,如下:

{xtype:'button',text:'提交',iconCls:'save',handler:function(){
formPanel.getForm().submit({params:{},failure:function(form,action)}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值