ext表格范例

/* *
 * @include "http://www.cnblogs.com/extclient/appbase.js"
 * @include "./SearchField.js"
 
*/
 
/*
 * 客户资料管理
 
*/
// 创建命名空间
Ext.namespace( ' net.meetrice ' );
Ext.namespace(
' net.meetrice.zdglobal ' );
  

/* *
 * 内容表单
 * @class net.meetrice.zdglobal.dtlformpanel
 * @extends Ext.form.FormPanel
 
*/
net.meetrice.zdglobal.dtlformpanel 
=  Ext.extend(Ext.form.FormPanel,{
    initComponent:
function () {
        Ext.apply(
this ,{
            labelWidth:
60 ,
            labelAlign:
' right ' ,
            bodyStyle:
' padding:10px ' ,
            id:
' dtlformpanel ' ,
            items:[{
                xtype:
' fieldset ' ,
                title:
' 数据字典 ' ,
                autoHeight:
true ,
                items:[
                    {xtype:
' textfield ' ,fieldLabel: ' 编号 ' ,name: ' jsbh ' ,width: 388 },
                    {xtype:
' textfield ' ,fieldLabel: ' 业务类型 ' ,name: ' ktype ' ,width: 388 },
                    {xtype:
' textfield ' ,fieldLabel: ' 数字代码 ' ,name: ' numkey ' ,width: 388 },
                    {xtype:
' textfield ' ,fieldLabel: ' 拼音代码 ' ,name: ' pykey ' ,width: 388 },
                    {xtype:
' textfield ' ,fieldLabel: ' 字典内容 ' ,name: ' kvalue ' ,width: 388 },
                    {xtype:
' textfield ' ,fieldLabel: ' 备用A ' ,name: ' valuea ' ,width: 388 },
                    {xtype:
' textfield ' ,fieldLabel: ' 备用B ' ,name: ' valueb ' ,width: 388 },
                    {xtype:
' textfield ' ,fieldLabel: ' 备用C ' ,name: ' valuec ' ,width: 388 }
                    ]
            }]
        });
        net.meetrice.zdglobal.dtlformpanel .superclass.initComponent.call(
this );
    }
    
});

/* *
 * 表单窗口
 * @class net.meetrice.zdglobal.dtlwin
 * @extends Ext.Window
 
*/         

net.meetrice.zdglobal.dtlwin 
=   Ext.extend(Ext.Window,{
    initComponent:
function () {
        Ext.apply(
this ,{
            width:
535 ,
            height:
400 ,
            layout:
' fit ' ,
            closeAction:
' hide ' ,
            modal:
true
        });
        net.meetrice.zdglobal.dtlwin.superclass.initComponent.call(
this );
    }
});



