z76688999
z76688999
2009-04-13 10:30

Ext中window出了问题,请高手解决!

已采纳

我将问题描述一下,window中我放置了两个combobox,在tbar上设置按钮,负责显示window,并设置cancel按钮handler中函数,window.hide()令其隐藏。
一:单击tbar,window出来combobox,我没去动他,然后直接点cancel按钮,window隐藏,再点tbar,window正常显示出来,并且window中的组件完好。
二:问题出现,当我点开window,并且选了combobox中的选项后,我点cancel,也就是window.hide(),然后我又把window打开,这时,window中的combobox不见了。只有fieldLabel的文字。

请大家帮忙。

[code="js"]handler:function(){

                var gradeWin = new Ext.Window({

                    title : '添加年级',
                    width : 300,
                    height : 150,
                    plain : true,
                    closeAction : 'hide',
                    layout : 'form',
                    labelWidth : 80,
                    constrain : true, // windows不超过浏览器
                    buttonAlign : 'center',
                    modal : true,// 生成背景半透明div
                    defaultType : 'textfield',
                    defaults:{width:160},
                    bodyStyle : 'padding:10px;',
                    buttons : [{
                                text : '确定',
                                handler:function(){

                                //   var stuTreeNode = Ext.getCmp('stuTree');
                                 //  alert(Ext.getCmp('myTree')) ;

                                    var tree = Ext.getCmp('myTree') ;

                                    var stuNode = tree.getNodeById('stuTree') ;
                                    var text = Ext.getCmp('gradeName').getValue().toString();
                                    var type = Ext.getCmp('gradeType').getValue();
                                    if(text != ''&& type != '')
                                    {

                                    var node = new Ext.tree.TreeNode({
                                        text:text,
                                        leaf:true
                                        });
                                    //stuNode.isLeaf = false ;    
                                    stuNode.appendChild(node);

                                    gradeWin.hide();
                                    }else Ext.Msg.alert('错误提示','有空选项,请重新填写');
                                    //alert(tree.getNodeById('stuTree'));

                                }//ok function
                            }, {
                                text : '取消',
                                handler : function() {
                                    gradeWin.hide();
                                }
                            }],
                    items :[{
                            xtype:'combo',
                            fieldLabel:'年级名称',
                            id:'gradeName',
                            displayField : "text",
                            valueField : "value",
                            mode : 'local',
                            triggerAction : 'all',
                            store : new Ext.data.SimpleStore({
                                            fields : ['value',
                                                            'text'],
                                            data : [['2004级', '2004级'],
                                                    ['2005级', '2005级'],
                                                    ['2006级', '2006级'],
                                                    ['2007级', '2007级'],
                                                    ['2008级', '2008级'],
                                                    ['2009级', '2009级'],
                                                    ['2010级', '2010级'],
                                                    ['2011级', '2011级'],
                                                    ['2012级', '2012级'],
                                                    ['2013级', '2013级'],
                                                    ['2014级', '2014级']
                                                    ]
                                                })
                        },{
                            xtype:'combo',
                            fieldLabel:'年级类型',
                            id:'gradeType',
                            readOnly : true,
                            displayField : "text",
                            valueField : "value",
                            mode : 'local',
                            triggerAction : 'all',
                            store : new Ext.data.SimpleStore({
                                            fields : ['value',
                                                            'text'],
                                            data : [['已毕业', '已毕业'],
                                                    ['未毕业', '未毕业']]
                                                })
                            }]//items
                }) ;//end gradeWin

                gradeWin.show();
              }[/code]
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

4条回答

  • weixin_42312248 weixin_42312248 12年前

    楼主的做法不对,你既然将gradeWin对象放在hanlder事件中创建的话,那你多次点击后,就创建了多个gradeWin对象,你把gradeWin创建的部分放在外部即可,在hanlder调用的时候把gradeWin.show();出来即可。

    点赞 评论 复制链接分享
  • chanball chanball 12年前

    把 var gradeWin 改成 gradeWin 这样gradeWin就成了全局变量了,就不会第次都创建一个 window,而是覆盖原来的window

    点赞 评论 复制链接分享
  • yongtree yongtree 12年前

    同意楼上的,把hide() 改成 close();
    也可以改成destroy();

    点赞 评论 复制链接分享
  • zhoujuan520 zhoujuan520 12年前

    把hide() 改成 close();

    我测试通过了
    [code="js"]
    Ext.onReady(function() {
    Ext.BLANK_IMAGE_URL = 'resources/images/default/s.gif';
    var win = new Ext.Window({
    width : 300,
    height : 400,
    tbar : [{
    text : 'Show Window',
    handler : function() {
    var gradeWin = new Ext.Window({
    title : '添加年级',
    width : 300,
    height : 150,
    plain : true,
    closeAction : 'hide',
    layout : 'form',
    labelWidth : 80,
    constrain : true,
    buttonAlign : 'center',
    modal : true,
    defaultType : 'textfield',
    defaults : {
    width : 160
    },
    bodyStyle : 'padding:10px;',
    buttons : [{
    text : '确定',
    handler : function() {
    var tree = Ext.getCmp('myTree');
    var stuNode = tree.getNodeById('stuTree');
    var text = Ext.getCmp('gradeName').getValue()
    .toString();
    var type = Ext.getCmp('gradeType').getValue();
    if (text != '' && type != '') {
    var node = new Ext.tree.TreeNode({
    text : text,
    leaf : true
    });
    stuNode.appendChild(node);
    gradeWin.close();
    } else {
    Ext.Msg.alert('错误提示', '有空选项,请重新填写');
    }
    }
    }, {
    text : '取消',
    handler : function() {
    gradeWin.close();
    }
    }],
    items : [new Ext.form.ComboBox({
    fieldLabel : '年级名称',
    id : 'gradeName',
    displayField : "text",
    valueField : "value",
    mode : 'local',
    triggerAction : 'all',
    store : new Ext.data.SimpleStore({
    fields : ['value', 'text'],
    data : [['2004级', '2004级'], ['2005级', '2005级'],
    ['2006级', '2006级'], ['2007级', '2007级'],
    ['2008级', '2008级'], ['2009级', '2009级'],
    ['2010级', '2010级'], ['2011级', '2011级'],
    ['2012级', '2012级'], ['2013级', '2013级'],
    ['2014级', '2014级']]
    })
    }), new Ext.form.ComboBox({
    fieldLabel : '年级类型',
    id : 'gradeType',
    readOnly : true,
    displayField : "text",
    valueField : "value",
    mode : 'local',
    triggerAction : 'all',
    store : new Ext.data.SimpleStore({
    fields : ['value', 'text'],
    data : [['已毕业', '已毕业'], ['未毕业', '未毕业']]
    })
    })]
    });
    gradeWin.show();
    }
    }]
    });
    win.show();
    });
    [/code]

    点赞 评论 复制链接分享

相关推荐