在项目中遇到问题,弹出页面的查询重置,对于Treepanel的MultiSelectionModel不起作用。
需要点击“查询”按钮弹出子菜单,进行条件查询。(如图:Treepanel_1.gif)
但是对于查询界面,点击“重置”时,输入框可以重置为空,而Treepanel的MultiSelectionModel不起作用,即点击重置后,复选框没有取消勾选。(如图:Treepanel_2.gif)
最后找到问题所在:
1)光tmos_form.form.reset();是不管用的
2)最后还要重置置所有多选的“值”和“显示”为false:setChildNodesCheck(worksheetstatetroot, false);
3)还要清除 父Store的参数,否则再重新点击“查询”按钮时,原来条件没有删除,查找出来的结果和预期的不同:parent.paraStore.removeAll();
并且要注意顺序,测试时,先重置,在设置false,最后删除。
{
text: '重置',
handler: function(){
tmos_form.form.reset();
setChildNodesCheck(worksheetstatetroot, false);
//将父页面的原有查询参数除去
parent.paraStore.removeAll();
}
}
//将父页面的原有查询参数除去
parent.paraStore.removeAll();
}
代码如下:
Ext.onReady(function(){
Ext.QuickTips.init();
......
//工单状态选择树
var worksheetstatetroot = new Ext.tree.AsyncTreeNode({
id: "worksheetstatetroot",
text: "工单状态"
});
var worksheetstatetree= new Ext.tree.TreePanel({
id:"worksheetstatetreepanel",
title: "工单状态",
renderTo: Ext.getBody(),
autoScroll : true,
lines:true,//树线
width: 265,
height:200,
animate:false,
root: worksheetstatetroot,
useArrows: false,
selModel: new Ext.tree.MultiSelectionModel(),
loader:new Ext.tree.TreeLoader({
dataUrl:"<%=request.getContextPath()%>/workSheetAction.do?dispatch=getDicTree",
baseParams:{DIC_TYPE:'工单状态'}
})
})
worksheetstatetree.getRootNode().expand(true); //级联展开所有子节点
var tmos_form=new Ext.form.FormPanel({
plain:true,
layout:"form",
labelAlign: 'right',
labelWidth: 70,
frame:true,
width:'100%',
autoHeight:true,//使自适应展开排版
items:[{//行1
layout:'column',
items: [
//列
{ ...... },
{ columnWidth:.33,
layout: 'form',
xtype: 'fieldset',
autoHeight: true,
style: 'margin-top: 0px;margin-left: 5px;',
items: [
new Ext.form.NumberField({
fieldLabel:'新电话号码',
name:'OLD_NUM',
id:'OLD_NUM',
allowDecimals : false,//不允许输入小数
allowNegative : false,//不允许输入负数
nanText :'请输入有效的整数',//无效数字提示
width : 225
}),
worksheetstatetree
]
}
]
}],
buttons: [{
text: '重置',
handler: function(){
tmos_form.form.reset();
setChildNodesCheck(worksheetstatetroot, false);
//将父页面的原有查询参数除去
parent.paraStore.removeAll();
}
}]
});
tmos_form.render("tmos_form");
});
//设置子节点的选中或者是不选中
function setChildNodesCheck(node, blnChecked) {
var iLength = node.childNodes.length;
if (iLength == 0) return;
var childNode = null;
for (var i = 0; i < iLength; i++) {
childNode = node.childNodes[i];
childNode.attributes.checked = blnChecked;//这个是改变值的
childNode.getUI().checkbox.checked = blnChecked;//这个是改变显示的
}
};