有两个弹出的选择窗口 用的是同一个window  里面带了gridpanel
[
                 new Ext.grid.GridPanel({
                    id: 'Regionxxgrid',
                     ds: ds_Regionxx,
                     cm: cm_Regionxx,
                     sm: new Ext.grid.CheckboxSelectionModel({ dataIndex: "id" }),
                     height: 210,
                     viewConfig: {
                         forceFit: true
                     },
                     autoScroll: true,
                     frame: true,
                     listeners: { rowdblclick: function() { var Regionxm = Ext.getCmp("Regionxxgrid").getSelectionModel().getSelected().get("FRegionName"); if (Regionxm.length > 0) { AddPublishForm.getForm().findField("qiyundi_add").setValue(Regionxm); Regionxxwin.hide(); } else { alert("无效的记录"); } } }
                 })
              ]
            }]现在就是双击赋值的id不同  怎么给不同的id赋值
AddPublishForm.getForm().findField("qiyundi_add").setValue(Regionxm); Regionxxwin.hide();       //起运地
AddPublishForm.getForm().findField("zhongdaozhan_add").setValue(Regionxm); Regionxxwin.hide();  //到站
总不能为了这个id 再去写个window把  这样的代码量太大了

解决方案 »

  1.   

    点击的时候你是可以获得id的吧,这样你把id传给window就ok了
      

  2.   

    function win(id)
    {
    //下边函数体中的id相关可以换成变量控制了
    var grid = new Ext.grid.GridPanel({
    id : 'Regionxxgrid',
    ds : ds_Regionxx,
    cm : cm_Regionxx,
    sm : new Ext.grid.CheckboxSelectionModel({
    dataIndex : "id"
    }),
    height : 210,
    viewConfig : {
    forceFit : true
    },
    autoScroll : true,
    frame : true,
    listeners : {
    rowdblclick : function()
    {
    var Regionxm = Ext.getCmp("Regionxxgrid").getSelectionModel()
    .getSelected().get("FRegionName");
    if (Regionxm.length > 0)
    {
    AddPublishForm.getForm().findField("qiyundi_add")
    .setValue(Regionxm);
    Regionxxwin.hide();
    }
    else
    {
    alert("无效的记录");
    }
    }
    }
    })
    var win = {
    //....其他属性略
    items : [grid]
    }
    return new Ext.Window(win);
    }
      

  3.   

    起运地 和到站的代码分别如下 new Ext.form.TriggerField({ id: 'qiyundi_add', fieldLabel: '起  运  地', name: 'TriggerField', width: 115, triggerClass: 'x-form-search-trigger', onTriggerClick: function(e) { RegionxxFn(); } })
    点击的时候都是弹出RegionxxFn()函数
      RegionxxFn = function() {
                var Regionxxwin = new Ext.Window({
                    title: "区域选择窗口",
                    width: 400,
                    height: 300,
                    plain: true,
                    resizable: false,
                    defaultType: "textfield",
                    labelWidth: 10,
                    hideAction: 'hide',
                    closeAction: 'hide',
                    closable: false,
                    modal: 'true',
                    buttonAlign: "right",
                    items: [new Ext.form.FormPanel({
                        labelWidth: 65,
                        labelAlign: 'left',
                        align: 'center',
                        frame: true,
                        items: [
                    {
                    layout: 'column',
                    items:
                  [
                     new Ext.grid.GridPanel({
                        id: 'Regionxxgrid',
                         ds: ds_Regionxx,
                         cm: cm_Regionxx,
                         sm: new Ext.grid.CheckboxSelectionModel({ dataIndex: "id" }),
                         height: 210,
                         viewConfig: {
                             forceFit: true
                         },
                         autoScroll: true,
                         frame: true,
                         listeners: { rowdblclick: function() { var Regionxm = Ext.getCmp("Regionxxgrid").getSelectionModel().getSelected().get("FRegionName"); if (Regionxm.length > 0) { AddPublishForm.getForm().findField("qiyundi_add").setValue(Regionxm); Regionxxwin.hide(); } else { alert("无效的记录"); } } }
                     })
                  ]
                }]
                    })],
                    tbar: [new Ext.Toolbar.Fill(), '助记码', { id: 'Regionzjm', xtype: 'textfield', width: 80, listeners: { 'change': function(val) { Ext.getCmp("Regionxmcx").focus(true, true); } } }, '区域', { id: 'Regionxmcx', xtype: 'textfield', width: 80, listeners: { specialkey: function(f, e) { if (e.getKey() == e.ENTER) { SearchRegionxx(); } } } },
                     { text: "查 询", handler: function() { SearchRegionxx(); } }, { text: '退 出', id: 'close', handler: function() { Regionxxwin.hide(); } }
                        ],
                    bbar: new Ext.PagingToolbar({
                        store: ds_Regionxx,
                        pageSize: 10,
                        displayInfo: true,
                        displayMsg: '当前{0}--{1} 条 共{2}条',
                        emptyMsg: "No results to display",
                        prevText: "上一页",
                        nextText: "下一页",
                        refreshText: "刷新",
                        lastText: "最后页",
                        firstText: "第一页",
                        beforePageText: "当前页",
                        afterPageText: "共{0}页"
                    })
                });
                Regionxxwin.show();
            }
    现在要如何根据不同的id(起运地和到站的id)来分别赋值
      

  4.   


                         new Ext.form.TriggerField({ id: 'qiyundi_add', fieldLabel: '起  运  地', name: 'TriggerField', width: 115, triggerClass: 'x-form-search-trigger', onTriggerClick: function(e) { RegionxxFn(); } })                     new Ext.form.TriggerField({ id: 'daozhan_add', fieldLabel: '到         站', name: 'TriggerField', width: 115, triggerClass: 'x-form-search-trigger', onTriggerClick: function(e) { RegionxxFn(); } })
      

  5.   

     AddPublishForm.getForm().findField("qiyundi_add").setValue(Regionxm); Regionxxwin.hide(); } else { alert("无效的记录"); } } 
    AddPublishForm.getForm().findField("daozhan_add").setValue(Regionxm); Regionxxwin.hide(); } else { alert("无效的记录"); } } 就是双击赋值的时候如何去判断 是起运地 弹出的窗口 还是到站弹出的窗口
    根据相应的id 赋值
    qiyundi_add
    daozhan_add
      

  6.   

    那你就按我上边给你写的那样封装个函数就是了 用id控制 
    然后
    onTriggerClick: function(e) { RegionxxFn(1); } //起运站
    onTriggerClick: function(e) { RegionxxFn(2); } //到站RegionxxFn = function(o) {
      if(o==1){
        win('qiyunzhan').show();
      }else{
         win('daozhan').show();
      }
    }
    这有什么难的?
      

  7.   

      RegionxxFn = function(o) {}
                       listeners: { rowdblclick: function() { var Regionxm = Ext.getCmp("Regionxxgrid").getSelectionModel().getSelected().get("FRegionName"); if (Regionxm.length > 0) { if (o == 1) { AddPublishForm.getForm().findField("qiyundi_add").setValue(Regionxm); Regionxxwin.hide(); }else(o==2){AddPublishForm.getForm().findField("daozhan_add").setValue(Regionxm); Regionxxwin.hide();} } else { alert("无效的记录"); } } }
    我改为这样 怎么还是不行呢?
    onTriggerClick: function(e) { RegionxxFn(1); } //起运站
    onTriggerClick: function(e) { RegionxxFn(2); } //到站
      

  8.   

    win(id)
    这个函数体中的那些id你换成变量控制了没
      

  9.   

    另外因为gridpanel中包含window的关闭 如果将window单独出来的话 关闭不了所以没用你的那个,你按我的方式 就gridpanel放在window中 ,一定要用这个方法 不能关闭不了
     RegionxxFn = function() {
                var Regionxxwin = new Ext.Window({
                    title: "区域选择窗口",
                    width: 400,
                    height: 300,
                    plain: true,
                    resizable: false,
                    defaultType: "textfield",
                    labelWidth: 10,
                    hideAction: 'hide',
                    closeAction: 'hide',
                    closable: false,
                    modal: 'true',
                    buttonAlign: "right",
                    items: [new Ext.form.FormPanel({
                        labelWidth: 65,
                        labelAlign: 'left',
                        align: 'center',
                        frame: true,
                        items: [
                    {
                        layout: 'column',
                        items:
                  [
                     new Ext.grid.GridPanel({
                         id: 'Regionxxgrid',
                         ds: ds_Regionxx,
                         cm: cm_Regionxx,
                         sm: new Ext.grid.CheckboxSelectionModel({ dataIndex: "FItemID" }),
                         height: 210,
                         viewConfig: {
                             forceFit: true
                         },
                         autoScroll: true,
                         frame: true
                         //listeners: { rowdblclick: function() { var Regionxm = Ext.getCmp("Regionxxgrid").getSelectionModel().getSelected().get("FRegionName"); if (Regionxm.length > 0) { AddPublishForm.getForm().findField("qiyundi_add").setValue(Regionxm); Regionxxwin.hide(); } else { alert("无效的记录"); } } }
                     })
                  ]
    }]
                    })],
                    tbar: [new Ext.Toolbar.Fill(), '助记码', { id: 'Regionzjm', xtype: 'textfield', width: 80, listeners: { 'change': function(val) { Ext.getCmp("Regionxmcx").focus(true, true); } } }, '区域', { id: 'Regionxmcx', xtype: 'textfield', width: 80, listeners: { specialkey: function(f, e) { if (e.getKey() == e.ENTER) { SearchRegionxx(); } } } },
                     { text: "查 询", handler: function() { SearchRegionxx(); } }, { text: '退 出', id: 'close', handler: function() { Regionxxwin.hide(); } }
                        ],
                    bbar: new Ext.PagingToolbar({
                        store: ds_Regionxx,
                        pageSize: 10,
                        displayInfo: true,
                        displayMsg: '当前{0}--{1} 条 共{2}条',
                        emptyMsg: "No results to display",
                        prevText: "上一页",
                        nextText: "下一页",
                        refreshText: "刷新",
                        lastText: "最后页",
                        firstText: "第一页",
                        beforePageText: "当前页",
                        afterPageText: "共{0}页"
                    })
                });
                Regionxxwin.show();
            }
      

  10.   

    Ext.getCmp('window的id').close()或hide()就关了
    RegionxxFn = function(flag)
    {
    var Regionxxwin = new Ext.Window({
    title : "区域选择窗口",
    width : 400,
    height : 300,
    plain : true,
    resizable : false,
    defaultType : "textfield",
    labelWidth : 10,
    hideAction : 'hide',
    closeAction : 'hide',
    closable : false,
    modal : 'true',
    buttonAlign : "right",
    items : [new Ext.form.FormPanel({
    labelWidth : 65,
    labelAlign : 'left',
    align : 'center',
    frame : true,
    items : [{
    layout : 'column',
    items : [new Ext.grid.GridPanel({
    id : flag == 'qiyundi' ? 'qiyundigrid' : 'daozhangrid',
    ds : ds_Regionxx,//如果是远程读取数据的话 这个要改为 flag == 'qiyundi' ? '起运地的store' : '到站的store'
    cm : cm_Regionxx, //这个应该就不改了
    sm : new Ext.grid.CheckboxSelectionModel({
    dataIndex : "FItemID"
    }),
    height : 210,
    viewConfig : {
    forceFit : true
    },
    autoScroll : true,
    frame : true,
    listeners : {
    rowdblclick : function()
    {
    //此处用if进行控制 怎么做就不用我说了吧
    if(flag == 'qiyundi'){
    //起运地的处理
    }else{
      //到站的处理
    }
    // var Regionxm = Ext.getCmp("Regionxxgrid")
    // .getSelectionModel().getSelected()
    // .get("FRegionName");
    // if (Regionxm.length > 0)
    // {
    // AddPublishForm.getForm()
    // .findField("qiyundi_add")
    // .setValue(Regionxm);
    // Regionxxwin.hide();
    // }
    // else
    // {
    // alert("无效的记录");
    // }
    }
    }
    })]
    }]
    })],
      

  11.   

    接上
    tbar : [new Ext.Toolbar.Fill(), '助记码', {
    id : 'Regionzjm',
    xtype : 'textfield',
    width : 80,
    listeners : {
    'change' : function(val)
    {
    Ext.getCmp("Regionxmcx").focus(true, true);
    }
    }
    }, '区域', {
    id : 'Regionxmcx',
    xtype : 'textfield',
    width : 80,
    listeners : {
    specialkey : function(f, e)
    {
    if (e.getKey() == e.ENTER)
    {
    SearchRegionxx();
    }
    }
    }
    }, {
    text : "查 询",
    handler : function()
    {
    SearchRegionxx();
    }
    }, {
    text : '退 出',
    id : 'close',
    handler : function()
    {
    Regionxxwin.hide();
    }
    }],
    bbar : new Ext.PagingToolbar({
    store : ds_Regionxx,//此处也是一样要判断的如果是远程读取的话
    pageSize : 10,
    displayInfo : true,
    displayMsg : '当前{0}--{1} 条 共{2}条',
    emptyMsg : "No results to display",
    prevText : "上一页",
    nextText : "下一页",
    refreshText : "刷新",
    lastText : "最后页",
    firstText : "第一页",
    beforePageText : "当前页",
    afterPageText : "共{0}页"
    })
    });
    Regionxxwin.show();
    }
      

  12.   

    哈哈哈  谢谢了  
    解决了  非常感谢你的帮助
    listeners: { rowdblclick: function() {
                         if (o == 1) { var Regionxm = Ext.getCmp("Regionxxgrid").getSelectionModel().getSelected().get("FRegionName"); if (Regionxm.length > 0) { AddPublishForm.getForm().findField("hyqy_add").setValue(Regionxm); Regionxxwin.hide(); } else { alert("无效的记录"); } }
                             else if (o == 2) { var Regionxm = Ext.getCmp("Regionxxgrid").getSelectionModel().getSelected().get("FRegionName"); if (Regionxm.length > 0) { AddPublishForm.getForm().findField("qiyundi_add").setValue(Regionxm); Regionxxwin.hide(); } else { alert("无效的记录"); } }
                             else if (o == 3) { var Regionxm = Ext.getCmp("Regionxxgrid").getSelectionModel().getSelected().get("FRegionName"); if (Regionxm.length > 0) { AddPublishForm.getForm().findField("daozhan_add").setValue(Regionxm); Regionxxwin.hide(); } else { alert("无效的记录"); } }
                             else { var Regionxm = Ext.getCmp("Regionxxgrid").getSelectionModel().getSelected().get("FRegionName"); if (Regionxm.length > 0) { AddPublishForm.getForm().findField("zhongdaozhan_add").setValue(Regionxm); Regionxxwin.hide(); } else { alert("无效的记录"); } }
                         } 
                         }