`
zoushaohua84
  • 浏览: 10027 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

从数据库中加载数据,实现两个comboBox与gridpanel的联动(comboBox默认加载第一项值)

阅读更多

/**不知道怎么插入图片,代码保证正确。下拉列表名分别是:贷方凭证类型 ,本方科目

*图片放在下面的附件里了

 * 细节的东西,自己慢慢看,肯定写的有点粗糙。

*/


  Ext.namespace('speedy.cm.tcmVoucherOppSet');
  speedy.cm.tcmVoucherOppSet.MainPanel = function(config) {
   Ext.applyIf(this, config);
   this.initUIComponents();

   speedy.cm.tcmVoucherOppSet.MainPanel.superclass.constructor.call(this);
  };
 Ext.extend(speedy.cm.tcmVoucherOppSet.MainPanel, Ext.Panel, {
             firstValue :'',
 tcmvoucheroppsettingId :'',    //tcm_voucheroppsetting表的主键vId
    tcmVoucherSettingId :'',   //tcm_VoucherSetting表的主键vId
 initUIComponents : function() {
  
  this.st3= new Ext.data.Store({
   baseParams : {limit:50},
   reader : new Ext.data.JsonReader({
     totalProperty:'totalCount',
     id : "id",
     root : "result"},
     [
    {name : 'vId',          mapping : 'vId'},
    {name : 'vVouId',       mapping : 'vVouId'},
    {name : 'vOppAccCode',  mapping : 'vOppAccCode'}, 
    {name : 'vOppAccName',  mapping : 'vOppAccName'}, 
    {name : 'nIssum',       mapping : 'nIssum'}, 
    {name : 'nIsusing',     mapping : 'nIsusing'},  
    {name : 'vAbstract',    mapping : 'vAbstract'}, 
    {name : 'vCustomer',    mapping : 'vCustomer'}, 
    {name : 'vFlowCode',    mapping : 'vFlowCode'}
    
    ]),
   proxy : this.proxy||new Ext.data.HttpProxy({
    
    url:'ui/modules/speedy/cm/VoucherOppSet/getAllTcmVoucherOppSetByVouId.action'

    })
   
  });
  
  this.accStore= new Ext.data.Store({
   baseParams : {limit:50},
   reader : new Ext.data.JsonReader({
     totalProperty:'totalCount',
     id : "id",
     root : "result"},
     [
    {name : 'vId',           mapping : 'vId'},
    {name : 'vOppId',        mapping : 'vOppId'},
    {name : 'vBankAccount',  mapping : 'vBankAccount'}, 
    {name : 'vCostCenter',   mapping : 'vCostCenter'}, 
    {name : 'vRemark',       mapping : 'vRemark'}
    
    ]),
   proxy : this.proxy||new Ext.data.HttpProxy({
    
    url:'ui/modules/speedy/cm/VoucherOppSet/getAllTcmVoucherOppAccountByOppId.action'

    })
   
  });
  
  //加载accStore数据源
   this.accStore.load();
  
  
  this.oppGridPanel = new Ext.grid.GridPanel({
   
   bbar :  new Ext.PagingToolbar({
      xtype   : 'paging',
      pageSize : 50,
      store  : this.st3,
      displayInfo : true,
            displayMsg : '显示记录从 {0} 到 {1} 总共 {2}',
            emptyMsg : '没有记录'
     }),
   height :100,
   store : this.st3,
   border : false,
   loadMask: {msg:'正在取数,请稍等!'},
   listeners : {
       click : {
    fn : function() {
        var record=this.oppGridPanel.selModel.getSelected();
     if( record!= null)
     {
      this.accStore.baseParams.vOppId=record.get('vId');
      
      this.accStore.load();
     }
    }.createDelegate(this)
   }
   },
   columns : [
   new Ext.grid.RowNumberer(),
   {
    width   :  150,
    header   :  '唯一ID',
    dataIndex  :  'vId',
    sortable  :  true,
    hidden  : true
   },
   {
    width   :  150,
    header   :  '对应本方信息表中唯一ID ',
    dataIndex  :  'vVouId',
    sortable  :  true,
    hidden  : true
   },
   {
    width   :  150,
    align  : 'Left',
    header   :  '对方科目编号',
    dataIndex  :  'vOppAccCode',
    sortable  :  true,
    hidden  : false
   }
   ,
   {
    width   :  250,
    align  : 'Left',
    header   :  '对方科目名称',
    dataIndex  :  'vOppAccName',
    sortable  :  true,
    hidden  : false
   }
   ,
   {
    width   :  150,
    align  : 'Left',
    header   :  '是否汇总',
    dataIndex  :  'nIssum',
    sortable  :  true,
    hidden  : false,
    renderer : this.isWhether
   }
   ,
    {
    width   :  150,
    align  : 'Left',
    header   :  '是否有效',
    dataIndex  :  'nIsusing',
    sortable  :  true,
    hidden  : false,
    renderer : this.isValid
   }    
   ,
    {
    width   :  250,
    align  : 'Left',
    header   :  '凭证摘要',
    dataIndex  :  'vAbstract',
    sortable  :  true,
    hidden  : false
   }
   ,
    {
    width   :  150,
    align  : 'Left',
    header   :  '现金流量',
    dataIndex  :  'vFlowCode',
    sortable  :  true,
    hidden  : false
   }
   ,
    {
    width   :  150,
    align  : 'Left',
    header   :  '客户编号',
    dataIndex  :  'vCustomer',
    sortable  :  true,
    hidden  : false
   }
   ],
   scrollable:true,
   cm : this.columns,
   selModel : new Ext.grid.RowSelectionModel({singleSelect : true})
  });
  
  this.accountGridPanel = new Ext.grid.GridPanel({
   store : this.accStore,
   height : 100,
   border : false,
   loadMask: {msg:'正在取数,请稍等!'},
   listeners : {
    click : {
    fn : function() {
       var record=this.oppGridPanel.selModel.getSelected();
    if( record!= null)
    {
     this.tcmvoucheroppsettingId=record.get('vId');
     this.accStore.baseParams.vOppId=this.tcmvoucheroppsettingId;
    }
    
   }.createDelegate(this)
    }
   },
   columns : [
   new Ext.grid.RowNumberer(),
   {
    width   :  150,
    header   :  '唯一ID',
    dataIndex  :  'vId',
    sortable  :  true,
    hidden  : true
   },
   {
    width   :  150,
    align  : 'Left',
    header   :  '对应对方信息唯一ID',
    dataIndex  :  'vOppId',
    sortable  :  true,
    hidden  : true
   }
   ,
   {
    width   :  400,
    align  : 'Left',
    header   :  '银行账户',
    dataIndex  :  'vBankAccount',
    sortable  :  true,
    hidden  : false
   }
   ,
    {
    width   :  250,
    align  : 'Left',
    header   :  '成本中心',
    dataIndex  :  'vCostCenter',
    sortable  :  true,
    hidden  : false
   }
   ,
    {
    width   :  150,
    align  : 'Left',
    header   :  '备注',
    dataIndex  :  'vRemark',
    sortable  :  true,
    hidden  : false
   }
   ],
   scrollable:true,
   cm : this.columns,
   selModel : new Ext.grid.RowSelectionModel({singleSelect : true})
  });
  
  this.onAddClick  = function(){
   var oppEditPanel = new speedy.cm.tcmVoucherOppSet.ModifyWindow({
                    fOppSetId: this.tcmVoucherSettingId,
                    faStore  :this.st3,
          title   :'新增',
          type    :0
      })
   oppEditPanel.show();
   
  };
       this.onAccAddClick  = function(){
   var accountEditPanel = new speedy.cm.tcmVoucherOppSet.AccountModifyWindow({
                 fOppSetId  : this.tcmvoucheroppsettingId,      
                    fStore  :this.accStore,
          title   :'新增',
             type    :0
     })
   accountEditPanel.show();
  
 };
  this.onModifyClick  = function(){
   var record = this.oppGridPanel.selModel.getSelected();
   if( record == null)
   {
    Ext.Msg.alert('提示', '请选择一条记录!');
    return;
   }
   var ModifyWindow = new speedy.cm.tcmVoucherOppSet.ModifyWindow({
    fStore  :this.st3,
    title   :'修改',
    type    :1
   })
   ModifyWindow.on('beforeshow',function(dialog){
      Ext.getCmp('speedy.cm.tcmVoucherOppSet.ModifyWindow').getForm().loadRecord(record);
     });
   ModifyWindow.show();
  };
  
  this.onAccModifyClick  = function(){
   var record = this.accountGridPanel.selModel.getSelected();
   if( record == null)
   {
    Ext.Msg.alert('提示', '请选择一条记录!');
    return;
   }
   var accountModifyWindow = new speedy.cm.tcmVoucherOppSet.AccountModifyWindow({
    fStore  :this.accStore,
    title   :'修改',
    type    :1
   })
   accountModifyWindow.on('beforeshow',function(dialog){
      Ext.getCmp('speedy.cm.tcmVoucherOppSet.AccountModifyWindow').getForm().loadRecord(record);
     });
   accountModifyWindow.show();
  };
  this.onDeleteClickSure  = function(record){
   var box = Ext.MessageBox.show(
   {
    msg :'正在删除,请稍候...',
    progressText: '',
    width : 200,
    height:100,
    progress:false,
       closable:false,
    wait : false 
   });
   
   Ext.Ajax.request
      (
          {
              url:'ui/modules/speedy/cm/VoucherOppSet/deleteTcmVoucherOppSet.action',           
     params:
     {
            vId:record.get('vId'),
            version:record.get('version')
           },
     success:function(response, optional)
     {  
            var ret = Ext.util.JSON.decode(response.responseText);
      if(ret.success == false){
       Ext.Msg.alert('错误',ret.err);
       return;
      }
      
      box.hide();
      var o = {start: 0};
      this.st3.reload({params:o});
           }.createDelegate(this),
     failure:function(response,optional)
     {
      Ext.Msg.alert('错误',"删除操作失败!");
      box.hide();
     }
    }
   )
  };
  this.onDeleteClick  = function(){
   var record = this.oppGridPanel.selModel.getSelected();
   if(!record)
   {    
    Ext.Msg.alert('提示', "请选择一条记录!");
    return;
   }
   
   Ext.MessageBox.confirm('提示', "确定要删除所选记录?", function(btn)
   {
    if(btn == 'yes')
    {
     this.onDeleteClickSure(record);
    }
   }.createDelegate(this))
  };
  this.onAccDeleteClickSure  = function(record){
   var box = Ext.MessageBox.show(
   {
    msg :'正在删除,请稍候...',
    progressText: '',
    width : 200,
    height:100,
    progress:false,
       closable:false,
    wait : false 
   });
   
   Ext.Ajax.request
      (
          {
              url:'ui/modules/speedy/cm/VoucherOppSet/deleteTcmVoucherOppAccount.action',           
     params:
     {
            vId:record.get('vId'),
            version:record.get('version')
           },
     success:function(response, optional)
     {  
            var ret = Ext.util.JSON.decode(response.responseText);
      if(ret.success == false){
       Ext.Msg.alert('错误',ret.err);
       return;
      }
      
      box.hide();
      var o = {start: 0};
      this.accStore.reload({params:o});
           }.createDelegate(this),
     failure:function(response,optional)
     {
      Ext.Msg.alert('错误',"删除操作失败!");
      box.hide();
     }
    }
   )
  };
  this.onAccDeleteClick  = function(){
   var record = this.accountGridPanel.selModel.getSelected();
   if(!record)
   {    
    Ext.Msg.alert('提示', "请选择一条记录!");
    return;
   }
   
   Ext.MessageBox.confirm('提示', "确定要删除所选记录?", function(btn)
   {
    if(btn == 'yes')
    {
     this.onAccDeleteClickSure(record);
    }
   }.createDelegate(this))
  };
    
  
  this.st = new Ext.data.Store({
   
   proxy : this.proxy||new Ext.data.HttpProxy({url:'ui/modules/speedy/cm/VoucherSet/getTcmVoucherTypeSetIdAndTypeName.action'}),
   reader : new Ext.data.JsonReader({                                              
     totalProperty:'totalCount',
     id : "id",
     root : "result"},
     [{name : 'vId',     mapping : 'vId'},
     {name : 'vTypeName',mapping : 'vTypeName'}]
     )
  });

 this.st2 = new Ext.data.Store({
 
 proxy : this.proxy||new Ext.data.HttpProxy({url:'ui/modules/speedy/cm/VoucherSet/getAllTcmVoucherSetByTypeId.action'}),
 reader : new Ext.data.JsonReader({
   totalProperty:'totalCount',
   id : "id",
   root : "result"},
   [{name : 'vId',     mapping : 'vId'},
   {name : 'vAccCode',mapping : 'vAccCode'},
   {name : 'vAccName',mapping : 'vAccCodeAndvAccName'}]
   )
  });

  this.vouTypeChang = new Ext.form.ComboBox({
   store         : this.st,
   fieldLabel    : '凭证类型',
   mode          : 'local',
   triggerAction : 'all',
   id            :  'vTypeId',
   name          :  'speedy.cm.tcmVoucherOppSet.vTypeId',
   displayField  : 'vAccCode',
   valueField    : 'vId',
   displayField  : 'vTypeName',
   hiddenName    : 'Id',
   forceSelection: true,
   readOnly      : true,
   width         : 200

       
  });
  
  this.accCodeChange = new Ext.form.ComboBox({
   store         : this.st2,
   fieldLabel    : '本方科目',
   mode          : 'local',
   triggerAction : 'all',
   id            :  'vAccCode',
   name          :  'speedy.cm.tcmVoucherOppSet.vAccCode',
   displayField  : 'vAccName',
   valueField    : 'vId',
   displayField  : 'vAccName',
   hiddenName    : 'AccId',
   forceSelection: true,
   readOnly      : true,
   width         : 400

       
  });
  
  this.st.load();//加载数据源
  
  //设置下拉列表的默认值

  this.st.on('load',function(store,record,opts){

   //这种方法可以获得第一项的值

    var vId=store.getRange()[0].data.vId;
       this.firstValue =store.getRange()[0].data.vTypeName;
      
       this.vouTypeChang.setValue(vId);
       this.st2.baseParams.vTypeId=vId;
//      Ext.Msg.alert('load',vId);
       this.st2.load();
       this.st3.load();

     }.createDelegate(this)  );
  
  this.st2.on('load',function(store,record,opts){
   
   //tcmVoucherSetting表的vId
   this.tcmVoucherSettingId = store.getRange()[0].data.vId;
     
       this.st3.baseParams.vVouId=this.tcmVoucherSettingId;

       this.accCodeChange.setValue(this.tcmVoucherSettingId);
      
       this.st3.load();
       this.accStore.load();
      
     }.createDelegate(this));
   
  //弹出每次下拉列表选择的值
  this.vouTypeChang.on('select',function(store,record,options){
   
   //获取下拉列表中凭证类型vTypeName对应的vTypeId
   var selectValue=Ext.fly('vTypeId').dom.value;
   
   //对应vTypeId的vId<即tcm_voucherTypeSet表的主键值>
   var id=Ext.fly('Id').dom.value;
   
   this.st2.on('beforeload',function(store,record,opts){
       //将下拉列表的值赋给vTypeId
     store.baseParams.vTypeId=id;
    });
         this.accCodeChange.setValue('');
   this.st2.reload();
     }.createDelegate(this));

  
        this.accCodeChange.on('select',function(store,record,options){
         
   //设定过滤参数
         this.tcmVoucherSettingId=Ext.get('AccId').dom.value;
   this.st3.baseParams.vVouId=this.tcmVoucherSettingId;
   
   this.st3.load();
   
     }.createDelegate(this));

  
  Ext.apply(this, {
   layout : "border",
   items:[{
   tbar : new Ext.Toolbar([
    '贷方凭证类型 :',                     
    this.vouTypeChang,   
    {
     xtype : "tbseparator"
    },
    '本方科目 :',                     
     this.accCodeChange,   
     {
      xtype : "tbseparator"
     },
                          
      {text : "新增",
    iconCls : "btn_add",
    handler : function() {
     this.onAddClick();
     this.st3.load();
    }.createDelegate(this)
   }, {
    xtype : "tbseparator"
   }, {
    text : "修改",
    iconCls : "btn_modify",
    handler : function() {
     this.onModifyClick();
    }.createDelegate(this)
   }, {
    xtype : "tbseparator"
   }, {
    text : "删除",
    iconCls : "btn_delete",
    handler : function() {
     this.onDeleteClick();
    }.createDelegate(this)
   }]),
   items : [this.oppGridPanel],
   split : true,
//   height :100,
   layout : "fit",
   region : "center",
   border : false,
   closable :true,
   title : "贷方凭证分类设置1"
   },{
    tbar : new Ext.Toolbar([                         
              
             {text : "新增",
           iconCls : "btn_add",
           handler : function() {
            this.onAccAddClick();
           }.createDelegate(this)
          }, {
           xtype : "tbseparator"
          }, {
           text : "修改",
           iconCls : "btn_modify",
           handler : function() {
            this.onAccModifyClick();
           }.createDelegate(this)
          }, {
           xtype : "tbseparator"
          }, {
           text : "删除",
           iconCls : "btn_delete",
           handler : function() {
            this.onAccDeleteClick();
           }.createDelegate(this)
          }]),
          items : [this.accountGridPanel],
          layout : "fit",
          split : true,
          height :200,
          region : "south",
          border : false,
          closable :true,
          title : "贷方凭证分类设置2"
   }
   ]
  });
 },
 
 
 isWhether:function(val)
 {
  if(val == '0')
  {
   return '否';
  }
  else if(val == '1')
  {
   return '是';
  }
 },
 isValid: function(val)
 {
  if(val == '0')
  {
   return '无效';
  }
  else if(val == '1')
  {
   return '有效';
  }
 }
 

 
});
Ext.reg('speedy.cm.tcmVoucherOppSet.MainPanel', speedy.cm.tcmVoucherOppSet.MainPanel);
 

  • 大小: 22.8 KB
分享到:
评论

相关推荐

    extjs的ComboBox 2级联动

    在实现二级联动时,通常会涉及两个ComboBox,一个用于一级选择(如省份),另一个用于二级选择(如城市)。当一级选择改变时,我们需要更新二级ComboBox的store,使其只显示与选定的一级选项相关的数据。 以下是一...

    datagridview使用combobox进行二级联动

    在这个示例中,`LoadLevel1Categories()`和`LoadSubCategories(int parentId)`是两个假设存在的方法,分别用于加载一级分类和对应父分类ID的二级分类。 总的来说,实现`datagridview`中的`combobox`二级联动需要...

    jQuery EasyUI编辑DataGrid用combobox实现多级联动

    当用户在第一级combobox中选择一个值时,触发该事件,此时可以获取到所选值并根据这个值动态更新第二级combobox的`url`,然后调用`reload`方法重新加载数据。这样,第二级combobox的选项就会基于第一级的选择进行...

    comboBox 加载数据的几种方式

    valueField: 0, // 数组中的第一个元素作为值 textField: 1, // 数组中的第二个元素作为显示文本 onLoadSuccess: function() { $(this).combobox("select", '1'); // 选中第一条数据 } }); ``` #### 总结 综...

    ExtJS Combobox二级联动列子

    3. 动态加载:根据第一个Combobox的选中值,向服务器发送请求获取相关联的第二级数据,然后填充到第二个Combobox的Store中。 三、具体步骤 1. 创建Store:定义两个Store,分别用于存储一级和二级的数据,可以使用...

    wpf comboBox 下拉框全国地址联动

    在本文中,我们将深入探讨如何在WPF(Windows Presentation Foundation)应用程序中实现一个基于comboBox的全国地址联动功能。ComboBox是WPF中一个常用的控件,它允许用户在下拉列表中选择一个项或者输入自定义内容...

    SQLite 数据库绑定combobox c# windows mobile

    本教程将深入探讨如何在C#环境下使用SQLite数据库与ComboBox控件进行交互,帮助开发者实现数据查询和展示。 首先,我们需要安装SQLite for .NET,这是一个允许.NET应用程序访问SQLite数据库的库。可以通过NuGet包...

    WPF和Prism实现ComboBox省市县三级级联

    当用户在省份ComboBox中选择一个项时,ViewModel可以通过`DelegateCommand`触发事件,更新城市ComboBox的数据。类似地,城市选择也会更新县ComboBox。 4. **事件响应** 在ViewModel中,添加事件处理方法来响应用户...

    c# datagirdview控件内嵌combox方法与内嵌combox可下拉可编辑与combox加载数据库数据

    本教程将详细讲解如何在DataGridView中内嵌ComboBox,并实现可下拉编辑以及从数据库加载数据的功能。 1. **创建内嵌ComboBox** 在C#中,我们首先需要在DataGridView的列定义中设置某一列的数据类型为DataGridView...

    flex datagrid 中实现combobox联动

    当我们需要在DataGrid的不同列中实现ComboBox的联动效果时,即在一个ComboBox的选择改变时,根据选中的值更新另一个ComboBox的选项,这涉及到事件监听、数据绑定和自定义组件等多个知识点。 首先,我们来理解联动的...

    C#动态从SQL数据库载入数据到Listview和ComboBox

    C#动态从SQL数据库载入数据到Listview和ComboBox

    Extjs学习笔记(-):ComboBox联动

    3. **数据更新**:在事件处理器中,我们根据第一个ComboBox选择的值去过滤或刷新第二个ComboBox的数据源。可以使用`store.load`或`store.filter`方法,前者用于重新加载数据,后者用于根据条件过滤现有数据。 4. **...

    Delphi中在ComboBox中添加数据库中字段

    Delphi中在ComboBox中添加数据库中字段

    WinForm中comboBox控件数据绑定实现方法

    WinForm中comboBox控件数据绑定是许多开发者需要掌握的技巧,本文将详细介绍WinForm中comboBox控件数据绑定的实现方法,并结合实例形式分析了WinForm实现comboBox控件数据绑定的常用方法与相关操作技巧。 WinForm中...

    combobox设置默认选项

    ZK中combobox的设置,combobox默认选项的设置,

    用Ext 2.0 combobox 做的省份和城市联动选择框的例程

    在本文中,我们将深入探讨如何使用Ext 2.0的ComboBox组件实现省份和城市联动选择框的功能。Ext是一个强大的JavaScript库,它提供了丰富的用户界面组件,包括ComboBox,用于创建下拉选择框。在这个例程中,我们将看到...

    向comboBox控件传递数据表中的数据

    首先,我们需要了解这段代码的基本功能:它定义了一个名为`CoPassData`的方法,该方法接受两个参数——一个`ComboBox`对象(命名为`cobox`)和一个字符串变量(命名为`TableName`),用于指定数据表的名称。...

    分页comboBox,textBox 绑定数据库

    本话题主要关注如何将分页功能与ComboBox(下拉列表框)和TextBox(文本框)控件结合,以便在Windows Forms或ASP.NET等平台上绑定数据库,实现数据的动态加载和筛选。 首先,我们需要理解ComboBox和TextBox的基本...

    Combobox控件某些项不能选的例子

    - 当Combobox的数据源来自数据库或其他数据集时,要确保所有数据项都被正确地添加到控件中,并且状态设置正确。 7. **解决方案** - 检查并修正代码中的逻辑错误,确保所有项的Enabled和Visible属性设置正确。 - ...

    ComboBox 绑定数据库

    本实例主要讲解如何将数据库中的数据绑定到`ComboBox`,使得用户可以从列表中选择或者直接输入数据。这个过程涉及到数据访问、数据绑定以及UI交互等关键知识点。 首先,我们需要理解`ComboBox`的基本操作。`...

Global site tag (gtag.js) - Google Analytics