<%@ page language="java" import="java.util.*"  contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%><html>
  <head>
    <title>数据列表</title>
<script type="text/javascript"> function chckeDate(){
    var v1 = Ext.getCmp("startDate").getValue();
    var v2 = Ext.getCmp("endDate").getValue();
    if(v1=="" || v2=="") return true;
    return v2 > v1;
}

function chckeDate1(){
    var v1 = Ext.getCmp("bankInnerDate").getValue();
    var v2 = Ext.getCmp("revocationDate").getValue();
    if(v1=="" || v2=="") return true;
    return v2 > v1;
} Ext.onReady(function(){
//定义数据集对象

Ext.override(Ext.menu.Menu, {      
    autoWidth : function(){      
        var el = this.el, ul = this.ul;      
        if(!el){      
            return;      
        }      
        var w = this.width;      
        if(w){      
            el.setWidth(w);      
        }else if(Ext.isIE && !Ext.isIE8){   //Ext2.1.1 支持 Ext.isIE8 属性   
           el.setWidth(this.minWidth);      
            var t = el.dom.offsetWidth;      
            el.setWidth(ul.getWidth()+el.getFrameWidth("lr"));      
        }      
    }      
});    

var checkStore = new Ext.data.Store({//配置分组数据集
autoLoad :true,
reader: new Ext.data.XmlReader({
totalRecords: "results",
record: "SysData",
id: "id"
},
Ext.data.Record.create([
{name: 'id'},
{name: 'bankName'},
{name: 'bankCode'},
{name: 'account'},
{name: 'accountName'},
{name: 'accountProperty'},
{name: 'bankInnerDate'},
{name: 'accountState'},
{name: 'firstDate'},
{name: 'lastDate'},
{name: 'depositor'},
{name: 'approval'},
{name: 'regAreaCode'},
{name: 'revocationDate'}
])
),
proxy : new Ext.data.HttpProxy({
url : 'fileUpload.action?method=dataList&type=3&state=3'
})
});

var typeStore = new Ext.data.Store({//配置分组数据集

reader: new Ext.data.XmlReader({
totalRecords: "results",
record: "SysData",
id: "id"
},
Ext.data.Record.create([
{name: 'id'},
{name: 'bankName'},
{name: 'bankCode'},
{name: 'account'},
{name: 'accountName'},
{name: 'accountProperty'},
{name: 'bankInnerDate'},
{name: 'accountState'},
{name: 'firstDate'},
{name: 'lastDate'},
{name: 'depositor'},
{name: 'approval'},
{name: 'regAreaCode'},
{name: 'revocationDate'}
])
),
proxy : new Ext.data.HttpProxy({
url : 'fileUpload.action?method=dataList&type=3'
})
});

//创建工具栏组件
var toolbar = new Ext.Toolbar([
{text : '导入数据',iconCls:'add',handler : showAddBookType},
{text : '检查数据',iconCls:'add',handler : checkData},
{text : '修改数据',iconCls:'option',handler : showModifyBank},
{text : '删除数据',iconCls:'remove',handler : showDeleteBookType},
{text : '数据上报',iconCls:'add',handler : uploadData},
{text : '数据对比',iconCls:'add',handler : contrastData}
]);
//创建Grid表格组件
var cb = new Ext.grid.CheckboxSelectionModel()
var colModel = new Ext.grid.ColumnModel([
    new Ext.grid.RowNumberer({
header : '行号',
width : 40
}),//表格行号组件
cb,
{header: "序号", width: 80, dataIndex: 'id', sortable: true},
{header: "银行机构名称", width: 180, dataIndex: 'bankName', sortable: true},
{header: "银行机构代码", width: 280, dataIndex: 'bankCode', sortable: true},
{header: "账号", width: 280, dataIndex: 'account', sortable: true},
{header: "账户名称", width: 280, dataIndex: 'accountName', sortable: true},
{header: "存款人名称", width: 280, dataIndex: 'depositor', sortable: true},
{header: "账户性质", width: 280, dataIndex: 'accountProperty', sortable: true},
{header: "注册地地区代码", width: 280, dataIndex: 'regAreaCode', sortable: true},
{header: "开户许可证核准号", width: 280, dataIndex: 'approval', sortable: true},
{header: "开户日期", width: 280, dataIndex: 'bankInnerDate', sortable: true},
{header: "撤销日期", width: 280, dataIndex: 'revocationDate', sortable: true},
{header: "账户状态", width: 280, dataIndex: 'accountState', sortable: true}
 ]);
var pageTolbar=new Ext.PagingToolbar({
pageSize: 20,//每页显示的记录值
store: typeStore,
displayInfo: true,
displayMsg: '从{0}条数据到{1}条数据,共{2}条数据',
emptyMsg: "没有记录"
});
var dataGrid = new Ext.grid.GridPanel({
applyTo : 'grid-div',
tbar : toolbar,
store: typeStore,
autoScroll:true,
autoWidth:true,
viewConfig : {
autoFill : true
},
sm : cb,
colModel:colModel ,
bbar:pageTolbar });
typeStore.load({params:{start:0, limit:20}}); 
//创建新增或修改信息的form表单
Ext.QuickTips.init();
Ext.form.Field.prototype.msgTarget = 'side';//统一指定错误信息提示方式
var dataForm = new Ext.FormPanel({
labelSeparator : ":",
frame:true,
border:false,
         monitorValid:true,
items : [
{
xtype:'textfield',
width : 300,
allowBlank : false,
blankText : '银行机构名称不能为空',
name : 'bankName',
fieldLabel:'银行机构名称'
},{
xtype:'textfield',
width : 300,
name : 'bankCode',
allowBlank : false,
fieldLabel:'银行机构代码'
},{
xtype:'textfield',
width : 300,
allowBlank : false,
blankText : '账号不能为空',
name : 'account',
maxLength:'23',
minLength:'23',
fieldLabel:'账号'
},{
xtype:'textfield',
width : 300,
blankText : '账户名称不能为空',
allowBlank : false,
name : 'accountName',
fieldLabel:'账户名称'
},{
xtype:'textfield',
width : 300,
blankText : '存款人名称不能为空',
allowBlank : false,
name : 'depositor',
fieldLabel:'存款人名称'
},{
xtype:'textfield',
width : 300,
allowBlank : false,
blankText : '账户性质不能为空',
name : 'accountProperty',
fieldLabel:'账户性质'
},{
xtype:'textfield',
width : 300,
allowBlank : false,
blankText : '注册地地区代码不能为空',
name : 'regAreaCode',
fieldLabel:'注册地地区代码'
},{
xtype:'textfield',
width : 300,
blankText : '开户许可证不能为空',
name : 'approval',
fieldLabel:'开户许可证'
},{
xtype:'datefield',
width : 300,
allowBlank : false,
blankText : '开户日期不能为空',
name : 'bankInnerDate',
format:'Y-m-d',
id:'bankInnerDate',
//validator:chckeDate1,
fieldLabel:'开户日期'
},{
xtype:'datefield',
width : 300,
id:'revocationDate',
//allowBlank : false,
format:'Y-m-d',
//validator:chckeDate1,
blankText : '销户日期不能为空',
name : 'revocationDate',
fieldLabel:'销户日期'
},{
xtype:'textfield',
width : 300,
allowBlank : false,
name : 'accountState',
fieldLabel:'账户状态'
},{
xtype:'hidden',
name : 'id'
}
],
buttons:[
{
text : '关闭',
handler : function(){
win.hide();
}
},{
text : '提交',
formBind:true,
handler : submitForm
}
]
});
//创建弹出窗口
var win = new Ext.Window({
layout:'fit',
    width:500,
    closeAction:'hide',
    height:400,
resizable : false,
shadow : true,
modal :true,
    closable:true,
    bodyStyle:'padding:5 5 5 5',
    animCollapse:true,
items:[dataForm]
});

var form = new Ext.form.FormPanel({
        baseCls: 'x-plain',
        labelWidth: 80,
        url:'fileUpload.action?method=uploadFiles&type=3',
        fileUpload:true,
        defaultType: 'textfield',
        items: [{
            xtype: 'textfield',
            fieldLabel: '请选择文件',
            name: 'file',
            inputType: 'file',
            allowBlank: false,
            blankText: '文件错误',
            anchor: '90%'  // anchor width by percentage
        }]    
});

 var win22 = new Ext.Window({ 
        title: '数据导入',
        width: 400,
        height:200,
        minWidth: 300,
        minHeight: 100,
        layout: 'fit',
        plain:true,
        modal :true,
        bodyStyle:'padding:5px;',
        buttonAlign:'center',
        items: form,
        buttons: [{
            text: '导入',
            handler: function() {
                if(form.form.isValid()){
                    //Ext.MessageBox.show({
                           //title: '正在上传',
                          // msg: '请稍等……………………',
                          // progressText: '',
                          // width:300,
                          // progress:true,
                          // closable:false,
                          // animEl: 'loding'
                       //});
                    form.getForm().submit({
                     waitMsg:"请稍等,正在导入………………",
                            success: function(form, action){
                           Ext.Msg.alert('提示',"数据导入成功");
                           win22.hide();
                          
                          dataGrid.store.reload();
                          },
                           failure: function(form, action){
                            var result = Ext.util.JSON.decode(action.response.responseText);
                          Ext.Msg.alert('提示', result.msg);
                           }
                    })
                               }
           }
        },{
            text: '关闭',
            handler:function(){win22.hide();}
        }]
    });

var bankStore = new Ext.data.Store({//配置分组数据集
autoLoad :true,
reader: new Ext.data.XmlReader({
totalRecords: "results",
record: "SysBank",
id: "codes"
},['codes','bankName']),
proxy : new Ext.data.HttpProxy({
url : 'login.action?method=bankList&bankType=1'
})
});

解决方案 »

  1.   

    第二部分
    var ontrastForm = new Ext.FormPanel({
    labelSeparator : ":",
    frame:true,
    border:false,
             monitorValid:true,
    items : [
    {
    xtype:'combo',
    fieldLabel:'检查机构',
    width : 200,
    mode:"local",
                        triggerAction: 'all',
                        editable: false,
                        emptyText: "请选择",
                        name:'branchId',
                        hiddenName:'branchId',
                        store: bankStore,
                        displayField: 'bankName',
                        valueField:'codes'
    }
    ],
        buttons:[
    {
    text : '关闭',
    handler : function(){
    ontrastWin.hide();
    }
    },{
    text : '提交',
    formBind:true,
    handler : submitContrastForm
    }
    ]
    });
    var ontrastWin=new Ext.Window({
    layout:'fit',
        width:400,
        closeAction:'hide',
        height:200,
    resizable : false,
    shadow : true,
    modal :true,
        closable:true,
        bodyStyle:'padding:5 5 5 5',
        animCollapse:true,
    items:[ontrastForm]
    });

    function submitContrastForm(){
    ontrastForm.form.submit({
    //clientValidation:true,//进行客户端验证
    waitMsg : '正在提交数据请稍后',//提示信息
    waitTitle : '提示',//标题
    url : 'contras.action?method=cons',//请求的url地址
    method:'POST',//请求方式
    success:function(form,action){//加载成功的处理函数
    ontrastWin.hide();
    Ext.Msg.alert('提示','比对成功');
    },
    failure:function(form,action){//加载失败的处理函数
    ontrastWin.hide();
    var result = Ext.util.JSON.decode(action.response.responseText);
    Ext.Msg.alert('提示',result.msg);
    }
    });

    }
    function contrastData(){
    Ext.MessageBox.confirm("提示","您确定要进行数据对比吗,对比后将删除您和你对比机构上报的数据",function(box){
    if(box=='yes'){
    ontrastWin.show();
    }
    });
    }
    dataForm.isCheck=true;
    //显示新建窗口
    function showAddBookType(){
    if(dataForm.isCheck){
    win22.show();
    }

    dataForm.isCheck=true;
    dataGrid.reconfigure(typeStore, colModel);
    //重新绑定分页工具栏
    pageTolbar.bind(typeStore);
    //重新加载数据集
    typeStore.load({params:{start:0,limit:20}}); 
    }


    function checkData(){

    dataForm.isCheck=false;
    dataGrid.reconfigure(checkStore, colModel);
    //重新绑定分页工具栏
    pageTolbar.bind(checkStore);
    //重新加载数据集
    checkStore.load({params:{start:0,limit:20}}); 
    }

    //显示新建窗口
    function uploadData(){
    //win22.show();
    var recs = dataGrid.store.getCount();
    if(dataForm.isCheck){
    Ext.MessageBox.alert("提示","请先检查数据后在上报数据!")
    }else if(recs>0){
    Ext.MessageBox.alert("提示","请将数据修改完整后上传数据!!")
    }else{
    Ext.MessageBox.confirm("提示","您确定要上报选数据吗?",function(btn){
    if(btn=='yes'){
    uploadokData();
    }
    })
    }
    }
    //显示修改窗口
    function showModifyBank(){
    var bookTypeList = getBookTypeIdList();
    var num = bookTypeList.length;
    if(num > 1){
    Ext.MessageBox.alert("提示","每次只能修改一条数据信息。")
    }else if(num == 1){
    dataForm.isAdd = false;
    win.setTitle("修改数据信息");
    win.show();
    var bookTypeId = bookTypeList[0];
    loadForm(bookTypeId);
    }
    }
    //显示删除对话框
    function showDeleteBookType(){
    var bookTypeList = getBookTypeIdList();
    var num = bookTypeList.length;
    if(num > 1){
    Ext.MessageBox.alert("提示","每次只能删除一条数据信息。")
    }else if(num == 1){
    Ext.MessageBox.confirm("提示","您确定要删除所选数据吗?",function(btnId){
    if(btnId == 'yes'){
    var bookTypeId = bookTypeList[0];
    deleteBookType(bookTypeId);
    }
    })
    }
    }
    //删除数据
    function deleteBookType(dataid){
    var msgTip = Ext.MessageBox.show({
    title:'提示',
    width : 250,
    msg:'正在删除数据请稍后......'
    });
    Ext.Ajax.request({
    url : 'fileUpload.action?method=delData',
    params : {id : dataid},
    method : 'POST',
    success : function(response,options){
    msgTip.hide();
    var result = Ext.util.JSON.decode(response.responseText);
    if(result.success){
    //服务器端数据成功删除后,同步删除客户端列表中的数据
    dataGrid.store.load({params:{start:0, limit:20}}); 
    Ext.Msg.alert('提示','删除数据成功。');
    }else{
    }
    },
    failure : function(response,options){
    msgTip.hide();
    Ext.Msg.alert('提示','删除数据请求失败!');
    }
    });
    }
    //加载表单数据
    function loadForm(bookTypeId){
    dataForm.form.load({
    waitMsg : '正在加载数据请稍后',//提示信息
    waitTitle : '提示',//标题
    url : 'fileUpload.action?method=getDataAndId',//请求的url地址
    params : {id:bookTypeId},
    method:'GET',//请求方式
    success:function(form,action){//加载成功的处理函数
    //Ext.Msg.alert('提示','数据加载成功');
    },
    failure:function(form,action){//加载失败的处理函数
    Ext.Msg.alert('提示','数据加载失败');
    }
    });
    }

    //数据上传
    function uploadokData(){
    var msgTip = Ext.MessageBox.show({
    title:'提示',
    width : 250,
    msg:'正在上传数据请稍后......'
    });
    Ext.Ajax.request({
    url : 'fileUpload.action?method=uploadData&type=3',
    method : 'POST',
    success : function(response,options){
    msgTip.hide();
    Ext.Msg.alert('提示','上报数据成功。');
    },
    failure : function(response,options){
    msgTip.hide();
    Ext.Msg.alert('提示','上报数据请求失败!');
    }
    });
    }
    //提交表单数据
    function submitForm(){
    //判断当前执行的提交操作,isAdd为true表示执行新增操作,false表示执行修改操作
    if(dataForm.isAdd){
    //新增信息
    dataForm.form.submit({
    //clientValidation:true,//进行客户端验证
    waitMsg : '正在提交数据请稍后',//提示信息
    waitTitle : '提示',//标题
    url : 'fileUpload.action?method=uploadData',//请求的url地址
    method:'POST',//请求方式
    success:function(form,action){//加载成功的处理函数

    Ext.Msg.alert('提示','上传成功');
    },
    failure:function(form,action){//加载失败的处理函数
    Ext.Msg.alert('提示','上传失败');
    }
    });
    }else{
    //修改信息
    dataForm.form.submit({
    clientValidation:true,//进行客户端验证
    waitMsg : '正在提交数据请稍后',//提示信息
    waitTitle : '提示',//标题
    url : 'fileUpload.action?method=updataData',//请求的url地址
    method:'POST',//请求方式
    success:function(form,action){//加载成功的处理函数
    win.hide();
    //updateBookList(action.result.bookTypeId);
    dataGrid.store.reload();
    Ext.Msg.alert('提示','修改数据成功');
    },
    failure:function(form,action){//加载失败的处理函数
    Ext.Msg.alert('提示','修改数据失败');
    }
    });
    }
    }
    //明细数据修改后,同步更新表信息
    function updateBookList(bookTypeId){
    var fields = getFormFieldsObj(bookTypeId);
    var index = typeStore.find('id',fields.id);
    if(index != -1){
    var item = typeStore.getAt(index);
    for(var fieldName in fields){
    item.set(fieldName,fields[fieldName]);
    }
    typeStore.commitChanges();
    }else{
    var rec = new Ext.data.Record(fields);
    typeStore.add(rec);
    }
    }
    //取得表单数据
    function getFormFieldsObj(bookTypeId){
    var fields = dataForm.items;
    var obj = {};
    for(var i = 0 ; i < fields.length ; i++){
    var item =  fields.itemAt(i);
    var value = item.getValue();
    obj[item.name] = value;
    }
    if(Ext.isEmpty(obj['id'])){
    obj['id'] = bookTypeId;
    }
    return obj;
    }
    //取得所选记录
    function getBookTypeIdList(){
    var recs = dataGrid.getSelectionModel().getSelections();
    var list = [];
    if(recs.length == 0){
    Ext.MessageBox.alert('提示','请选择要进行操作的数据!');
    }else{
    for(var i = 0 ; i < recs.length ; i++){
    var rec = recs[i];
    list.push(rec.get('id'))
    }
    }
    return list;
    }
    });
    </script>
    <body>
    <div id='grid-div' style="width:100%; height:100%;"/>
      </body>
    </html>执行数据对比点提交按钮时,js报错行24,字符1521,语法错误,代码:0,实在找不到问题所在了,请指教。
      

  2.   

    autoWidth : function(){      
                    var el = this.el, ul = this.ul;      
                    if(!el){      
                        return;      
                    }      
                    var w = this.width;      
                    if(w){      
                        el.setWidth(w);      
                    }else if(Ext.isIE && !Ext.isIE8){   //Ext2.1.1 支持 Ext.isIE8 属性   
                       el.setWidth(this.minWidth);      
                        var t = el.dom.offsetWidth;      
                        el.setWidth(ul.getWidth()+el.getFrameWidth("lr"));      
                    }      
                } 
    autoWidth这个属性不是个值么,你设置为函数,要么就为自运行函数返回一个值。
      

  3.   

    我表示汗~~~
    这么一大堆 好歹楼主自己先alert调试下 看到底走到哪出问题了 
      

  4.   

    代码太多了,自己用火狐的firebug测下就知道了。
      

  5.   

    我错了,简单说下,之前运行都没有问题的,因为修改原因删除了两个日期控件的代码后,按提交就报错了,删除submitContrastForm()内容的话不报错。
     var ontrastForm = new Ext.FormPanel({
                labelSeparator : ":",
                frame:true,
                border:false,
                monitorValid:true,
                items : [
                    {
                        xtype:'combo',
                        fieldLabel:'检查机构',
                        width : 200,
                        mode:"local",
                        triggerAction: 'all',
                        editable: false,
                        emptyText: "请选择",
                        name:'branchId',
                        hiddenName:'branchId',
                        store: bankStore,
                        displayField: 'bankName',
                        valueField:'codes'
                    },{
                    删除的代码,原为日期选择框A
                      },{
                    删除的代码,原为日期选择框B
                    }         
                ],
                buttons:[
                    {
                        text : '关闭',
                        handler : function(){
                            ontrastWin.hide();
                        }
                    },{
                        text : '提交',
                        formBind:true,
                        handler : submitContrastForm
                    }
                ]
            });
      

  6.   

    哥哥,firebug打断点,走一下看看,有错误不都有提示的嘛
      

  7.   

    firebug:
    XML tag name mismatch (expected HR)
    [在此错误处中断] </pre></p><p><b>note</b> <u>The full s...ache Tomcat/6.0.20</h3></body></html>)
    ext-all.js (第 80 行)
      

  8.   

    检查到是submit后,后台接受函数参数错误导致的问题。散分了。