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 ...
随机推荐
- day02 Python完结
一. 常用数据类型及内置法 1 列表 定义: 列表是Python中内置有序.可变序列,列表的所有元素放在一对中括号“[]”中,并使用逗号分隔开: 当列表元素增加或删除时,列表对象自动进行扩展或收缩内存 ...
- Python学习笔记(2)数值类型
进制转换 int函数任意进制转换为10进制 第一个参数传入一个字符串,任意进制的,第二个参数传入对这个字符串的解释,解释他为几进制 hex oct bin转换进制为16 8 或者2进制 例题中石油87 ...
- 通过request对象获取客户端的相关信息
通过request对象获取客户端的相关信息 制作人:全心全意 通过request对象可以获取客户端的相关信息.例如HTTP报头信息.客户信息提交方式.客户端主机IP地址.端口号等等. request获 ...
- 第九节:web爬虫之urllib(五)
第四个模块 robotparser: 主要是用来识别网站的 robots.txt 文件,然后判断哪些网站可以爬,哪些网站不可以爬的,其实用的比较少.
- vuex----------state的基础用法
先使用vue cli构建一个自己的vue项目 1.npm i -g vue-cli 2.vue init webpack sell (sell是你的项目名) 3.一路回车(在这个过程中会提示你是否安装 ...
- ansible plugins简介
ansible插件是增强ansible的核心功能的代码片段,ansible使用插件架构来实现丰富,灵活和可扩展的功能集. Ansible提供了许多方便的插件,您可以轻松编写自己的插件. 下边简单介绍A ...
- Spark在Executor上的内存分配
spark.serializer (default org.apache.spark.serializer.JavaSerializer ) 建议设置为 org.apache.spark.ser ...
- SpringBoot @ConditionalOnBean、@ConditionalOnMissingBean注解源码分析与示例
前言: Spring4推出了@Conditional注解,方便程序根据当前环境或者容器情况来动态注入bean,对@Conditional注解不熟悉的朋友可移步至 Spring @Conditional ...
- 如何高效读写百万级的Excel?
高效读取百万级数据 接上一篇介绍的高效写文件之后,最近抽时间研究了下Excel文件的读取.概括来讲,poi读取excel有两种方式:用户模式和事件模式. 然而很多业务场景中的读取Excel仍然采用用户 ...
- 从尾到头打印链表——剑指Offer
https://www.nowcoder.net/practice/d0267f7f55b3412ba93bd35cfa8e8035?tpId=13&tqId=11156&tPage= ...