

部分源码:
复制代码 代码如下:
<%@ page language="java" pageEncoding="GBK"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<c:set var="ctx" value="${pageContext.request.contextPath}"/>
<html>
<head>
<title>用户管理首页</title>
<link rel="stylesheet" type="text/css" href="js/ext-2.2/resources/css/ext-all.css" />
<script type="text/javascript" src="js/ext-2.2/adapter/ext/ext-base.js"></script>
<script type="text/javascript" src="js/ext-2.2/ext-all.js"></script>
<style type="text/css">
.x-panel-body p {}{
margin:5px;
}
.x-column-layout-ct .x-panel {}{
margin-bottom:5px;
}
.x-column-layout-ct .x-panel-dd-spacer {}{
margin-bottom:5px;
}
.settings {}{
background-image:url(js/ext-2.2/shared/icons/fam/folder_wrench.png) !important;
}
.nav {}{
background-image:url(js/ext-2.2/shared/icons/fam/folder_go.png) !important;
}
.icon-grid {}{
background-image: url(js/ext-2.2/shared/icons/fam/grid.png) !important;
}
#button-grid .x-panel-body {}{
border: 1px solid #99bbe8;
border-top: 0 none;
}
.add {}{
background-image: url(js/ext-2.2/shared/icons/fam/add.gif) !important;
}
.option {}{
background-image: url(js/ext-2.2/shared/icons/fam/plugin.gif) !important
}
.remove {}{
background-image: url(js/ext-2.2/shared/icons/fam/delete.gif) !important
}
.save {}{
background-image: url(js/ext-2.2/shared/icons/save.gif) !important;
}
</style>
<script>
<!--
Ext.onReady(function()
{
/**//**Grid相关**/
Ext.QuickTips.init();
Ext.form.Field.prototype.msgTarget="side";
var newFormWin; //form窗口容器
var form1; //添加用户的form
var form2;; //修改用户的form
//侧边栏状态的记录
Ext.state.SessionProvider = Ext.extend(Ext.state.CookieProvider, {
readCookies : function(){
if(this.state){
for(var k in this.state){
if(typeof this.state[k] == "string"){
this.state[k] = this.decodeValue(this.state[k]);
}
}
}
return Ext.apply(this.state || {}, Ext.state.SessionProvider.superclass.readCookies.call(this));
}
});
var xg = Ext.grid;
var jsonReader = new Ext.data.JsonReader( {
root : "list", //返回的数据集合
totalProperty : "totalCount", //总记录数
successProperty : "@success" //成功标记
}, [ {
name : "id", //grid中的dataIndex
mapping : "id", //返回的数据中的字段名
type : "int" //类型,默认为string类型
}, {
name : "username",
mapping : "username"
}, {
name : "age",
mapping : "age",
type : "int"
},
{
name : "ramark",
mapping : "remark"
}]);
// Store
var ds = new Ext.data.Store( {
proxy : new Ext.data.HttpProxy( {
url : "${ctx}/UserServlet?method=getAll"
}),
reader : jsonReader
});
ds.setDefaultSort("id", "asc");
/**//**
***CRUD Grid
****/
//自定义的checkbox列选择
var sm = new xg.CheckboxSelectionModel({
listeners: //添加监听器
{
//行选择事件
rowselect : function (sm, rowIndex, keep, rec) //行选中事件
{
//得到ext组件用Ext.getCmp("id")
var btn = Ext.getCmp("tbar1");
//选择数量大于2,禁用修改按钮
if(sm.getCount() != 1)
{
btn.disable();
}
else
{
btn.enable();
}
},
//取消选择事件
rowdeselect : function (sm, rowIndex, keep, rec) //行选中事件
{
//得到ext组件用Ext.getCmp("id")
var btn = Ext.getCmp("tbar1");
//数量等于1启动修改按钮
if(sm.getCount() == 1)
{
btn.enable();
}
else
{
btn.disable();
}
}
}
});
//初始化Grid
var grid = new xg.GridPanel({
id:"user-grid",
width:780,
height:450,
frame:true,
title:"简易用户管理",
iconCls:"icon-grid",
hidden: true,
store: ds, //数据仓库
renderTo: document.body,
//列
cm: new xg.ColumnModel([
sm,
{id:"id",header: "索引", width: 40, sortable: true, dataIndex: "id"},
{header: "用户名", width: 20, sortable: true, dataIndex: "username"},
{header: "年龄", width: 20, sortable: true, dataIndex: "age"},
{header: "备注", width: 20, sortable: true, dataIndex: "remark"}
]),
sm: sm,
viewConfig: {
forceFit:true
},
//分页工具栏
bbar : new Ext.PagingToolbar({
pageSize : 10,
store : ds,
displayInfo : true,
displayMsg : "显示 {0}-{1}条 / 共 {2} 条",
emptyMsg : "无数据。"
}),
//上置内嵌工具栏(按钮)
tbar:[{
text:"添加",
tooltip:"添加一行新数据",
iconCls:"add",
handler : function()
{
add();
}
}, "-", {
text:"修改",
tooltip:"修改一条数据",
iconCls:"option",
id : "tbar1",
handler : function()
{
modify();
}
},"-",{
text:"删除",
tooltip:"删除数据",
iconCls:"remove",
handler : function()
{
remove();
}
}]
});
//加载数据
ds.load({params:{start:0, limit:10}});
//渲染Grid
grid.render();
//添加用户的函数
var add = function()
{
newFormWin = new Ext.Window({
layout : "fit",
width : 400,
height : 300,
closeAction : "hide",
plain : true,
title : "用户管理",
items : form1
});
newFormWin.show();
}
//修改用户的函数
var modify = function()
{
var _record = grid.getSelectionModel().getSelected();
if (!_record)
{
Ext.Msg.alert("请选择要修改的一项!");
}
else
{
myFormWin();
form2.form.load
({
url : "${ctx}/UserServlet?method=getById&id="+ _record.get("id"),
waitMsg : "正在载入数据",
failure : function() {
Ext.Msg.alert("载入失败");
},
success : function() {
//Ext.Msg.alert("载入成功!");
}
});
}
}
//修改用户的窗体
var myFormWin = function() {
newFormWin = new Ext.Window({
layout : "fit",
width : 400,
height : 300,
closeAction : "hide",
plain : true,
title : "修改用户",
items : form2
});
newFormWin.show("");
}
/**//*注意JsonReader要放在Form上面,数据的加载顺序问题*/
var jsonFormReader = new Ext.data.JsonReader( {
root : "list",
totalProperty : "totalCount",
successProperty : "@success"
}, [
{
name : "id",
mapping : "id",
type : "int",
},
{
name : "username",
mapping : "username"
}, {
name : "age",
mapping : "age",
type : "int"
}, {
name : "remark",
mapping : "remark"
}]);
//添加用户的Form
form1 = new Ext.FormPanel({
labelWidth : 75,
frame : true,
title : "添加用户",
bodyStyle : "padding:5px 5px 0",
width : 350,
waitMsgTarget : true,
url : "${ctx}/UserServlet?method=save",
defaults :
{
width : 230
},
defaultType : "textfield",
items : [
{
fieldLabel : "用户名",
name : "username", //后台得到数据用
allowBlank : false,
blankText : "用户名不能为空"
}, {
xtype : "numberfield",
maxValue : 100,
maxText : "年龄不能超过100岁",
minValue : 1,
minText : "年龄不能小于1岁",
fieldLabel : "年龄",
name : "age",
allowBlank : false,
blankText : "年龄不能为空"
}, new Ext.form.TextArea( {
fieldLabel : "备注",
name : "remark",
growMin : 234,
maxLength : 50,
maxLengthText : "最大长度不能超过50个字符!"
})],
buttons : [ {
text : "保存",
disabled : false,
handler : function()
{
if(form1.form.isValid())
{
form1.form.submit(
{
url : "${ctx}/UserServlet?method=save",
success : function(from, action)
{
Ext.Msg.alert("添加用户成功!");
ds.load({
params : {
start : 0,
limit : 10
}
});
},
failure : function(form, action) {
Ext.Msg.alert("添加用户失败!");
},
waitMsg : "正在保存数据,稍后"
});
newFormWin.hide();
}
else
{
Ext.Msg.alert("请确认您已经的信息是否已经填写成功!");
}
}
}, {
text : "取消",
handler : function()
{
form1.form.reset();
}
}]
});
//修改用户的Form
form2 = new Ext.FormPanel({
labelWidth : 75,
frame : true,
title : "修改用户",
bodyStyle : "padding:5px 5px 0",
width : 350,
waitMsgTarget : true,
url : "${ctx}/UserServlet?method=update",
reader : jsonFormReader, //为Form指定reader,修改用
defaults :
{
width : 230
},
defaultType : "textfield",
items : [
{
xtype: "hidden",
name : "id"
},
{
fieldLabel : "用户名",
name : "username", //后台得到数据用
allowBlank : false,
blankText : "用户名不能为空"
}, {
xtype : "numberfield",
maxValue : 100,
maxText : "年龄不能超过100岁",
minValue : 1,
minText : "年龄不能小于1岁",
fieldLabel : "年龄",
name : "age",
allowBlank : false,
blankText : "年龄不能为空"
}, new Ext.form.TextArea( {
fieldLabel : "备注",
name : "remark",
growMin : 234,
maxLength : 50,
maxLengthText : "最大长度不能超过50个字符!"
})],
buttons : [ {
text : "修改",
disabled : false,
handler : function()
{
if(form2.form.isValid())
{
form2.form.submit(
{
success : function(from, action)
{
Ext.Msg.alert("修改用户成功!");
ds.load({
params : {
start : 0,
limit : 10
}
});
},
failure : function(form, action) {
Ext.Msg.alert("修改用户失败!");
},
waitMsg : "正在保存数据,稍后"
});
newFormWin.hide();
}
else
{
Ext.Msg.alert("请确认您已经的信息是否已经填写成功!");
}
}
}, {
text : "取消",
handler : function()
{
form2.form.reset();
}
}]
});
//删除事件
var remove = function()
{
var _record = grid.getSelectionModel().getSelected();
if (_record)
{
Ext.MessageBox.confirm("确认删除", "你确认要删除选择的数据吗?", function(btn)
{
if (btn == "yes") {
var m = grid.getSelections();
var jsonData = "";
for (var i = 0, len = m.length;i < len; i++)
{
var ss = m[i].get("id"); //用户id , "id" 字段名
if (i == 0) {
jsonData = jsonData + ss;
} else {
jsonData = jsonData + "," + ss;
}
//在数据源里删除
ds.remove(m[i]);
//删除数据库相应记录
Ext.Ajax.request({
url: "${ctx}/UserServlet?method=remove&id="+ss
});
}
ds.load({
params : {
start : 0,
limit : 10,
delData : jsonData
}
});
}
});
}
else
{
Ext.Msg.alert("请选择要删除的数据项!");
}
};
/**//***/
Ext.state.Manager.setProvider
( new Ext.state.SessionProvider({state: Ext.appState}));
// tabs for the center
var tabs = new Ext.TabPanel({
region : "center",
margins : "3 3 3 0",
activeTab : 0,
defaults : {
autoScroll : true
},
items : [{
title : "ExtJS版",
contentEl: "user-grid" //要填充的html id
},{
title : "GTGrid版",
html : "GTGrid暂不支持与Extjs的整合(window),<a href="${ctx}/gt.jsp">点此显示我做的例子</>"
},{
title : "更多关注",
html : "更多内容可关注<a href="http://www.blogjava.net/supercrsky">我的博客</a>"
}]
});
// Panel for the west
var nav = new Ext.Panel({
title : "菜单目录",
region : "west",
split : true,
width : 200,
collapsible : true,
margins : "3 0 3 3",
cmargins : "3 3 3 3",
layout: "accordion",
layoutConfig:{
animate:true
},
items: [{
html: Ext.example.shortBogusMarkup,
title:"用户管理",
autoScroll:true,
border:false,
iconCls:"nav"
},{
title:"用户配置",
html: Ext.example.shortBogusConfig,
border:false,
autoScroll:true,
iconCls:"settings"
}]
});
var win = new Ext.Window({
title : "用户管理微型系统",
closable : true,
maximizable : true,
minimizable : true,
width : "100%",
height : "100%",
plain : true,
layout : "border",
closable : false,
items : [nav, tabs]
});
win.show();
win.maximize();
});
-->
</script>
</head>
<body>
<!-- 侧边栏使用的js -->
<script type="text/javascript" src="js/ext-2.2/shared/examples.js"></script>
</body>
</html>
完整的源码下载点此下载