新公司的extjs框架(一):主体框架
刚加盟一家新公司,交给本人一个mis项目,项目前台采用extjs,本人研究了2天,总结一下:
1.extjs应用程序注册,创建于初始化
View Code
function load(){
var viewportpanel;
var params;
Ext.onReady(hsjwebgis.init, hsjwebgis);
}
function onUnload(){
viewportpanel.destroy();
}
dlgcloseAction = 'close';
var g_curObject;
hsjdelay = function()
{
var items = g_curObject.layout();
var viewport = new Ext.Viewport({
layout: 'border',
items: items
});
viewportpanel = viewport;
viewport.on('beforedestroy', function(){
params = null;
items.destroy();
})
}
hsjwebgis = function(){
return {
init: function(){
var url = location.href;
var i = url.lastIndexOf("?");
if (i != -1) {
document.getElementById("loading").style.display = "none";
params = url.substring(i+1, url.length);
params = Ext.urlDecode(params);
//alert(params.toSource());
var nodeid = params.nodeid;
// alert("var object = new "+params.functionAction+"({nodeid:"+nodeid+",params: params})");
eval("var object = new "+params.functionAction+"({nodeid:"+nodeid+",params: params})");
///设定延时~~
g_curObject=object;
setTimeout("hsjdelay()",1200);
}
}
};
}
();
var viewportpanel;
var params;
Ext.onReady(hsjwebgis.init, hsjwebgis);
}
function onUnload(){
viewportpanel.destroy();
}
dlgcloseAction = 'close';
var g_curObject;
hsjdelay = function()
{
var items = g_curObject.layout();
var viewport = new Ext.Viewport({
layout: 'border',
items: items
});
viewportpanel = viewport;
viewport.on('beforedestroy', function(){
params = null;
items.destroy();
})
}
hsjwebgis = function(){
return {
init: function(){
var url = location.href;
var i = url.lastIndexOf("?");
if (i != -1) {
document.getElementById("loading").style.display = "none";
params = url.substring(i+1, url.length);
params = Ext.urlDecode(params);
//alert(params.toSource());
var nodeid = params.nodeid;
// alert("var object = new "+params.functionAction+"({nodeid:"+nodeid+",params: params})");
eval("var object = new "+params.functionAction+"({nodeid:"+nodeid+",params: params})");
///设定延时~~
g_curObject=object;
setTimeout("hsjdelay()",1200);
}
}
};
}
();
Ext.onReady()是extjs应用程序的入口,相当于控制台的main(),如果只是一个简单的程序,如下extjs的hello World!
Ext.OnReady(function(){alert('Hello World!')});
2.主框架布局
登陆对话框也放在里面
View Code
/*主框架
* */
hsjwebgis.interval
hsjwebgis.mainlayout = function(){
var Ajax = Ext.Ajax;
var west;
var loginwindow;
var loginsuccess = false;
var center;
var height;
var beforeroeindex;
return{
/*
* 主框架
* */
mainlayout:function(){
var south = new Ext.BoxComponent({
region:'south',
el: 'south',
height : 20
});
west = new Ext.Panel({
region:'west',
title:'数 据 维 护',
split:true,
width: 200,
minSize: 175,
maxSize: 400,
// autoScroll: true,
collapsible: true,
margins:'0 0 0 5',
layout:'accordion',
layoutConfig:{
animate:false
}
});
center = new Ext.TabPanel({
region:'center',
id:'acc',
enableTabScroll:true,
activeTab:0
});
var viewport = new Ext.Viewport({
layout:'border',
items:[
south, west, center
]
});
viewport.on('resize',function(){
//alert(south.getSize().height);
if(south.getSize().height>25)
south.setHeight(25);
viewport.doLayout();
});
return{
viewport: viewport,
viewCenter:center,
viewWest:west,
//viewNorth: north,
viewSouth: south
}
},
/*
* 登陆对话框
* */
//begin
loginwindow:function(){
var chk = new Ext.form.Checkbox({
boxLabel:'记住用户名',
hideLabel : true
});
var form = new Ext.form.FormPanel({
baseCls: 'x-plain',
labelWidth: 70,
bodyStyle:'padding:15px 15px 0',
//defaultType: 'textfield',
defaults: {width: 150},
items: [{
xtype: 'textfield',
fieldLabel: '用户名',
regexText:"用户名必须为0~9,a~z或下划线组成的字符",
regex:/^[A-Za-z0-9_]+$/,
name: 'loginname',
anchor:'100%'
},{
xtype: 'textfield',
fieldLabel: '密 码',
regex:/^[A-Za-z0-9_]+$/,
regexText:"密码必须为0~9,a~z或下划线组成的字符",
name: 'password',
inputType:'password',
anchor:'100%'
},chk]
});
///响应enter事件
var nav = new Ext.KeyNav("login", {
"enter" : function(e){
hsjwebgis.mainlayout.login(form);
},
scope : this
});
//框体
loginwindow = new Ext.Window({
el:'login',
title: '登 录 Login',
width: 300,
height:180,
layout: 'fit',
closable : false,
plain:true,
bodyStyle:'padding:5px;',
buttonAlign:'center',
items: form,
modal:true,
resizable:false,
buttons: [{
text: '登 录',
handler: function(){
var n = 0;
var text = "";
if (!form.form.findField("loginname").isValid())
{
n++;
text = text + "<div>" + n + ':'+ form.form.findField("loginname").regexText + '\n</div>';
}
if (!form.form.findField("password").isValid())
{
n++;
text = text + "<div>" + n + ':'+ form.form.findField("password").regexText + '\n</div>';
}
if (n>0)
{
Ext.MessageBox.alert
(
'提示', '<div>填写数据错误,可能存在以下错误:\n</div>' + text,
function()
{}
);
}
if(chk.getValue())
saveLoginName(form.form.findField("loginname").getValue());
else
saveLoginName('');
if(n==0)
hsjwebgis.mainlayout.login(form);
}
},{
text: '取 消',
handler: function(){
hsjwebgis.mainlayout.close();
}
}]
});
loginwindow.on('beforeshow',function(){
form.form.findField("loginname").setValue(getLoginName());
chk.setValue(isCheck());
});
loginwindow.on({
'close':function() {
hsjwebgis.mainlayout.close();
}
});
loginwindow.show(this);
Ext.get('x-form-el-ext-comp-1005').setStyle("text-align","right");
},
//end
close:function(){
if(loginsuccess == false){
window.close();
if(Ext.isGecko)
alert("此操作被浏览器拒绝!\n 请在浏览器地址栏输入“about:config”并回车\n然后将[dom.allow_scripts_to_close_windows]设置为'true'");
}
},
//begin
/**
登陆连接
* servlet/Login
* 参数{
* loginname,
* password
* }
* */
login:function(form){
//设置登录按钮为不可用状态
loginwindow.buttons[0].disable();
var index = 0;
if(form.form.findField("loginname").getValue() == ""||form.form.findField("password").getValue() == "")
{
Ext.MessageBox.show({
title: '提 示',
msg: '对不起,用户名或密码不能为空!',
buttons: Ext.MessageBox.OK,
icon: Ext.MessageBox.INFO
});
loginwindow.buttons[0].enable();
}
if(form.form.findField("loginname").getValue() != ""&&form.form.findField("password").getValue() != ""){
if(index == 0){
index ++;
Ajax.request({
url: 'aspx/Login.aspx',
success: function(response){
if(response.responseText=="false"){
loginwindow.buttons[0].disable();
loginsuccess = false;
Ext.MessageBox.show({
title: '提 示',
msg: '错误的用户名或密码',
buttons: Ext.MessageBox.OK,
icon: Ext.MessageBox.ERROR
});
loginwindow.buttons[0].enable();
}
else if(response.responseText=="false2")
{
loginsuccess = false;
Ext.MessageBox.show({
title: '提 示',
msg: '对不起,您的账户已被锁定!',
buttons: Ext.MessageBox.OK,
icon: Ext.MessageBox.INFO
});
loginwindow.buttons[0].enable();
}
else{
//登陆成功但是并非web权限用户
if(response.responseText=="[]")
{
location.href = "error.htm";
}
else
{
Ext.get("loginName").dom.innerHTML = form.form.findField("loginname").getValue();
utils.monitorSession();
hsjwebgis.mainlayout.loginSuccess(response);
}
}
},
failure: function(){
Ext.MessageBox.show({
title: '警 告',
msg: '服务器连接异常',
buttons: Ext.MessageBox.OK,
icon: Ext.MessageBox.WARNING
});
loginwindow.buttons[0].enable();
},
params: {
loginname:form.form.findField("loginname").getValue(),
password:form.form.findField("password").getValue()
}
});
}
}
},
//end
/*加载accordion
*ext/extends/FeedTree.js
**/
loginSuccess:function(response){
//alert(response);
permission = response.responseText;
eval("var permission = " + permission);
for (var n = 0; n < permission.length; n++) {
eval("var feed"
+ permission[n].nodeid
+ " = new FeedTree({title:'"+permission[n].name+"',id:"
+ permission[n].nodeid
+ ",root: new Ext.tree.TreeNode(),baseon:center,action:'"
+ permission[n].action + "',description:'"
+ permission[n].description + "'})")
for (var m = 0; m < permission[n].node.length; m++) {
eval("var node = feed" + permission[n].nodeid
+ ".addNode('" + permission[n].node[m].name
+ "','feeds-node',true,"
+ permission[n].node[m].nodeid
+ ",' ')");
for (var k = 0; k < permission[n].node[m].node.length; k++) {
eval("var feedNode = feed" + permission[n].nodeid
+ ".addfeed('"
+ permission[n].node[m].node[k].name + "',"
+ permission[n].node[m].node[k].nodeid
+ ",node,center,'"
+ permission[n].node[m].node[k].description
+ "','" + permission[n].node[m].node[k].action
+ "','" + permission[n].node[m].node[k].permission
+ "')");
}
}
eval("west.add(feed" + permission[n].nodeid + ")");
west.doLayout();
}
if(loginwindow!=null){
loginsuccess = true;
loginwindow.close();
}
}
};
}();
* */
hsjwebgis.interval
hsjwebgis.mainlayout = function(){
var Ajax = Ext.Ajax;
var west;
var loginwindow;
var loginsuccess = false;
var center;
var height;
var beforeroeindex;
return{
/*
* 主框架
* */
mainlayout:function(){
var south = new Ext.BoxComponent({
region:'south',
el: 'south',
height : 20
});
west = new Ext.Panel({
region:'west',
title:'数 据 维 护',
split:true,
width: 200,
minSize: 175,
maxSize: 400,
// autoScroll: true,
collapsible: true,
margins:'0 0 0 5',
layout:'accordion',
layoutConfig:{
animate:false
}
});
center = new Ext.TabPanel({
region:'center',
id:'acc',
enableTabScroll:true,
activeTab:0
});
var viewport = new Ext.Viewport({
layout:'border',
items:[
south, west, center
]
});
viewport.on('resize',function(){
//alert(south.getSize().height);
if(south.getSize().height>25)
south.setHeight(25);
viewport.doLayout();
});
return{
viewport: viewport,
viewCenter:center,
viewWest:west,
//viewNorth: north,
viewSouth: south
}
},
/*
* 登陆对话框
* */
//begin
loginwindow:function(){
var chk = new Ext.form.Checkbox({
boxLabel:'记住用户名',
hideLabel : true
});
var form = new Ext.form.FormPanel({
baseCls: 'x-plain',
labelWidth: 70,
bodyStyle:'padding:15px 15px 0',
//defaultType: 'textfield',
defaults: {width: 150},
items: [{
xtype: 'textfield',
fieldLabel: '用户名',
regexText:"用户名必须为0~9,a~z或下划线组成的字符",
regex:/^[A-Za-z0-9_]+$/,
name: 'loginname',
anchor:'100%'
},{
xtype: 'textfield',
fieldLabel: '密 码',
regex:/^[A-Za-z0-9_]+$/,
regexText:"密码必须为0~9,a~z或下划线组成的字符",
name: 'password',
inputType:'password',
anchor:'100%'
},chk]
});
///响应enter事件
var nav = new Ext.KeyNav("login", {
"enter" : function(e){
hsjwebgis.mainlayout.login(form);
},
scope : this
});
//框体
loginwindow = new Ext.Window({
el:'login',
title: '登 录 Login',
width: 300,
height:180,
layout: 'fit',
closable : false,
plain:true,
bodyStyle:'padding:5px;',
buttonAlign:'center',
items: form,
modal:true,
resizable:false,
buttons: [{
text: '登 录',
handler: function(){
var n = 0;
var text = "";
if (!form.form.findField("loginname").isValid())
{
n++;
text = text + "<div>" + n + ':'+ form.form.findField("loginname").regexText + '\n</div>';
}
if (!form.form.findField("password").isValid())
{
n++;
text = text + "<div>" + n + ':'+ form.form.findField("password").regexText + '\n</div>';
}
if (n>0)
{
Ext.MessageBox.alert
(
'提示', '<div>填写数据错误,可能存在以下错误:\n</div>' + text,
function()
{}
);
}
if(chk.getValue())
saveLoginName(form.form.findField("loginname").getValue());
else
saveLoginName('');
if(n==0)
hsjwebgis.mainlayout.login(form);
}
},{
text: '取 消',
handler: function(){
hsjwebgis.mainlayout.close();
}
}]
});
loginwindow.on('beforeshow',function(){
form.form.findField("loginname").setValue(getLoginName());
chk.setValue(isCheck());
});
loginwindow.on({
'close':function() {
hsjwebgis.mainlayout.close();
}
});
loginwindow.show(this);
Ext.get('x-form-el-ext-comp-1005').setStyle("text-align","right");
},
//end
close:function(){
if(loginsuccess == false){
window.close();
if(Ext.isGecko)
alert("此操作被浏览器拒绝!\n 请在浏览器地址栏输入“about:config”并回车\n然后将[dom.allow_scripts_to_close_windows]设置为'true'");
}
},
//begin
/**
登陆连接
* servlet/Login
* 参数{
* loginname,
* password
* }
* */
login:function(form){
//设置登录按钮为不可用状态
loginwindow.buttons[0].disable();
var index = 0;
if(form.form.findField("loginname").getValue() == ""||form.form.findField("password").getValue() == "")
{
Ext.MessageBox.show({
title: '提 示',
msg: '对不起,用户名或密码不能为空!',
buttons: Ext.MessageBox.OK,
icon: Ext.MessageBox.INFO
});
loginwindow.buttons[0].enable();
}
if(form.form.findField("loginname").getValue() != ""&&form.form.findField("password").getValue() != ""){
if(index == 0){
index ++;
Ajax.request({
url: 'aspx/Login.aspx',
success: function(response){
if(response.responseText=="false"){
loginwindow.buttons[0].disable();
loginsuccess = false;
Ext.MessageBox.show({
title: '提 示',
msg: '错误的用户名或密码',
buttons: Ext.MessageBox.OK,
icon: Ext.MessageBox.ERROR
});
loginwindow.buttons[0].enable();
}
else if(response.responseText=="false2")
{
loginsuccess = false;
Ext.MessageBox.show({
title: '提 示',
msg: '对不起,您的账户已被锁定!',
buttons: Ext.MessageBox.OK,
icon: Ext.MessageBox.INFO
});
loginwindow.buttons[0].enable();
}
else{
//登陆成功但是并非web权限用户
if(response.responseText=="[]")
{
location.href = "error.htm";
}
else
{
Ext.get("loginName").dom.innerHTML = form.form.findField("loginname").getValue();
utils.monitorSession();
hsjwebgis.mainlayout.loginSuccess(response);
}
}
},
failure: function(){
Ext.MessageBox.show({
title: '警 告',
msg: '服务器连接异常',
buttons: Ext.MessageBox.OK,
icon: Ext.MessageBox.WARNING
});
loginwindow.buttons[0].enable();
},
params: {
loginname:form.form.findField("loginname").getValue(),
password:form.form.findField("password").getValue()
}
});
}
}
},
//end
/*加载accordion
*ext/extends/FeedTree.js
**/
loginSuccess:function(response){
//alert(response);
permission = response.responseText;
eval("var permission = " + permission);
for (var n = 0; n < permission.length; n++) {
eval("var feed"
+ permission[n].nodeid
+ " = new FeedTree({title:'"+permission[n].name+"',id:"
+ permission[n].nodeid
+ ",root: new Ext.tree.TreeNode(),baseon:center,action:'"
+ permission[n].action + "',description:'"
+ permission[n].description + "'})")
for (var m = 0; m < permission[n].node.length; m++) {
eval("var node = feed" + permission[n].nodeid
+ ".addNode('" + permission[n].node[m].name
+ "','feeds-node',true,"
+ permission[n].node[m].nodeid
+ ",' ')");
for (var k = 0; k < permission[n].node[m].node.length; k++) {
eval("var feedNode = feed" + permission[n].nodeid
+ ".addfeed('"
+ permission[n].node[m].node[k].name + "',"
+ permission[n].node[m].node[k].nodeid
+ ",node,center,'"
+ permission[n].node[m].node[k].description
+ "','" + permission[n].node[m].node[k].action
+ "','" + permission[n].node[m].node[k].permission
+ "')");
}
}
eval("west.add(feed" + permission[n].nodeid + ")");
west.doLayout();
}
if(loginwindow!=null){
loginsuccess = true;
loginwindow.close();
}
}
};
}();
3. 定义数据源
View Code
/*
* 数据集合,返回所有为store
*
*/
Ext.namespace('hsjwebgis.datasource');
hsjwebgis.datasource.sex = [[1,'男'],[2,'女']];
hsjwebgis.datasource.staff = function(){
return new Ext.data.Store({
proxy:new Ext.data.HttpProxy({
url:"http://www.cnblogs.com/action/salor_jn/Staff_jn.ashx",
timeout : 60000
}),
reader:hsjwebgis.reader.staff
})};
hsjwebgis.datasource.ship = function(){
return new Ext.data.Store({
proxy:new Ext.data.HttpProxy({
url:"http://www.cnblogs.com/action/ship_jn/Ship_jn.ashx",
timeout : 60000
}),
reader:hsjwebgis.reader.ship
})};
hsjwebgis.datasource.stafflicence = function(){
return new Ext.data.Store({
proxy:new Ext.data.HttpProxy({
url:"http://www.cnblogs.com/action/salor_jn/StaffLicence_jn.ashx",
timeout : 60000
}),
reader:hsjwebgis.reader.stafflicence
})};
hsjwebgis.datasource.stafftrain = function(){
return new Ext.data.Store({
proxy:new Ext.data.HttpProxy({
url:"http://www.cnblogs.com/action/salor_jn/StaffTrain_jn.ashx",
timeout : 60000
}),
reader:hsjwebgis.reader.stafftrain
})};
hsjwebgis.datasource.empwork = function(){
return new Ext.data.Store({
proxy:new Ext.data.HttpProxy({
url:"http://www.cnblogs.com/action/salor_jn/EmpWork_jn.ashx",
timeout : 60000
}),
reader:hsjwebgis.reader.empwork
})};
* 数据集合,返回所有为store
*
*/
Ext.namespace('hsjwebgis.datasource');
hsjwebgis.datasource.sex = [[1,'男'],[2,'女']];
hsjwebgis.datasource.staff = function(){
return new Ext.data.Store({
proxy:new Ext.data.HttpProxy({
url:"http://www.cnblogs.com/action/salor_jn/Staff_jn.ashx",
timeout : 60000
}),
reader:hsjwebgis.reader.staff
})};
hsjwebgis.datasource.ship = function(){
return new Ext.data.Store({
proxy:new Ext.data.HttpProxy({
url:"http://www.cnblogs.com/action/ship_jn/Ship_jn.ashx",
timeout : 60000
}),
reader:hsjwebgis.reader.ship
})};
hsjwebgis.datasource.stafflicence = function(){
return new Ext.data.Store({
proxy:new Ext.data.HttpProxy({
url:"http://www.cnblogs.com/action/salor_jn/StaffLicence_jn.ashx",
timeout : 60000
}),
reader:hsjwebgis.reader.stafflicence
})};
hsjwebgis.datasource.stafftrain = function(){
return new Ext.data.Store({
proxy:new Ext.data.HttpProxy({
url:"http://www.cnblogs.com/action/salor_jn/StaffTrain_jn.ashx",
timeout : 60000
}),
reader:hsjwebgis.reader.stafftrain
})};
hsjwebgis.datasource.empwork = function(){
return new Ext.data.Store({
proxy:new Ext.data.HttpProxy({
url:"http://www.cnblogs.com/action/salor_jn/EmpWork_jn.ashx",
timeout : 60000
}),
reader:hsjwebgis.reader.empwork
})};
4.读取对象定义(Json格式定义)
View Code
Ext.namespace('hsjwebgis.reader');
hsjwebgis.reader.staff = new Ext.data.JsonReader({
totalProperty : 'totalCount',
root : 'rows',
id : 'staffid'
}, [{
name : 'staffid',
mapping : 'staffid'
}, {
name : 'shipid',
mapping : 'shipid'
}, {
name : 'name',
mapping : 'name'
}, {
name : 'shipname',
mapping : 'shipname'
}, {
name : 'sex',
mapping : 'sex'
}, {
name : 'position',
mapping : 'position'
}, {
name : 'cardid',
mapping : 'cardid'
}, {
name : 'baddress',
mapping : 'baddress'
}, {
name : 'birthday',
mapping : 'birthday'
}, {
name : 'edulevel',
mapping : 'edulevel'
}, {
name : 'serverid',
mapping : 'serverid'
}]);
hsjwebgis.reader.ship = new Ext.data.JsonReader({
totalProperty : 'totalCount',
root : 'rows',
id : 'shipid'
}, [{
name : 'shipid',
mapping : 'shipid'
}, {
name : 'name',
mapping : 'name'
}]);
hsjwebgis.reader.stafflicence = new Ext.data.JsonReader({
totalProperty : 'totalCount',
root : 'rows',
id : 'licenceid'
}, [{
name : 'licenceid',
mapping : 'licenceid'
}, {
name : 'name',
mapping : 'name'
}, {
name : 'grantcom',
mapping : 'grantcom'
}, {
name : 'endtime',
mapping : 'endtime'
}, {
name : 'granttime',
mapping : 'granttime'
}, {
name : 'code',
mapping : 'code'
}, {
name : 'grade',
mapping : 'grade'
}]);
hsjwebgis.reader.stafftrain = new Ext.data.JsonReader({
totalProperty : 'totalCount',
root : 'rows',
id : 'trainid'
}, [{
name : 'trainid',
mapping : 'trainid'
}, {
name : 'name',
mapping : 'name'
}, {
name : 'content',
mapping : 'content'
}, {
name : 'traincom',
mapping : 'traincom'
}, {
name : 'starttime',
mapping : 'starttime'
}, {
name : 'endtime',
mapping : 'endtime'
}, {
name : 'result',
mapping : 'result'
}]);
hsjwebgis.reader.empwork = new Ext.data.JsonReader({
totalProperty : 'totalCount',
root : 'rows',
id : 'workid'
}, [{
name : 'workid',
mapping : 'workid'
}, {
name : 'unitname',
mapping : 'unitname'
}, {
name : 'duty',
mapping : 'duty'
}, {
name : 'startdt',
mapping : 'startdt'
}, {
name : 'enddt',
mapping : 'enddt'
}]);
hsjwebgis.reader.staff = new Ext.data.JsonReader({
totalProperty : 'totalCount',
root : 'rows',
id : 'staffid'
}, [{
name : 'staffid',
mapping : 'staffid'
}, {
name : 'shipid',
mapping : 'shipid'
}, {
name : 'name',
mapping : 'name'
}, {
name : 'shipname',
mapping : 'shipname'
}, {
name : 'sex',
mapping : 'sex'
}, {
name : 'position',
mapping : 'position'
}, {
name : 'cardid',
mapping : 'cardid'
}, {
name : 'baddress',
mapping : 'baddress'
}, {
name : 'birthday',
mapping : 'birthday'
}, {
name : 'edulevel',
mapping : 'edulevel'
}, {
name : 'serverid',
mapping : 'serverid'
}]);
hsjwebgis.reader.ship = new Ext.data.JsonReader({
totalProperty : 'totalCount',
root : 'rows',
id : 'shipid'
}, [{
name : 'shipid',
mapping : 'shipid'
}, {
name : 'name',
mapping : 'name'
}]);
hsjwebgis.reader.stafflicence = new Ext.data.JsonReader({
totalProperty : 'totalCount',
root : 'rows',
id : 'licenceid'
}, [{
name : 'licenceid',
mapping : 'licenceid'
}, {
name : 'name',
mapping : 'name'
}, {
name : 'grantcom',
mapping : 'grantcom'
}, {
name : 'endtime',
mapping : 'endtime'
}, {
name : 'granttime',
mapping : 'granttime'
}, {
name : 'code',
mapping : 'code'
}, {
name : 'grade',
mapping : 'grade'
}]);
hsjwebgis.reader.stafftrain = new Ext.data.JsonReader({
totalProperty : 'totalCount',
root : 'rows',
id : 'trainid'
}, [{
name : 'trainid',
mapping : 'trainid'
}, {
name : 'name',
mapping : 'name'
}, {
name : 'content',
mapping : 'content'
}, {
name : 'traincom',
mapping : 'traincom'
}, {
name : 'starttime',
mapping : 'starttime'
}, {
name : 'endtime',
mapping : 'endtime'
}, {
name : 'result',
mapping : 'result'
}]);
hsjwebgis.reader.empwork = new Ext.data.JsonReader({
totalProperty : 'totalCount',
root : 'rows',
id : 'workid'
}, [{
name : 'workid',
mapping : 'workid'
}, {
name : 'unitname',
mapping : 'unitname'
}, {
name : 'duty',
mapping : 'duty'
}, {
name : 'startdt',
mapping : 'startdt'
}, {
name : 'enddt',
mapping : 'enddt'
}]);
以上只是代码片段,主体框架的脉络已经清晰了...
登陆效果:
登陆后的效果:
posted on 2012-06-13 17:36 Jason Bourne 阅读(547) 评论(0) 收藏 举报

浙公网安备 33010602011771号