53. 部门信息显示 EXTJS 单击树节点
1.
/**
* @author sux
* @time 2011-1-14
* @desc 部门信息显示
*/
deptInfoGridPanel = Ext.extend(Ext.grid.EditorGridPanel,{
id: 'deptInfoPanel',
//renderTo: Ext.getBody(), //渲染到body
constructor: function(){
Ext.QuickTips.init();
this['store'] = new Ext.data.JsonStore({
url: 'dept_list.action',
root: 'root',
totalProperty: 'totalProperty',
//record
fields: ['deptId','deptName',
'deptNum','deptMgr','deptRemark']
});
var rowNumber = new Ext.grid.RowNumberer(); //序列号
var checkbox = new Ext.grid.CheckboxSelectionModel(); //{默认是多选singleSelect: false}
deptInfoGridPanel.superclass.constructor.call(this,{
width: Ext.getCmp('mainTab').getActiveTab().getInnerWidth(),
height: Ext.getCmp('mainTab').getActiveTab().getInnerHeight(),
/**表格高度自适应 document.body.clientHeight浏览器页面高度 start**/
monitorResize: true,
doLayout: function() {
this.setWidth(document.body.clientWidth-);
this.setHeight(document.body.clientHeight-);
Ext.grid.GridPanel.prototype.doLayout.call(this);
} ,
/**end**/
viewConfig: {
forceFit: true,
columnsText : "显示/隐藏列",
sortAscText : "正序排列",
sortDescText : "倒序排列"
},
sm: checkbox,
columns: [
rowNumber, checkbox,
{
header: '部门编号',
dataIndex: 'deptId',
align: 'center'
},{
header: '部门名称',
dataIndex: 'deptName',
align: 'center'
},{
header: '部门人数',
dataIndex: 'deptNum',
align: 'center'
},{
header: '部门经理',
dataIndex: 'deptMgr',
align: 'center'
},{
header: '备注',
dataIndex: 'deptRemark',
name: 'deptRemark',
renderer: Ext.hrmsys.grid.tooltip.subLength,
align: 'center'
}],
tbar: new Ext.Toolbar({
style: 'padding: 5px;',
id: 'departToolbar',
items: ['条目:',{
xtype: 'combo',
width: ,
triggerAction: 'all',
editable: false,
mode: 'local',
store: new Ext.data.SimpleStore({
fields: ['name','value'],
data: [[" ","全部"],["deptId","部门编号"],["deptName","部门名称"],["deptMgr","部门经理"]]
}),
id: 'condition_dept',
displayField: 'value',
valueField: 'name',
emptyText: '请选择'
},'内容:',{
id: 'condition_dept_value',
xtype: 'textfield',
listeners : {
specialkey : function(field, e) {//添加回车事件
if (e.getKey() == Ext.EventObject.ENTER) {
queryDeptFn();
}
}
}
},{
text: '查询',
tooltip: '查询部门',
iconCls: 'search',
hidden: 'true',
id: 'dept_query',
handler: queryDeptFn
},{
text: '删除',
tooltip: '删除部门',
id: 'dept_delete',
iconCls: 'delete',
hidden: 'true',
handler: delDeptFn
},{
text: '添加',
tooltip: '添加部门',
id: 'dept_add',
hidden: 'true',
iconCls: 'add',
handler: addDeptFn
},{
text: '修改',
id: 'dept_update',
iconCls: 'update',
hidden: 'true',
tooltip: '修改部门',
handler: updateDeptFn
}]
}),
bbar: new PagingToolbar(this['store'], )
});
this.getStore().load({
params:{
start: ,
limit:
}
});
//new Ext.Viewport().render();
}
}); addDeptFn = function(){
deptAddWin = new DeptAddWin();
deptAddWin.show();
}; delDeptFn = function(){
gridDel('deptInfoPanel','deptId', 'dept_delete.action');
}; updateDeptFn = function(){
deptAddWin = new DeptAddWin();
deptAddWin.title = '部门信息修改';
var selectionModel = Ext.getCmp('deptInfoPanel').getSelectionModel();
var record = selectionModel.getSelections();
if(record.length != ){
Ext.Msg.alert('提示','请选择一个');
return;
}
var deptId = record[].get('deptId');
Ext.getCmp('deptAddFormId').getForm().load({
url: 'dept_intoUpdate.action',
params: {
deptId: deptId
}
})
deptAddWin.show();
}; queryDeptFn = function(){
var condition = Ext.getCmp('condition_dept').getValue();
var conditionValue = Ext.getCmp("condition_dept_value").getValue();
Ext.getCmp("deptInfoPanel").getStore().reload({
params: {
condition: condition,
conditionValue : conditionValue,
start: ,
limit:
}
})
};
2.添加一个新的部门窗口
Ext.namespace("hrmsys.dept.add");
//新建一个window窗口
DeptAddWin = Ext.extend(Ext.Window,{
id: 'deptAddWinId',
addForm: null,
constructor: function(){
addForm = new DeptAddForm();
DeptAddWin.superclass.constructor.call(this,{
title: '部门录入',
width: 400,
modal: true,
height: 350,
collapsible: true,
colsable: true,
layout: 'form',
items: [addForm]
})
}
})
//窗口里包含一个Form面板
DeptAddForm = Ext.extend(Ext.form.FormPanel,{
id: 'deptAddFormId',
constructor: function(){
Ext.QuickTips.init();
//加载后台数据,进行转换
var reader = new Ext.data.JsonReader({},[{
name: 'dept.deptId' , mapping: 'deptId'
},{
name: 'dept.deptName', mapping: 'deptName'
},{
name: 'dept.deptMgr', mapping: 'deptMgr'
},{
name: 'dept.deptRemark', mapping: 'deptRemark'
}]);
DeptAddWin.superclass.constructor.call(this, {
labelWidth: 80,
padding: '20 0 0 50',
reader: reader,
labelAlign: 'right',
border: false,
frame: true,
items: [{
xtype: 'textfield',
fieldLabel: '部门编号',
allowBlank: false,
msgTarget: 'side',
blankText: '不能为空',
emptyText: '不能为空',
width: 150,
name: 'dept.deptId'
},{
xtype: 'textfield',
fieldLabel: '部门名称',
allowBlank: false,
msgTarget: 'side',
blankText: '不能为空',
emptyText: '不能为空',
width: 150,
name: 'dept.deptName'
},{
xtype: 'textfield',
width: 150,
fieldLabel: '部门经理工号',
id: 'empId',
msgTarget: 'side',
listeners: {'blur': blurFn}
},{
xtype: 'textfield',
fieldLabel: '部门经理姓名',
width: 150,
id: 'empName',
name: 'dept.deptMgr',
readOnly: true
},{
xtype: 'textarea',
fieldLabel: '备注',
width: 150,
height: 150,
name: 'dept.deptRemark'
}],
buttonAlign: 'center',
buttons: [{
text: '保存',
handler: function(){
//验证表单填写的数据是否有效
if(!Ext.getCmp('deptAddFormId').getForm().isValid()){
return;
}
//提交表单
Ext.getCmp('deptAddFormId').getForm().submit({
url: 'dept_save.action',
method: 'post',
waitMsg: '正在保存数据...',
waitTitle: '提示',
scope: this,
success: saveDeptSuccessFn,
failure: save_failure
})
}
},{
text: '关闭',
handler: function(){
Ext.getCmp('deptAddWinId').destroy();
}
}]
})
}
}); //提交表单成功处理函数
saveDeptSuccessFn = function(form, action){
//消息提示框
Ext.Msg.confirm('提示', action.result.msg, function(button, text){
if(button == "yes"){
form.reset();
//销毁面板
Ext.getCmp('deptAddWinId').destroy();
//reload()重新加载数据时
Ext.getCmp('deptInfoPanel').getStore().reload();//刷新部门显示列表
}
});
}; //提交失败处理函数
save_failure = function(form, action){
Ext.Msg.alert('提示',"连接失败", function(){ });
};
//工号失焦点事件
blurFn = function(value){
var empId = value.getRawValue();
Ext.Ajax.request({
url: 'emp_isExist.action',
method: 'post',
params: {
empId: empId
},
success: isExistSuccessFn,
failure: save_failure
})
};
isExistSuccessFn = function(response, options){
if(response.responseText != "")
Ext.get('empName').dom.value = response.responseText;
else{
////成批设置表单字段为验证无效
Ext.getCmp('empId').markInvalid('此工号不存在');
}
};
3.删除部门
/**
* 删除表格中选中的内容
* @param {Object} panelId 表单面板的Id
* @param {Object} delId 数据库的删除时依据的属性
* @param {Object} url 提交的URL
* @return {TypeName}
*/ function gridDel(panelId, delId, url){
//中某一行值
var oSelMode = Ext.getCmp(panelId).getSelectionModel();
//某一列的值
var oRecords = oSelMode.getSelections();
var ids = "";
for(var i=0;i<oRecords.length;i++){
ids += oRecords[i].get(delId);
if(i != oRecords.length-1) ids += ",";
};
if(ids != null && ids != ""){
Ext.Msg.confirm("提示","确定删除",function(button, text){
if(button == "yes"){
Ext.Ajax.request({
url: url,
success: function(response, options){
var datas = Ext.util.JSON.decode(response.responseText);
Ext.Msg.alert("提示", datas.msg, function(){
Ext.getCmp(panelId).getStore().reload();
})
},
failure: function(response, options){
Ext.Msg.alert("提示", '连接失败', function(){})
},
params: {
ids: ids
}
})
}
})
}else{
Ext.Msg.alert("提示","请先选择",function(){});
}
};
/**
* 分页栏类
* @param {Object} store 表格存储store
* @param {Object} pageSize 页面大小
* @memberOf {TypeName}
*/
PagingToolbar = Ext.extend(Ext.PagingToolbar, {
constructor: function(store, pageSize){
PagingToolbar.superclass.constructor.call(this, {
store: store,
pageSize: pageSize, //页面大小
displayInfo: true,
displayMsg : '共<font color="red"> {2} </font>条记录,当前页记录索引<font color="red"> {0} - {1}</font> ',
emptyMsg: '没有数据',
refreshText: '刷新',
firstText: '第一页',
prevText: '前一页',
nextText: '下一页',
lastText: '最后一页'
})
}
})
4.部门信息jsp页面
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<script type="text/javascript">
var deptPanel = new deptInfoGridPanel();
var tabId = Ext.getCmp('mainTab').getActiveTab().id.split('_')[1];
juage(tabId,"dept",deptPanel,"tab");
//deptPanel.render("tab");
</script>
<div id="tab" ></div>
5.
/**
* 根据用户权限显示不同的页面
* 前后得到的菜单节点id和后台用户的角色id查询数据库获得用户权限
* @param {Object} id 页面id,本质是菜单节点的id
* @param {Object} page 按钮id前缀
* @param {Object} cmp 组件
* @param {Object} renderId 渲染的id
*/
function juage(id,page,cmp, renderId){
//设置遮罩,当按钮隐藏之后,再隐藏遮罩
var myMask = new Ext.LoadMask('mainTab', {msg:"请稍等..."});
myMask.show();
Ext.Ajax.request({
url: 'permission_permission.action',
method: 'post',
success: function (response, options){
var datas = response.responseText;
if(datas != ''){
var fn = datas.split(' ');
for(var i = 0; i< fn.length; i++){
var comp = Ext.getCmp(page+'_'+fn[i]);
if(comp){
comp.show(); //将没有权限的按钮隐藏hiden
}
}
}
//1.调用组件的render方法
//renderer可以格式化该列显示的数据格式或者按照你自定义的脚本显示最终数据样子,个人是这么理解,如果你不是可以看下本文
cmp.render(renderId);
myMask.hide();
},
failure: function(response, options){
Ext.Msg.alert('提示','连接后台失败');
},
params: {
menuId: id
}
})
};
53. 部门信息显示 EXTJS 单击树节点的更多相关文章
- ExtJs 4.2 treePanel 点击树节点 传送参数到后台(多个参数)
//***********************************************左边树开始********************************************** ...
- Extjs整体加载树节点
Ext.onReady(function () { Ext.define('company', { extend: 'Ext.data.Mode ...
- Extjs 4.2 右键菜单树节点(,选择逆,废除)
写自己的最新版本号extjs4.2树节点的操作,记录它,可能在将来被用于. var tree = new Ext.tree.TreePanel({ flex: 1, animate: true, au ...
- Extjs改变树节点的勾选状态
Extjs改变树节点的勾选状态 今天系统中有处地方需要一个功能点击一个按钮后将树节点前的复选框去掉,变成没有选择的状态.网上搜索了半天,然后自己查查API,终于找到解决办法了,下面把方法贴出来. 在E ...
- ExtJS 4 树
Tree Panel是ExtJS中最多能的组件之一,它非常适合用于展示分层的数据.Tree Panel和Grid Panel继承自相同的基类,所以所有从Grid Panel能获得到的特性.扩展.插件等 ...
- zTree实现删除树节点
zTree实现删除树节点 1.实现源码 <!DOCTYPE html> <html> <head> <title>zTree实现基本树</titl ...
- Easyui 实现点击不同树节点打开不同tab页展示不同datagrid表数据设计
实现点击不同树节点打开不同tab页展示不同datagrid表数据设计 by:授客 QQ:1033553122 测试环境 jquery-easyui-1.5.3 需求描述 如上图, 1.点击左侧树,叶子 ...
- C#上移,下移TreeView中的树节点顺序
C#上移,下移TreeView中的树节点顺序 2009-08-12 20:10 1494人阅读 评论(2) 收藏 举报 c#buttonobjectnullstring C#中,通过单击上移,下移按钮 ...
- js 查找树节点 数组去重
//查找树节点function findData(curOrg, id) { var array = []; if ((typeof curOrg == 'object') && (c ...
随机推荐
- tf idf公式及sklearn中TfidfVectorizer
在文本挖掘预处理之向量化与Hash Trick中我们讲到在文本挖掘的预处理中,向量化之后一般都伴随着TF-IDF的处理,那么什么是TF-IDF,为什么一般我们要加这一步预处理呢?这里就对TF-IDF的 ...
- 3D NAND闪存是个啥?让国内如此疯狂
Repost: https://news.mydrivers.com/1/477/477251.htm 上个月底武汉新芯科技主导的国家级存储器产业基地正式动工,在大基金的支持下该项目将投资240亿美元 ...
- Java基础——接口
一:接口,英文称作interface,在软件工程中,接口泛指供别人调用的方法或者函数. 在封装与接口中,private关键字封装了对象的内部成员.经过封装,产品隐藏了内部细节,只提供给用户接口(int ...
- 在Java中调用带参数的存储过程
JDBC调用存储过程: CallableStatement 在Java里面调用存储过程,写法那是相当的固定: Class.forName(.... Connection conn = DriverMa ...
- TestNG超时测试
用@Test(timeOut = XXX) 指定超时时间,单位是毫秒 package com.janson; import org.testng.annotations.Test; public cl ...
- Django基础——ORM字段和字段参数
ORM概念: 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象( 1. 不同的程序员写的SQL水平参差不齐 2. ...
- HDU 1176 DP
题目大意: 在0~10这11个点上面接饼 , 每秒最多往左或往移动一格,或者保持原地不动 令dp[i][j]表示在第 i 秒在 第 j 个点上最多能得到的饼的数量 dp[i][j] = max(dp[ ...
- [luoguP1029] 最大公约数和最小公倍数问题(数论)
传送门 一.暴力枚举(加了点优化) #include <cstdio> int x, y, ans; inline int gcd(int x, int y) { return !y ? ...
- noip模拟赛 水管工的难题
[问题描述]你是一名优秀的水管工. 一天你遇到了一个棘手的难题. 你需要在一个长方体状的房间内连接一条贯穿房间内部的水管.房间的长为 X,宽为 Y,高为 Z, 整个房间可以看成是 X×Y×Z个小立方体 ...
- J2EE 课件3 JSP标记
•JSP标记包括指令标记.动作标记和自定义标记.其中自定义标记主要讲述与Tag文件有关的Tag标记 1.指令标记page page 指令用来定义整个JSP页面的一些属性和这些属性的值,属性值用单 ...