<img style="max-width:90%" alt="" src="http://files.jb51.net/upload/20090701224007281.jpg" style="max-width:90%" border="0"><img style="max-width:90%" alt="" src="http://files.jb51.net/upload/20090701224007513.jpg" style="max-width:90%" border="0"> <br><br><br><img style="max-width:90%" alt="" src="http://files.jb51.net/upload/20090701224007259.jpg" style="max-width:90%" border="0"><br><br>ソース コードの一部: <br><div class="codetitle"> <span><a style="CURSOR: pointer" data="36251" class="copybut" id="copybut36251" onclick="doCopy('code36251')"><u>コードをコピー</u> </a> </span> コードは次のとおりです: </div> <div class="codebody" id="code36251"> <br><%@ page language="java" pageEncoding="GBK"%> <br><%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <br><c:set var="ctx" value="${pageContext.request.contextPath}"/> <br> <br> <br><title>用户管理首页</title> <br><link rel="stylesheet" type="text/css" href="js/ext-2.2/resources/css/ext-all.css" /> <br><script type="text/javascript" src="js/ext-2.2/adapter/ext/ext-base.js"></script> <br><script type="text/javascript" src="js/ext-2.2/ext-all.js"></script> <br><style type="text/css"> <br>.x-panel-body p {}{ <br>margin:5px; <br>} <br>.x-column-layout-ct .x-panel {}{ <br>margin-bottom:5px; <br>} <br>.x-column-layout-ct .x-panel-dd-spacer {}{ <br>margin-bottom:5px; <br>} <br>.settings {}{ <br>background-image:url(js/ext-2.2/shared/icons/fam/folder_wrench.png) !重要; <br>} <br>.nav {}{ <br>背景画像:url(js/ext-2.2/shared/icons/fam/folder_go.png) !重要; <br>} <br><br>.icon-grid {}{ <br>背景画像: url(js/ext-2.2/shared/icons/fam/grid.png) !重要; <br>} <br><br>#button-grid .x-panel-body {}{ <br>border: 1px ソリッド #99bbe8; <br>ボーダートップ: 0 なし; <br>} <br><br>.add {}{ <br>背景画像: url(js/ext-2.2/shared/icons/fam/add.gif) !重要; <br>} <br><br>.option {}{ <br>背景画像: url(js/ext-2.2/shared/icons/fam/plugin.gif) !重要 <br><br>} <br><br>.remove {}{ <br>背景画像: url(js/ext-2.2/shared/icons/fam/delete.gif) !重要 <br><br>} <br><br> .save {}{ <br>背景画像: url(js/ext-2.2/shared/icons/save.gif) !重要; <br>} <br></style> <br> <br><!-- <BR>Ext.onReady(function() <BR>{ <BR>/**//**グリッド関連**/ <BR>Ext.QuickTips.init(); <BR>Ext.form .Field.prototype.msgTarget='side'; <BR>var newFormWin; //フォーム窗口容器 <BR>var form1; //追加用フォーム <BR>var form2; //修正用フォーム <br> <br>//側边栏状態の记录 <BR>Ext.state.SessionProvider = Ext.extend(Ext.state.CookieProvider, { <BR>readCookies : function(){ <BR>if(this.state){ <BR>for(this.state の var k){ <BR>if(typeof this.state[k] == 'string'){ <BR>this.state[k] = this.decodeValue(this.state[ k]); <BR>} <BR>} <BR>} <BR>return Ext.apply(this.state || {}, Ext.state.SessionProvider.superclass.readCookies.call(this)); >} <BR>}); <BR><br>var xg = Ext.grid; <br><br>var jsonReader = new Ext.data.JsonReader( { <br>root : 'list', // 返します的データセット <BR>totalProperty : 'totalCount', //总记录数 <BR>successProperty : '@success' //成功标记 <BR>}, [ { <BR>name : 'id', //grid中的dataIndex <BR>mapping : 'id', //返されるデータ中のフィールド名 <BR>type : 'int' //类型、默认はstring型 <BR>}, { <BR>name : 'username' , <BR>マッピング : 'ユーザー名' <BR>}, { <BR>名前 : '年齢', <BR>マッピング : '年齢', <BR>タイプ : 'int' <BR>}, <BR>{ <BR>名前: 'ramark'、<BR>マッピング: 'コメント' <BR>}]); <BR><br>// Store <br>var ds = new Ext.data.Store( { <BR>proxy : new Ext.data.HttpProxy( { <BR>url : '${ctx}/UserServlet?method =getAll' <BR>}), <BR>リーダー: jsonReader <BR>}); <BR>ds.setDefaultSort('id', 'asc'); <BR><br><br>/**//** <BR>***CRUD グリッド <BR>****/ <BR><br>//独自のチェックボックス列选择 <br>var sm = new xg.CheckboxSelectionModel({ <BR>listeners: //追加监听器 <BR>{ <BR>//行选择イベント <BR>rowselect : function (sm, rowIndex, keep, rec) // 行选中イベント <BR>{ <BR>//ext组件用Ext. getCmp('id') <BR>var btn = Ext.getCmp('tbar1'); <BR>//选择数大以上2,禁用修改按钮 <BR>if(sm.getCount() != 1) <BR>{ <BR>btn.disable(); <BR>} <BR>else <BR>{ <BR>btn.enable(); <BR>} <BR>//取消イベント <BR>rowdeselect : function (sm, rowIndex, keep, rec) //行选中イベント <BR>{ <BR>//ext 组件用 Ext.getCmp('id') <BR>var btn = Ext.getCmp( 'tbar1'); <BR>//数量等以下 1启自動修改按钮 <BR>if(sm.getCount() == 1) <BR>{ <BR>btn.enable() <BR>; else <BR>{ <BR>btn.disable(); <BR>} <BR>} <BR>} <BR><BR><BR>}); <br><br>//初化Grid <BR>var Grid = new xg.GridPanel({ <br>id:'user-grid', <br>width:780, <BR>height:450, <BR> Frame:true, <BR>title:'简易用户管理', <BR>iconCls:'icon-grid', <BR>hidden: true, <BR>store: ds, //数据仓库 <BR>renderTo: document .body, <BR>//列 <BR>cm: new xg.ColumnModel([ <BR>sm, <BR>{id:'id',header: "インデックス", width: 40, sortable: true, dataIndex : 'id'}, <BR>{header: "用户名", width: 20, sortable: true, dataIndex: 'username'}, <BR>{header: "年龄", width: 20, sortable: true, dataIndex: 'age'}, <BR>{header: "备注", width: 20, sortable: true, dataIndex: 'remark'} <BR>]), <BR><BR>sm: sm, <BR> <br>viewConfig: { <br>forceFit:true <br>}, <br>//分页ツール栏 <BR>bbar : new Ext.PagingToolbar({ <BR>pageSize : 10, <BR>store : ds, <BR>displayInfo : true、<BR>displayMsg : '表示 {0}-{1} 条 / 共 {2} 条'、<BR>emptyMsg : "データなし。" <BR>}), <br><br> // 組み込みツールバー (ボタン) <BR>tbar:[{ <BR>text:'Add', <BR>tooltip:'新しいデータの行を追加', <BR>iconCls:'add', <BR>ハンドラー : function() <BR>{ <BR>add(); <BR>} <BR>}; '-', { <BR>text:' Modify'、<BR>tooltip:'データの一部を変更'、<BR>iconCls:'option'、<BR>id : 'tbar1'、<BR>handler : function() <BR>{ <BR>modify () ; <BR>} <BR>},'-',{ <BR>text:'delete'、<BR>tooltip:'delete data'、<BR>iconCls:'remove'、<BR>ハンドラー: function( ) <BR>{ <BR>remove(); <BR>} <BR>}] <br><br>}); <br><br>//データのロード<BR>ds.load({ params: {start:0, limit:10}}); <BR>//グリッドをレンダリング <BR>grid.render(); <br><br>//ユーザーの関数を追加<BR>var add = function() <BR>{ <BR>newFormWin = new Ext.Window({ <BR>レイアウト : 'fit', <BR>幅 : 400, <BR>高さ : 300, <BR>closeAction : '非表示', <BR> plain : true, <BR>title : 'ユーザー管理', <BR>items : form1 <br><br>}); <BR>newFormWin.show() <BR>} <br><br>//ユーザーの関数を変更します <BR>varmodify = function() <BR>{ <BR>var _record = Grid.getSelectionModel().getSelected(); <BR>if (!_record) <BR>{ <BR>Ext.Msg .alert('変更する項目を選択してください!'); <BR>} <BR>else <BR>{ <BR>myFormWin() <BR>({ <BR> url : '${ctx}/UserServlet?method=getById&id=' _record.get('id'), <BR>waitMsg : 'データのロード', <BR><br>失敗 : function() { <br>Ext. Msg.alert('読み込みに失敗しました'); <BR>}, <BR>success : function() { <BR>//Ext.Msg.alert('読み込みに成功しました! '); <BR>} <BR>}); <BR>} <BR>} <BR>// ユーザーのフォームを変更します <BR>var myFormWin = function() { <BR>newFormWin = new Ext.Window ( { <BR>layout : 'fit', <BR>width : 400, <BR>height : 300, <BR>closeAction : 'hide', <BR>plain : true, <BR>title : 'ユーザーを変更' , <BR>items : form2 <BR>}); <BR>newFormWin.show('') <BR>} <BR><br>/**//*JsonReader はフォーム上に配置する必要があり、データの読み込み順序が問題になることに注意してください*/ <br>var jsonFormReader = new Ext . data.JsonReader( { <BR>root : 'list', <BR>totalProperty : 'totalCount', <BR>successProperty : '@success' <BR>}, [ <BR>{ <BR>name : 'id ' , <BR>マッピング : 'id', <BR>type : 'int', <BR>}, <BR>{ <BR>name : 'username', <BR>mapping : 'username' <BR>} , { <BR>名前 : '年齢', <BR>マッピング : '年齢', <BR>タイプ : 'int' <BR>}, { <BR>名前 : '備考', <BR>マッピング : '備考 ' <BR>}]); <BR><br>// ユーザーのフォームを追加 <br>form1 = new Ext.FormPanel({ <BR>labelWidth : 75, <BR>frame : true, <BR>title : '追加user', <BR>bodyStyle : 'padding:5px 5px 0', <BR>width : 350, <BR>waitMsgTarget : true, <BR>url : '${ctx}/UserServlet?method=save', <BR>デフォルト : <BR>{ <BR>幅 : 230 <BR>}、<BR>デフォルトタイプ : 'テキストフィールド'、<BR>項目 : [ <BR>{ <BR>フィールドラベル : 'ユーザー名'、<BR>名前: 'username', //バックグラウンドでデータを取得するには、<BR>allowBlank : false, <BR>blankText : 'ユーザー名を空白にすることはできません' <BR>}, { <BR>xtype : 'numberfield', <BR>maxValue : 100, <BR>maxText : '年齢は 100 歳以上にすることはできません', <BR>minValue : 1, <BR>minText : '年齢は 1 歳未満にすることはできません', <BR>fieldLabel : '年齢', <BR> name : '年齢', <BR>allowBlank : false, <BR>blankText : '年齢を空白にすることはできません' <BR>}, new Ext.form.TextArea( { <BR>fieldLabel : '備考', <BR>name : 'remark', <BR>growMin : 234, <BR>maxLength : 50, <BR>maxLengthText : '最大長は 50 文字を超えることはできません!' <BR>})], <BR> <br>ボタン : [ { <br>テキスト : '保存'、<BR>無効 : false、<BR>ハンドラー : function() <BR>{ <BR><br>if(form1.form.isValid() ) <br>{ <BR>form1.form.submit( <BR>{ <BR>url : '${ctx}/UserServlet?method=save', <BR>成功 : function(from, action) <BR> { <BR>Ext.Msg.alert('ユーザーの追加に成功しました! '); <BR>ds.load({ <BR>params : { <BR>開始 : 0, <BR>制限 : 10 <BR>} <BR>}); function(form, action) { <BR>Ext.Msg.alert('ユーザーの追加に失敗しました!'); <BR>}, <BR>waitMsg : 'データを保存します。後で' <BR>}); <BR>else <BR>{ <BR>Ext .Msg.alert('情報が正しく入力されたか確認してください!'); <BR>} <BR>} <BR>}, { <BR>text : 'キャンセル', <BR>handler : function( ) <BR>{ <BR>form1.form.reset(); <BR>} <BR>}] <BR>}); <BR><BR>// ユーザーのフォームを変更します <br>form2 = new Ext .FormPanel({ <br>labelWidth : 75, <BR>frame : true, <BR>title : 'ユーザーの変更', <BR>bodyStyle : 'padding:5px 5px 0', <BR>width : 350, <BR>waitMsgTarget : true, <BR>url : '${ctx}/UserServlet?method=update', <BR>reader : jsonFormReader, //Form のリーダーを指定し、<BR>defaults : <BR>{ <BR>width : 230 <BR>}, <BR>defaultType : 'textfield', <BR>items : [ <BR>{ <BR>xtype: 'hidden', <BR>name : 'id' <BR> }, <BR>{ <BR>fieldLabel : 'username', <BR>name : 'username', //バックグラウンドでデータを取得するには、<BR>allowBlank : false, <BR>blankText : 'Username を空にすることはできません' <BR>}, { <BR>xtype : 'numberfield', <BR>maxValue : 100, <BR>maxText : '年齢は 100 歳を超えることはできません', <BR>minValue : 1, <BR>minText : '年齢1 歳未満は指定できません', <BR>fieldLabel : 'age', <BR>name : 'age', <BR>allowBlank : false, <BR>blankText : '年齢を空白にすることはできません' <BR>}, new Ext.form .TextArea( { <BR>fieldLabel : 'remark', <BR>name : 'remark', <BR>growMin : 234, <BR>maxLength : 50, <BR>maxLengthText : '最大長は次のとおりです50 文字を超えています! ' <BR>})]、<BR><BR>ボタン : [ { <br>テキスト : '変更'、<br>無効 : false、<BR>ハンドラー : function() <BR>{ <BR><BR>if(form2.form.isValid()) <br>{ <br>form2.form.submit( <BR>{ <BR>成功 : function(from, action) <BR>{ <BR>Ext.Msg .alert('ユーザーの変更が成功しました! '); <BR>ds.load({ <BR>params : { <BR>開始 : 0, <BR>制限 : 10 <BR>} <BR>}); function(form, action) { <BR>Ext.Msg.alert('ユーザーの変更に失敗しました!'); <BR>}, <BR>waitMsg : 'データを保存しています。後で' <BR>}); newFormWin.hide(); <BR>} <BR>else <BR>{ <BR>Ext.Msg.alert('情報が正しく入力されたかどうかを確認してください!'); <BR>}, { <BR>テキスト : 'キャンセル', <BR>ハンドラー : function() <BR>{ <BR>form2.form.reset(); <BR>} <BR>}] <BR> }); <BR><BR>//イベントを削除します<BR>var delete = function() <BR>{ <BR><BR>var _record = Grid.getSelectionModel().getSelected(); _record) <BR>{ <br>Ext.MessageBox.confirm('削除の確認', '選択したデータを削除してもよろしいですか?', function(btn) <br>{ <BR>if (btn == " はい") { <BR>var m = Grid.getSelections(); <br>var jsonData = ""; <br>for (var i = 0, len = m.length;i < len; i ) <BR>{ <BR>var ss = m[i].get("id"); //ユーザー ID、"id" フィールド名<BR>if (i == 0) { <BR>jsonData = jsonData ss; <BR>} else { <BR>jsonData = jsonData "," ss; <BR>} <BR>//データ ソース内の削除 <BR>ds.remove(m[i]);データベース 対応するレコード <BR>Ext.Ajax.request({ <BR>url: '${ctx}/UserServlet?method=remove&id=' ss <BR>} <BR><BR>ds); .load ({ <BR>params : { <BR>start : 0, <BR>limit : 10, <BR>delData : jsonData <BR>} <BR>}); <BR>}); <BR>} <br>else <br>{ <BR>Ext.Msg.alert('削除するデータ項目を選択してください! '); <BR>} <BR>}; <BR>/**//***/ <BR>Ext.state.Manager.setProvider <BR>( new Ext.state.SessionProvider({state: Ext.appState) })); <br><br>// 中央のタブ <BR>var tabs = new Ext.TabPanel({ <BR>region : 'center', <BR>margins : '3 3 3 0', <BR>activeTab : 0、<BR>defaults : { <BR>autoScroll : true <BR>}、<BR>items : [{ <BR>title : 'ExtJS バージョン'、<BR>contentEl: 'user-grid' // 入力する HTML ID <BR>},{ <br>title : 'GTGrid バージョン', <br>html : 'GTGrid は現在 Extjs との統合をサポートしていません (ウィンドウ),<a href="${ctx }/gt.jsp">ここをクリックして、私が作成した例を表示します</>' <br>},{ <br>title: 'さらなる注目', <br>html: 'さらに多くのコンテンツを参照できます< ;a href="http://www.blogjava.net/supercrsky">私のブログ</a>' <br>}] <br>}); <br><br>// 西のパネル <br> var nav = new Ext.Panel({ <br>title : 'メニュー ディレクトリ', <br>region : 'west', <br>split : true, <br>width : 200, <br>collapsible : true, <br>margins : '3 0 3 3'、<br>cmargins : '3 3 3 3'、<br>layout: 'accordion'、<br>layoutConfig:{ <br>animate:true <br>}、<br>items: [{ <br>html: Ext.example.shortBogusMarkup, <br>title:'ユーザー管理', <br>autoScroll:true, <br>border:false, <br>iconCls: 'nav' <br>},{ <br>title:'ユーザー構成', <br>html: Ext.example.shortBogusConfig, <br>border:false, <br>autoScroll:true, <br>iconCls:' settings' <br>}] <br>}); <br><br>var win = new Ext.Window({ <br>title : 'ユーザー管理マイクロ システム', <br>closeable : true, <br> maximizable : true, <br>最小化可能 : true、<br>幅 : '100%'、<br>高さ : '100%'、<br>無地 : true、<br>レイアウト : 'border'、<br>閉じる可能 : false、 <br>項目: [ナビゲーション、タブ] <br>}); <br><br>win.show(); <br><br>}); -> <br></script> <br><body> <br><!-- サイドバーで使用される <BR><スクリプト タイプ="text/javascript" src="js/ext-2.2/shared/examples.js"></script> <br></html><br>完全なソース コードのダウンロード<a href="http://xiazai.jb51.net/200907/yuanma/Ext_User.rar" target="_blank">ダウンロードするにはここをクリックしてください</a> </div>