dialogeditor.js

来自「anewssystem新闻发布系统集成使用了spring hibernate f」· JavaScript 代码 · 共 454 行 · 第 1/2 页

JS
454
字号
        Ext.get(document.body).on("click", grid.handleClickOutside, grid);
    }

   /************************************************************
    * Create a new dialog - reuse by create and edit part
    ************************************************************/
    function createNewDialog(dialogName) {
        var thisDialog = new Ext.LayoutDialog(dialogName, {
            modal:true,
            autoTabs:true,
            proxyDrag:true,
            resizable:false,
            width: 480,
            height: 302,
            shadow:true,
            center: {
                autoScroll: true,
                tabPosition: 'top',
                closeOnTab: true,
                alwaysShowTabs: false
            }
        });
        thisDialog.addKeyListener(27, thisDialog.hide, thisDialog);
        thisDialog.addButton('Cancel', function() {thisDialog.hide();});

        return thisDialog;
    };

   /************************************************************
    * Action - update
    *   handle double click
    *   user select one of the item and want to update it
    ************************************************************/
    grid.on('rowdblclick', function(grid, rowIndex, e) {
        var selectedId = ds.data.items[rowIndex].id;

        // get information from DB and set form now...
        var account_data = new Ext.data.Store({
            proxy: new Ext.data.HttpProxy({url:'loadData.htm?id=' + selectedId}),
            reader: new Ext.data.JsonReader({},['id','name']),
            remoteSort: false
        });

        account_data.on('load', function() {
            console.info(account_data);
            // set value now
            var updateId = account_data.getAt(0).data['id'];
            name_show.setValue(account_data.getAt(0).data['name']);
            console.info(account_data.getAt(0).data['name']);

            var updateInstanceDlg;
            if (!updateInstanceDlg) {
                updateInstanceDlg = createNewDialog("a-updateInstance-dlg");
                updateInstanceDlg.addButton('Save', function() {

                    // submit now... all the form information are submit to the server
                    // handle response after that...
                    if (form_instance_update.isValid()) {
                        form_instance_update.submit({
                            params:{id : updateId},
                            waitMsg:'更新数据...',
                            reset: false,
                            failure: function(form_instance_update, action) {
                                Ext.MessageBox.alert('Error Message', action.result.errorInfo);
                            },
                            success: function(form_instance_update, action) {
                                Ext.MessageBox.alert('Confirm', action.result.info);
                                updateInstanceDlg.hide();
                                ds.load({params:{start:0, limit:myPageSize}});
                            }
                        });
                    }else{
                        Ext.MessageBox.alert('Errors', 'Please fix the errors noted.');
                    }
                });

                var layout = updateInstanceDlg.getLayout();
                layout.beginUpdate();
                layout.add('center', new Ext.ContentPanel('a-updateInstance-inner', {title: 'Update Account'}));
                layout.endUpdate();

                updateInstanceDlg.show();
            }
        });

        account_data.load();
    });



   /************************************************************
    * Action - add
    *   start to handle add function
    *   new page appear and allow to submit
    ************************************************************/

   /************************************************************
    *  To create add new account dialog now....
    ************************************************************/
    function doAdd() {
        var aAddInstanceDlg;

        if (!aAddInstanceDlg) {
            aAddInstanceDlg = createNewDialog("a-addInstance-dlg");
            aAddInstanceDlg.addButton('Reset', resetForm, aAddInstanceDlg);
            aAddInstanceDlg.addButton('Save', function() {

                // submit now... all the form information are submit to the server
                // handle response after that...
                if (form_instance_create.isValid()) {
                    form_instance_create.submit({
                        waitMsg:'Creating new account now...',
                        reset: false,
                        failure: function(form_instance_create, action) {
                            var info =
                            Ext.MessageBox.alert('Error Message', action.result.errorInfo);
                        },
                        success: function(form_instance_create, action) {
                            Ext.MessageBox.alert('Confirm', action.result.info);
                            aAddInstanceDlg.hide();
                            ds.load({params:{start:0, limit:myPageSize}});
                        }
                    });
                }else{
                    Ext.MessageBox.alert('Errors', 'Please fix the errors noted.');
                }
            });

            var layout = aAddInstanceDlg.getLayout();
            layout.beginUpdate();
            layout.add('center', new Ext.ContentPanel('a-addInstance-inner', {title: 'create account'}));
            layout.endUpdate();

            resetForm();
            aAddInstanceDlg.show();
        }
    }

   /************************************************************
    * Form information - pop-up dialog
    * turn on validation errors beside the field globally
    ************************************************************/
    Ext.form.Field.prototype.msgTarget = 'side';
    Ext.form.Field.prototype.height = 20;
    Ext.form.Field.prototype.fieldClass = 'text-field-default';
    Ext.form.Field.prototype.focusClass = 'text-field-focus';
    Ext.form.Field.prototype.invalidClass = 'text-field-invalid';

    /************************************************************
    * Create new form to hold user enter information
    * This form is used to create new instance
    ************************************************************/
    var name_tf = new Ext.form.TextField({
        fieldLabel: '关键字',
        name: 'name',
        allowBlank:false
    });
    var form_instance_create = new Ext.form.Form({
        labelAlign: 'right',
        url:'insertRow.htm'
    });

    form_instance_create.column({width: 430, labelWidth:120, style:'margin-left:8px;margin-top:8px'});
    form_instance_create.fieldset(
        {id:'desc', legend:'Please fill the field'},
        name_tf
    );

    form_instance_create.applyIfToFields({width:255});
    form_instance_create.render('a-addInstance-form');
    form_instance_create.end();

    resetForm = function() {
        name_tf.setValue('');
    };


    /************************************************************
    * Create form to hold user enter information
    * This form is used to update current instance
    ************************************************************/
    var name_show = new Ext.form.TextField({
        // labelStyle: 'display: none',
        fieldLabel: '关键字',
        name: 'name',
        readOnly: false,
        allowBlank:false
    });
    var form_instance_update = new Ext.form.Form({
        labelAlign: 'right',
        url:'updateRow.htm'
    });

    form_instance_update.column({width: 430, labelWidth:120, style:'margin-left:8px;margin-top:8px'});
    form_instance_update.fieldset(
        {id:'', legend:'修改'},
        name_show
    );

    form_instance_update.applyIfToFields({width:255});
    form_instance_update.render('a-updateInstance-form');
    form_instance_update.end();

    //右键菜单
    function contextmenu(grid, rowIndex,e){
        e.preventDefault();
        e.stopEvent();
        var infoMenu = new Ext.menu.Item({
            id:'infoMenu',
            text: 'infoMenu',
            handler:function(){
                Ext.MessageBox.alert("info",Ext.util.JSON.encode(grid.dataSource.getAt(rowIndex).data));
            }
        });
        var menuList = [infoMenu];

        grid_menu = new Ext.menu.Menu({
            id: 'mainMenu',
            items: menuList
        });

        var coords = e.getXY();
        grid_menu.showAt([coords[0], coords[1]]);
    }
    grid.addListener('rowcontextmenu', contextmenu);
});

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?