/** * 菜单管理 */ var menuMgr = function() { var menuForm;// 菜单表单 var window;// 窗口 var gridPanel;// 表格 var dataStore;// 数据集 return { init : function() { var Menu = new Ext.data.Record.create([ { name : 'idno' }, { name : 'name' }, { name : 'img' }, { name : 'url' }, { name : 'parentid' }, { name : 'sort' }, { name : 'oper' }]); // var fields = ['idno', 'name', 'img', 'url', 'parentid', // 'sort','oper']; // 顶部工具栏 var topBar = new Ext.Toolbar([ { text : '新增菜单', iconCls : 'add', handler : menuMgr.showAddMenuWindow // 注意函数名后不能加() }, { text : '查看修改', iconCls : 'edit', handler : menuMgr.showEditMenuWindow }, { text : '删除菜单', iconCls : 'delete', handler : menuMgr.delMenu } ]); var sm = new Ext.grid.CheckboxSelectionModel();// 定义复选框选择模式 var columnModel = new Ext.grid.ColumnModel([sm, { header : "idno", dataIndex : "idno", sortable : true }, { header : "菜单名称", dataIndex : "name", sortable : true }, { header : "图片", dataIndex : "img", width : 40, align : 'center', // 渲染 renderer : function(imgUrl) { return "<img src='../../images/" + imgUrl + "'/>" } }, { header : "url", dataIndex : "url", width : 150, sortable : false }, { header : "上级菜单", dataIndex : "parentid", sortable : true }, { header : "排序", dataIndex : "sort", sortable : true }, { header : "备注", dataIndex : "oper" }]); var storeCfg = {};// 数据集配置对象 storeCfg['url'] = 'server.jsp'; storeCfg['recordName'] = "Menu"; storeCfg['record'] = Menu; dataStore = Ext.dream.createStore(storeCfg); var gridCfg = {};// 表格配置对象 // cfg['fields'] = fields; gridCfg['dataStore'] = dataStore; gridCfg['tbar'] = topBar; gridCfg['columnModel'] = columnModel; gridCfg['pageSize'] = 4; gridCfg['sm'] = sm; gridPanel = Ext.dream.createGridPanel(gridCfg); Ext.main.createViewPort(gridPanel); }, /** * 创建增加、修改公共菜单 */ createMenuWindow : function() { var cfg = {};// 组合框配置 cfg['fieldLabel'] = '父菜单'; cfg['url'] = 'comboServer.jsp'; cfg['recordType'] = 'Menu', cfg['fields'] = ['name', 'idno']; cfg['name'] = 'parentid'; var parentMenu = Ext.combo.createComboBox(cfg); window = new Ext.Window( { title : '<div align="left">增加菜单</div>', x : 150, y : 100, frame : true, modal : true, closable : true, animCollapse : true,// 可关闭 // 设置面板可展开收缩 collapsible : false, resizable : false, // 配置登录表单 items : [menuForm = new Ext.form.FormPanel( { id : 'menuForm', width : 400, frame : true, border : false, labelAlign : 'right', items : [new Ext.form.TextField( { name : 'idno', value : '0', inputType : 'hidden' }), new Ext.form.TextField( { fieldLabel : '菜单名称', id : 'name', name : 'name', allowBlank : false, blankText : '菜单名称不能为空', width : 200, msgTarget : 'side' }), new Ext.form.TextField( { fieldLabel : '图片名称', id : 'img', name : 'img', allowBlank : false, blankText : '图片名称不能为空', width : 200, msgTarget : 'side' }), new Ext.form.TextField( { fieldLabel : '链接地址', id : 'url', name : 'url', allowBlank : false, blankText : '链接地址不能为空', width : 200, msgTarget : 'side' }), parentMenu, new Ext.form.TextField( { fieldLabel : '排序', id : 'sort', name : 'sort', allowBlank : true, width : 200, msgTarget : 'side' }), new Ext.form.TextField( { fieldLabel : '备注', id : 'oper', name : 'oper', allowBlank : true, width : 200, msgTarget : 'side' })] })] ,// 表单设置结束 });// window结束 }, /** * 显示增加菜单窗口 */ showAddMenuWindow : function() { menuMgr.createMenuWindow(); window.addButton(new Ext.Button( { text : '提交', // 点击提交执行的函数 handler : menuMgr.addMenu })); window.show(); }, /** * 显示查看修改菜单窗口 */ showEditMenuWindow : function() { menuMgr.createMenuWindow(); window.addButton(new Ext.Button( { text : '提交', // 点击提交执行修改的函数 handler : menuMgr.updateMenu })); if (Ext.validate.noSelected(gridPanel)) {// 未选中任何记录 return; } else { if (Ext.validate.selectedMore(gridPanel)) {// 选中多条 return; } else { var idno = ""; idno = Ext.validate.getSelected(gridPanel, 'idno'); var cfg = {}; cfg['form'] = menuForm; cfg['url'] = 'loadForm.jsp?idno=' + idno; Ext.dao.loadFormData(cfg); window.show(); } } }, /** * 提交增加菜单表单 */ addMenu : function() { var Menu = {}; Menu = Ext.dao.getObjFromForm(menuForm); MenuManager.addMenu(Menu, function(success) { window.close(); if (success) { // 重新加载数据 dataStore.reload(dataStore); Ext.MessageBox.alert("提示", "增加菜单成功"); // Msg.suggest("提示","增加菜单成功"); } else { Ext.MessageBox.alert("提示", "增加菜单失败"); } }); }, /** * 更新菜单 */ updateMenu : function() { var Menu = {}; Menu = Ext.dao.getObjFromForm(menuForm); MenuManager.updateMenu(Menu, function(success) { window.close(); if (success) { // 先清空再重新加载数据 dataStore.removeAll(); dataStore.reload(); Ext.MessageBox.alert("提示", "更新菜单成功"); } else { Ext.MessageBox.alert("提示", "更新菜单失败"); } }); }, /** * 删除菜单 */ delMenu : function() { if (Ext.validate.noSelected(gridPanel)) {// 未选中任何记录 return; } else { Ext.Msg.confirm('<font color="red">提示</font>', '你确定要删除选中的菜单吗?', menuMgr.deleteOrNot); }; }, /** * 是否删除 */ deleteOrNot : function(id) { if (id == "yes") { var idnos = ""; idnos = Ext.validate.getSelected(gridPanel, 'idno'); MenuManager.batchDelMenuByPKs(idnos, function(success) { if (success) { // 服务器端删除后,客户端同步更新 // 获取选中的复选框所表示的对象数组 var records = gridPanel.getSelectionModel() .getSelections(); for (i = 0;i < records.length; i++) { dataStore.remove(records[i]); } Ext.MessageBox.alert("提示", "删除菜单成功"); } else { Ext.MessageBox.alert("提示", "删除菜单失败"); } }) } else { return; } } } }(); Ext.onReady(menuMgr.init, menuMgr, true);