/* *
 * 主表格入口
 * @class net.meetrice.ZdGlobal
 * @extends Ext.grid.GridPanel
 
*/
net.meetrice.ZdGlobal 
=  Ext.extend(Ext.grid.GridPanel,{
    
    
    initComponent:
function () {
        
        
var  pageSize = 10 ;
        
var  ds  =   new  Ext.data.Store({
            url:
' ./extlist.do ' ,
            reader:
new  Ext.data.JsonReader({
                root:
' list ' ,
                totalProperty:
' totalSize ' ,
                id:
' id '
            },[
' id ' , ' jsbh ' , ' ktype ' , ' numkey ' , ' pykey ' , ' kvalue ' , ' valuea ' , ' valueb ' , ' valuec ' ]),
            baseParams:{
                limit:pageSize
            },
            remoteSort:
true
        });
        
var  sm  =   new  Ext.grid.CheckboxSelectionModel();
        
var  cm  =   new  Ext.grid.ColumnModel([
            
new  Ext.grid.RowNumberer(),
            sm,
            {header:
' 编号 ' ,width: 100 ,sortable: true ,dataIndex: ' jsbh ' },
            {header:
' 业务类型 ' ,width: 100 ,sortable: true ,dataIndex: ' ktype ' },
            {header:
' 数字代码 ' ,width: 100 ,sortable: true ,dataIndex: ' numkey ' },
            {header:
' 拼音代码 ' ,width: 100 ,sortable: true ,dataIndex: ' pykey ' },
            {header:
' 字典内容 ' ,width: 300 ,sortable: true ,dataIndex: ' kvalue ' },
            {header:
' 备用字段A ' ,width: 100 ,sortable: true ,dataIndex: ' valuea ' },
//             {header:'s备用字段B',width:100,sortable:true,dataIndex:'bvalueb'},
//
            {header:'s备s用字段C',width:100,sortable:true,dataIndex:'cvaluec'},
            {header:  "" ,
             width:
25 ,
             align: 
' center ' ,
             renderer: 
function () {
                
return   ' <div class="controlBtn" id="abcd"> '   +
                        
' <img src="http://images.cnblogs.com/delete.gif" width="16" height="16" class="control_del"> '   +
                        
' </div> ' ;
                        }
            }
        ]);
        
        
/* *
         * 扩展类的构建开始
         
*/
        Ext.apply(
this ,{
            store:ds
            ,sm:sm
            ,cm: cm
            ,bbar:
new  Ext.PagingToolbar({
                pageSize:pageSize,
                store:ds,
                displayInfo:
true
            })
            , tbar:[
                {text:
' 新增 ' ,cls: ' x-btn-text-icon ' ,icon: ' http://images.cnblogs.com/add.gif ' ,handler: this .newZdGlobal,scope: this }, ' - ' ,
                {text:
' 修改 ' ,cls: ' x-btn-text-icon ' ,icon: ' http://images.cnblogs.com/edit.gif ' ,handler: this .editZdGlobal,scope: this }, ' - ' ,
                {text:
' 删除 ' ,cls: ' x-btn-text-icon ' ,icon: ' http://images.cnblogs.com/delete.gif ' ,handler: this .deleteZdGlobal,scope: this }, ' - ' ,
                {text:
' 查询 ' ,id: ' btn-query ' ,cls: ' x-btn-text-icon ' ,icon: ' http://images.cnblogs.com/query.gif ' ,handler: this .buildQueryWin,scope: this },
                
' -> '
            ]
        });
        
// 调用父类构建函数
        net.meetrice.ZdGlobal.superclass.initComponent.call( this );
        
// 加载数据
        ds.load({params:{start: 0 }});
        

         
// 扩展类的弹出窗口
          this .dtlformpanel  =   new  net.meetrice.zdglobal.dtlformpanel();
         
this .dtlwin  =    new  net.meetrice.zdglobal.dtlwin({items: this .dtlformpanel,buttons:[{
                text:
' 保存 ' ,
                handler:
this .saveZdGlobal,
                scope:
this
            },{
                text:
' 取消 ' ,
                handler:
function (){ this .dtlwin.hide();},
                scope:
this
            }]});
            
        
// 双击操作
          this .on({ " dblclick " : this .dblclick});
         
         
this .addListener( ' rowcontextmenu ' this .onMessageContextMenu);
         
    }
   
/* *
    * 构建函数结束
    
*/
    
    
// 右键菜单
    ,onMessageContextMenu :  function  (grid, rowIndex, e) {
        e.stopEvent();
        
var  coords  =  e.getXY();
        
var  record  =  grid.getStore().getAt(rowIndex);
        
var  messageContextMenu  =   new  Ext.menu.Menu({
            id: 
' messageContextMenu ' ,
            items: [
                    {icon:
' http://images.cnblogs.com/edit.gif ' ,text:  ' 编辑 ' ,handler: rgtEdit,scope:  this },
                    {id: 
' delete ' ,icon: ' http://images.cnblogs.com/delete.gif ' ,handler: rgtDelete,text:  ' 删除 ' }
                   ]
        });
        
// 右键编辑
         function  rgtEdit() {
                        messageContextMenu.hide();
                        
this .dtlwin.setTitle( ' 修改业务字典 ' );
                        
this .dtlwin.show();
                        
this .dtlformpanel.form.reset();
                        
this .dtlformpanel.form.loadRecord(record);
                        
this .dtlformpanel.url  =   ' ./extupdate.do?id= ' + record.data.id;
        };
        
// 右键删除
         function  rgtDelete() {
            messageContextMenu.hide();
            
            
if  ( ! record || record.length  ==   0 ) {
                Ext.Msg.alert(
" 提示 " " 请先选择要删除的�记录 " );
                
return ;
            }
            Ext.MessageBox.confirm(
' 确认删除 ' , ' 确定要删除这些记录? ' , function (btn){
                
if  (btn  ==   ' yes ' ){
                        Ext.Ajax.request({
                        url:
' ./extdelete.do?ids= ' + record.data.id,
                        method:
' POST ' ,
                        success:
function (response){
                            
var  data  =  Ext.util.JSON.decode(response.responseText);
                            
if  (data.success  ==   true ){
                                grid.getStore().remove(record);
                                grid.getView().refresh();
                            }
                            
else {
                                Ext.MessageBox.alert(
' 警告 ' ,data.msg);
                            }
                             grid.getStore().reload();
                        },
                        scope:
this
                    });
                }},
this );
        };
        messageContextMenu.showAt([coords[
0 ], coords[ 1 ]]);
        e.preventDefault();
// to disable the standard browser context menu
    }
    
    
// 双击事件
    ,dblclick : function (){
            
var  sm  =   this .getSelectionModel();
               
var  record = null ;
            
try {
                record
= sm.getSelected();
                
if (record == null ){
                    
return ;
                }
            }
            
catch (e){
                
try {
                    record
= sm.selection.record();
                }
                
catch (ex){}
            }
            
this .showWinForm(record);
    }
    
// 双击打开窗口
    ,showWinForm: function (record){
 
        
this .dtlwin.setTitle( ' 修改业务字典 ' );
        
this .dtlwin.show();
        
this .dtlformpanel.form.reset();
        
this .dtlformpanel.form.loadRecord(record);
        
this .dtlformpanel.url  =   ' ./extupdate.do?id= ' + record.data.id;

    }
    
    
// 新建窗口
    ,newZdGlobal :  function (){
        
this .dtlwin.setTitle( ' 新建业务字典 ' );
        
this .dtlwin.show();
        
this .dtlformpanel.form.reset();
        
this .dtlformpanel.url  =   ' ./extsave.do ' ;
    }
    
    
// 编辑操作
    ,editZdGlobal: function (){
        
var  records  =   this .getSelectionModel().getSelections(); // 单选
        
       
if  (records.length != 1 ) {
            Ext.Msg.alert(
" 提示 " " 请先选择要修改的记录 " );
            
return ;
        }
        
this .dtlwin.setTitle( ' 修改业务字典 ' );
        
this .dtlwin.show();
        
this .dtlformpanel.form.reset();
        
this .dtlformpanel.form.loadRecord(records[ 0 ]);
        
this .dtlformpanel.url  =   ' ./extupdate.do?id= ' + records[ 0 ].data.id;

    }
    
    
// 删除操作
    ,deleteZdGlobal: function (){
        
var  records  =   this .getSelectionModel().getSelections();
        
if  ( ! records || records.length  ==   0 ) {
            Ext.Msg.alert(
" 提示 " " 请先选择要删除的�记录 " );
            
return ;
        }
        Ext.MessageBox.confirm(
' 确认删除 ' , ' 确定要删除这些记录? ' , function (btn){
            
if  (btn  ==   ' yes ' ){
                Ext.Ajax.request({
                    url:
' ./extdelete.do?ids= ' + RecordArrayUtils.get(records,  ' id ' ),
                    method:
' POST ' ,
                    success:
function (response){
                        
var  data  =  Ext.util.JSON.decode(response.responseText);
                        
if  (data.success  ==   true ){
                            
for ( var  i  =   0 ; i  <  records.length; i ++ ) {
                                 
this .getStore().remove(records[i]);
                                
this .getView().refresh();
                             }
                             
this .getStore().reload();
                        }
                        
else {
                            Ext.MessageBox.alert(
' 警告 ' ,data.msg);
                        }
                    },
                    scope:
this
                });
            }
        },
this );
    }
    
    
// 保存操作
    ,saveZdGlobal: function (){
        
        
if  ( this .dtlformpanel.form.isValid()  ==   false ){
            
return ;
        }
        
this .dtlformpanel.form.submit({
            url:
this .dtlformpanel.url,
            success:
function (form,action){
                Ext.MessageBox.alert(
' 警告 ' ,action.result.msg);
                
this .dtlwin.hide();
                  
this .getStore().reload();
            },
            scope:
this ,
            failure:
function (form,action){
                Ext.MessageBox.alert(
' 警告 ' ,action.result.msg);
            }
        })
    
    }

});
 
/* *
 * 注册主表格的xtype
 
*/
Ext.reg(
' zdglobal ' , net.meetrice.ZdGlobal);

/* *
 * 程序入口
 
*/
Ext.onReady(
function (){
    Ext.QuickTips.init();
    
var  vp  =   new  Ext.Viewport({
            layout:
' fit ' ,
            items:[{xtype:
' zdglobal ' ,region: ' center ' }]
    })
});


你可能感兴趣的:(ext)