关键字: ext
最近刚做了Ext的后台操作,我也是刚接触Ext有好多都是边学边做,所以把部分代码写下来,希望能够方便大家,方便自己... <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>电子书列表</title> <link rel="stylesheet" type="text/css" href="/js/ext/resources/css/ext-all.css" /> <link rel="stylesheet" type="text/css" href="/js/ext/MultiselectItemSelector-3.0/Multiselect.css" /> <script type="text/javascript" src="/js/ext/adapter/ext/ext-base.js"></script> <script type="text/javascript" src="/js/ext/ext-all-debug.js"></script> <script type="text/javascript" src="/js/ext/MultiselectItemSelector-3.0/Multiselect.js"></script> <script type="text/javascript" src="/js/ext/app/book/InOutManageWindow.js"></script> <script type="text/javascript" src="/js/ext/MultiselectItemSelector-3.0/DDView.js"></script> <script type="text/javascript" src="/js/ext/UploadDialog/Ext.ux.UploadDialog.packed.js"></script> <script type="text/javascript">Ext.BLANK_IMAGE_URL = '/js/ext/app/img/s.gif'; </script> </head> <body> <script type="text/javascript">Ext.BLANK_IMAGE_URL = '/js/ext/app/img/s.gif'; </script> <script type="text/javascript" src="/js/ext/app/book/createBook.js"></script> <script type="text/javascript"> var ds = new Ext.data.Store({ proxy : new Ext.data.HttpProxy({ url : '/AdminBookList/' }), reader : new Ext.data.JsonReader({ totalProperty : 'totalProperty', root : 'bookList', fields : [{ name : 'bookID' }, { name : 'name' }, { name : 'author' }, { name : 'keyWord' }, { name : 'bookTypeIndex' }, { name : 'url' }, { name : 'bookFile' },{ name:'description' }] }) }); ds.load({ params : { start : 0, limit : 20 } }); var sm = new Ext.grid.CheckboxSelectionModel({ listeners : { rowselect : function(sm, row, rec) { var form = Ext.getCmp("book-form").getForm(); form.loadRecord(rec); form.findField("multiselect").setValue(rec.get("bookTypeIndex")); var bookID = rec.get('bookID'); addTree(bookID); } } }); function addTree(bookID) { var ss = Ext.getCmp("sectionStructure1"); if (ss) { ss.destroy(); } var sectionStructure = new Ext.Panel({ title : '结构', layout : 'fit', autoHeight : true, border : false }); var data = new Ext.tree.TreeLoader({ url : '/tree/?bookID=' + bookID }); var root = new Ext.tree.AsyncTreeNode({ text : '根', draggable : false, rootFlag : true }); var tree = new Ext.tree.TreePanel({ id : 'sectionStructure1', renderTo : 'sectionStructure', width : 1000, autoScroll : true, useArrows : true, animate : true, containerScroll : true, rootVisible : false, root : root, loader : data }); tree.on('dblclick', itemManage); tree.on('contextmenu', outItemTreeContextMenu); root.expand(true, true); } Ext.onReady(function() { var bd = Ext.getBody(); var cm = new Ext.grid.ColumnModel([sm, { header : 'ID', 30, dataIndex : 'bookID', sortable : true, editor : new Ext.form.TextField({ allowBlank : false }) }, { header : '书名', dataIndex : 'name' }, { header : '作者', 80, dataIndex : 'author' }, { header : '关键字', 80, dataIndex : 'keyWord' }, { header : '是否有文件', dataIndex : 'bookFile' },{ header:'描述', dataIndex: 'description' }]); var multiselect = new Ext.ux.Multiselect({ id : "multiselect", xtype : "multiselect", fieldLabel : "类型", name : "bookTypeID", dataFields : ["bookTypeID", "name"], store : dsBookType, valueField : "bookTypeID", displayField : "name", width : 150, height : 200, allowBlank : false, legend : "Multiselect", tbar : [{ text : "重置", handler : function() { form0.getForm().findField("bookTypeID").reset(); } }] }); var s_pannel = new Ext.FormPanel({ height : 60, labelWidth : 80, renderTo : 'grid', baseCls : 'x-plain', defaults : { width : 150, height : 20 }, defaultType : 'textfield', items : [{ fieldLabel : '作者', id : 'author', name : 'author' }, { fieldLabel : '书名', id : 'bookName', name : 'bookName' }] }); ds.on('beforeload', function() { Ext.apply(this.baseParams, { author : Ext.get('author').dom.value, bookName : Ext.get('bookName').dom.value }); }); var grid = new Ext.grid.EditorGridPanel({ title : '电子书列表', sm : sm, width : 600, height : 600, fram : true, el : 'grid', ds : ds, cm : cm, bbar : new Ext.PagingToolbar({ pageSize : 20, store : ds, cm : cm, displayInfo : true, displayMsg : '', emptyMsg : "没有记录" }), listeners : { render : function(g) { g.getSelectionModel().selectRow(0); }, delay : 10 } }); grid.addListener('rowcontextmenu', rowmenu); function rowmenu(grid, rowindex, e) { e.preventDefault(); rightClick.showAt(e.getXY()); } var rightClick = new Ext.menu.Menu({ id : 'rightClickCont', items : [{ text : '删除电子书', handler : delBook }] }); function delBook() { var c = grid.selModel.selections.keys; if (c.length > 0) { Ext.MessageBox.confirm('警告', '确认要删除所选记录?', doBook); } else { Ext.MessageBox.alert('提示', '最少需要选择一条记录!'); } } function doBook(btn) { if (btn == 'yes') { var selectedRows = grid.selModel.selections.items; var jsonData = ''; for (var i = 0; i < selectedRows.length; i++) { var row = selectedRows[i]; if (i == 0) { jsonData = jsonData + row.data['bookID']; } else { jsonData = jsonData + ',' + row.data['bookID']; } } Ext.MessageBox.show({ msg : '正在请求数据, 请稍侯', progressText : '正在请求数据', width : 300, wait : true, waitConfig : { interval : 200 } }); Ext.Ajax.request({ url : '/deleteBook/', method : 'POST', params : { bookIDs : jsonData }, callback : function(options, success, response) { if (success) { Ext.MessageBox.hide(); Ext.MessageBox.alert("消息", '删除成功'); } else { Ext.MessageBox.hide(); Ext.MessageBox.alert("失败,请重试", response.responseText); } }, failure : function(response, options) { Ext.MessageBox.hide(); ReturnValue = Ext.MessageBox.alert("警告", "出现异常错误!请联系管理员!"); }, success : function(response, options) { Ext.MessageBox.hide(); grid.getStore().reload(); } }) } } grid.addListener('rowdblclick', rowcontextmenuFunc); var action = new Ext.Action({ text : '新建', handler : createBookWin }); var winParent = window.opener; if (winParent) { grid.addListener('rowcontextmenu', rightClickFn); function doChooseBook() { var selectedRow = grid.getSelectionModel().getSelected(); var winParent = window.opener.document; var url_add = winParent.getElementById('url_add'); var url_update = winParent.getElementById('url_update'); if (selectedRow) { var bookID = selectedRow.data['bookID']; var s = "showBookDetail/?bookID=" + bookID; if (url_add != null) { url_add.value = s; } if (url_update != null) { url_update.value = s; } } window.close(); } var rightClick = new Ext.menu.Menu({ id : 'rightClickCont', items : [{ text : '选中', handler : doChooseBook }] }); function rightClickFn(grid, rowindex, e) { e.preventDefault(); rightClick.showAt(e.getXY()); } } var gridForm = new Ext.FormPanel({ id : 'book-form', bbar : [action], tbar : [s_pannel, { xtype : "tbseparator" }, { text : ' 搜索', cls : "x-btn-text-icon", handler : function() { ds.load({ params : { start : 0, limit : 20, author : Ext.get('author').dom.value, bookName : Ext.get('bookName').dom.value } }) } }], frame : true, labelAlign : 'left', title : '电子书列表', bodyStyle : 'padding:5px', width : 1000, layout : 'column', items : [{ columnWidth : 0.5, layout : 'fit', items : grid }, { columnWidth : 0.3, xtype : 'fieldset', labelWidth : 90, title : '详情', defaults : { width : 140 }, defaultType : 'textfield', autoHeight : true, bodyStyle : Ext.isIE ? 'padding:0 0 5px 15px;' : 'padding:10px 15px;', border : false, style : { "margin-left" : "10px", "margin-right" : Ext.isIE6 ? (Ext.isStrict ? "-10px" : "-13px") : "0" }, items : [{ fieldLabel : 'ID', name : 'bookID', readOnly : true }, { fieldLabel : '书名', name : 'name' }, { fieldLabel : '作者', name : 'author' },{ fieldLabel : '描述', name : 'description' }, multiselect, { xtype : 'button', text : '更改', handler : function() { gridForm.getForm().submit({ url : '/AdminUpdateBasicBook/', waitMsg : '保存中,请稍候...', success : function(response, request) { ds.reload(); Ext.MessageBox.alert('成功'); }, failure : function() { Ext.MessageBox.alert('失败'); } }); } } ] } ] }); var p = new Ext.Panel({ width : 1000, title : '结构', renderTo : 'sectionStructure', layout : 'fit', autoHeight : true, border : false }); gridForm.render('bd'); form0.addButton({ text : '保存', handler : function() { form0.getForm().submit({ url : '/AdminCreateBasicBook/', waitMsg : '保存中,请稍候...', success : function(response, request) { Ext.MessageBox.alert('成功'); ds.reload(); }, failure : function() { Ext.MessageBox.alert('失败'); } }); } }); }); </script> <div id="grid" style="height: 265px;"></div> <div><span><div id="bd"></div></span></div> <span><div id="sectionStructure"></div></span> </body> </html> 由于工作的需要,就暂时的写到这里吧,以后有时间在一点一点的给大家慢慢写全