1、单击button关闭弹出窗口layout:window
默认/通常: 在Bean中关闭,csc
@Action(id="btnClose",events="onclick")
public void btnClose(){
Browser.execClientScript("window.parent","winJ.hide()");
}
优化:在faces里通过JS关闭,c
<w:button label="关闭" immediate="true" οnclick="parent.winJ.hide();return false;" />
2、判断 单击tree节点 的级别
默认/通常:bean,
if( ((module) tree.getEventNode().getUserData()).getModuleName()=="root" ){//根节点
。。。
}
else if( (((module) tree.getEventNode().getUserData()).getUrl()==null) ||
(((module) tree.getEventNode().getUserData()).getUrl()=="") ||
(((module) tree.getEventNode().getUserData()).getUrl().length()==0)){ //一级节点
。。。
}
else { //二级节点
。。。
}
优化:放到faces里
<script>
Ext.onReady(function (){
treeJS.on('click', function (node) {
//alert(node.leaf);//这是你要的值
//alert(node.id);//这是你要的值
//alert(node.text);//这是你要的值
if(node==treeJS.getRootNode()){
alert('root');
}
else if(node.parentNode==treeJS.getRootNode()){
alert('1');
}
else {alert('2');}
return true; });
});
</script>
3、页面初始化时,组件赋值or操作
@BeforeRender
public void beforeRender(boolean isPostback){
System.out.println("---------000------");
if(!isPostback){
System.out.println("---------111------");
}
}
加上if判断后,只要页面不全部刷新,则“111”只执行一次
而“000”则只要发送数据到服务器,都会执行,包括:弹出窗口、查询。。。
4、getSelectedValues()获取表格选中行的ID,造成表格的“二次取数”
默认/通常:在bean中使用grid1.getSelectedValues()获取表格选中行的ID,但会造成表格向db的“二次取数”----因为在bean中取到的是grid的行号,需要与db对比,才能得到选中行实际的ID
frame.load("approvalManPerModWin.mw?tid="+((approval) (grid1.getSelectedValues()[0])).getApprovalID() );
优化:
a、用JS将选中行的ID存到隐藏域中
<w:button label="查看" image="../../resources/mkgl.png" οnclick="return checkGetSin();"/>
<w:button id="btnCheck" jsvar="btnCheck" style="display:none"/>
。。。 。。。 。。。
<w:textField id="gridSlt" hidden="true" jsvar="gridSlt"/>
。。。 。。。 。。。
function checkGetSin(){
var sr = g1.getSelectionModel().getSelections();
if( sr.length!=1 ){
Ext.Msg.alert('错误','每次只能选择一行!');
return false;
}
gridSlt.setValue((sr[0]).get('ID'));
//gridSlt.value = (sr[0]).get('ID');
btnDis.fireEvent('click');
return true;
@Action(id="btnDis",event="onclick")
public void btnDis(){
centerTab.addTab("查看申请", "petitionManDisWin.mw?tid="+gridSlt_value);
}
但如果隐藏域不在form中,总是取不到值
b、用JS将选中行的ID直接放到ajax:submitAction中,作为参数直接提交
<ajax:submitAction id="bsnDis" jsvar="bsnDis"/>
。。。 。。。 。。。
bsnDis.addParam('tid',(sr[0]).get('ID'));
bsnDis.submit();//alert('');
@Action
public void bsnDis(){
HttpServletRequest request = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();
centerTab.addTab("查看申请", "petitionManDisWin.mw?tid="+request.getParameter("tid"));
}
5、关于gird弹出窗口进行修改或显示
个人感觉,使用tab比window弹出窗口的速度和显示要快一些,
默认/通常:tab的弹出在bean中完成,cscs,会增加流量
centerTab.addTab("查看申请", "petitionManDisWin.mw?tid="+((academic) (grid1.getSelectedValues()[0])).getID());
优化:
function checkGetSin(){
centerTab.add({
id: 't123',
title: 'qwe',
html: '<iframe src="petitionManDisWin.mw?tid='+(sr[0]).get('ID')+'" scrolling="auto" frameborder="0" style="width:100%;height:100%;"></iframe>',
style: 'width:100%;height:100%;'}).show();
}
参考:http://www.operamasks.org/forum/viewthread.php?tid=4957&highlight=tabLayout,“//如果已经存在,则刷新之”中总是刷新第一次的弹出地址