使用Jquery+EasyUI进行框架项目开发案例解说之中的一个---员工管理源代码分享

使用Jquery+EasyUI 进行框架项目开发案例解说之中的一个

员工管理源代码分享

在開始解说之前,我们先来看一下什么是Jquery EasyUI?jQuery EasyUI是一组基于jQuery的UI插件集合,而jQuery EasyUI的目标就是帮助web开发人员更轻松的打造出功能丰富而且美观的UI界面。开发人员不须要编写复杂的javascript,也不须要对css样式有深入的了解,开发人员须要了解的仅仅有一些简单的html标签。jQuery EasyUI为我们提供了大多数UI控件的使用,如:accordion,combobox,menu,dialog,tabs,validatebox,datagrid,window,tree等等。jQuery EasyUI是基于JQuery的一个前台ui界面的插件,功能相对没extjs强大,但页面也是相当好看的。一些功能也足够开发人员使用,相对于extjs更轻量。相对ExtJs,我更喜欢Easy UI,即是没有的功能,我们也能够使用其它替代的UI界面组件取代。

要了解很多其它的关于EasyUI的信息,能够到它的官网看看,地址为:

http://www.jeasyui.com/index.php

第一部分:员工管理源代码解说

员工(职员)管理主要是对集团、企事业内部员工进行管理。在后面的章节能够看到有一个用户管理,这两者有什么关系呢?员工包括当前企事业单位的全部职员(如保安、保洁员等),这些员工不一定都须要登录到系统中做对应的业务操作,而用户则是能够登录到系统中进行操作的系统使用者。假设某个职员也能够进行登录,那么我们能够不必要再为其加一条用户信息,能够直接做个映射就可以把当前员工(职员)映射为用户。员工(职员)管理包括员工的新增、编辑、删除、离职处理、导出、导入员工信息等操作。在框架主界面导航区选择“员工管理”进入员工管理主界面,例如以下图所看到的:

能够看到,整个界面除了左側的导航区,右边的工作区分为两部分,树型组织机构导航与员工的列表展示。功能分为加入、改动删除等。以下我们来看下怎样实现上面的功能。

首先是员工管理的UI界面aspx代码例如以下:

<%@ Page Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="StaffAdmin.aspx.cs" Inherits="RDIFramework.WebApp.Modules.StaffAdmin" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
<style type="text/css">
    div#navigation{background:white}
    div#wrapper{float:right;width:100%;margin-left:-185px}
    div#content{margin-left:185px}
    div#navigation{float:left;width:180px}
</style>

</asp:Content>
<asp:Content ID="Content2"  ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
    <div id="layout">
            <div region="west" iconCls="icon-chart_organisation" split="true" title="组织机构" style="width:220px;padding: 5px" collapsible="false">
                <ul id="organizeTree"></ul>
            </div>
            <div region="center" title="员工管理" iconCls="icon-users" style="padding: 2px; overflow: hidden">
                <div id="toolbar">
                   <%=base.BuildToolBarButtons()%>
                </div>
                <table id="staffGird" toolbar="#toolbar"></table>

            </div>
    </div>
    <script type="text/javascript" src="../Scripts/Business/StaffAdmin.js?v=5"></script>
</asp:Content>

注意,在上面的代码中,我们要引用界面业务逻辑的js文件,例如以下:

<script type="text/javascript" src="../Scripts/Business/StaffAdmin.js?v=5"></script>

员工管理的功能button是依据当前用户所拥有的权限进行动态设置其可用性的,也能够设置为可见或不可见。如,在上面的aspx界面代码中有以下这样一段代码:

<div id="toolbar">
	<%=base.BuildToolBarButtons()%>
</div>

上面这段代码就是我们绑定button的关键,绑定的button,通过后台服务代码来实现,依据当前登录用户所拥有的权限,动态设置其可用的功能,后台代码例如以下:

在StaffAdmin.js代码中,员工管理工作区我们首先要载入左側的组织机构列表(使用easy ui 的tree控件)与右側的员工列表(使用easy ui的datagrid控件)。

1.1、载入组织机构树列表。

$(‘#organizeTree‘).tree({
	lines: true,
	url: ‘handler/OrganizeAdminHander.ashx?action=treedata‘,
	animate: true,
	onLoadSuccess:function(node,data) {
		$(‘body‘).data(‘depData‘, data);
	},onClick: function(node) {
		var selectedId = node.id;
		$(‘#staffGird‘).datagrid(‘load‘, { organizeId: selectedId });
	}
});

1.2、载入所选组织机构下的员工列表。

载入员工列表,我们是通过选择对应的组织机构来进行载入,这样不至于一下子把全部的员工数据全部载入进来,影响页面的载入效率。选择一个组织机构节点,应该能够载入当前所选节点及其子节点所拥有的员工列表才对。当然,这也能够依据客户要求进行对应的调整,详细实需求而定。我们要载入所选组织机构下的员工列表,就须要绑定组织机构(Tree控件)的onClick事件或onSelect事件都能够,这儿我们使用onClick事件,事件使用事比例如以下:

$(‘#organizeTree‘).tree({
	onClick: function(node){
		alert(node.text);  // alert node text property when clicked
	}
});

在我们的组织机构事中,我们通过单击对应节点,载入对应的员工数据,代码例如以下:

onClick: function(node) {
		var selectedId = node.id;
		$(‘#staffGird‘).datagrid(‘load‘, { organizeId: selectedId });
}

绑定员工列表的代码例如以下:

$(‘#staffGird‘).datagrid({
	url: "handler/StaffAdminHandler.ashx",
	title: "员工(职员)列表",
	loadMsg: "正在载入员工(职员)数据,请稍等...",
	width: size.width,
	height: size.height,
	idField: ‘Id‘,
	singleSelect: true,
	striped: true,
	rownumbers: true,
	columns: [[
			{ title: ‘主键‘, field: ‘Id‘, hidden: true },
			{ title: ‘编号‘, field: ‘Code‘, width: 100 },
			{ title: ‘姓名‘, field: ‘RealName‘, width: 100 },
			{ title: ‘性别‘, field: ‘Gender‘, width: 35, align: ‘center‘ },
			{ title: ‘出生日期‘, field: ‘Birthday‘, align: "center", width: 90 },
			{ title: ‘手机号码‘, field: ‘Mobile‘, width: 120 },
			{ title: ‘办公电话‘, field: ‘OfficePhone‘, width: 120 },
			{ title: ‘邮箱地址‘, field: ‘Email‘, width: 150 },
			{ title: ‘有效‘, field: ‘Enabled‘, width: 50, align: ‘center‘, formatter: imgcheckbox },
			{ title: ‘描写叙述‘, field: ‘Description‘, width: 260 },
			{ title: ‘UserId‘, field: ‘UserId‘, hidden: true }
		]],
	rowStyler: function (index, row, css) {
		if (row.UserId != "") {
			return ‘font-weight:bold;‘;
		}
	},
	onLoadSuccess: function (data) {
		if (data.rows.length > 0) {
			$(‘#staffGird‘).datagrid("selectRow", 0);
		}
	}
});

在上面的列绑定代码中,我们有一个字段“有效”列,能够看到依据当前员工有效性,绑定了不同的图标,这儿使用了datagrid列的表格转换函数“formatter”。对于的imgcheckbox代码例如以下:

var imgcheckbox = function (cellvalue, options, rowObject) {
    return cellvalue ? ‘<img src="/css/icon/ok.png" alt="正常" title="正常" />‘ : ‘<img src="/css/icon/stop.png" alt="禁用" title="禁用" />‘;
};

上面的代码,我们就完毕了员工管理主页面的载入绑定。以下我们来看一下,增删改相关UI逻辑代码。

1.3 新增员工信息

新增员工(职员)界面例如以下:

因为员工数据列信息较多,我们採用了easyUI Tabs进行布局,使得整个界面比較清晰整洁。同一时候还使用了combobox、datebox、validatebox等UI控件,例如以下所看到的:

详细的控件用法能够查看文章结尾提供的对应资源。我们来看一下,怎样绑定combobox控件,因为我们这儿有非常多combobox控件的绑定都是提供了RDIFramework.NET框架的数据字典部分,因此绑定函数做成一个公共的比較好,这样方便调用。这些绑定都是在载入界面前进行的页面初始化操作,代码例如以下:

 initData: function (organizeId) {
	top.$(‘#txt_Education,#txt_Degree,#txt_Title,#txt_TitleLevel,#txt_WorkingProperty,#txt_Party,#txt_Gender‘).combobox({ panelHeight: ‘auto‘ });
	top.$(‘#txt_Birthday,#txt_TitleDate,#txt_WorkingDate,#txt_DimissionDate,#txt_JoinInDate‘).datebox({
		formatter: function (date) {
			return date.getFullYear() + ‘-‘ + (date.getMonth() + 1) + ‘-‘ + date.getDate();
		},
		arser: function (date) {
			return new Date(Date.parse(date.replace(/-/g, "/")));
		}
	});

	var _organizeId = organizeId || 0;
	top.$(‘#txt_OrganizeId‘).combotree({
		data: organizeTree.data(),
		valueField: ‘id‘,
		textField: ‘text‘,
		value: _organizeId
	});
	//绑定各数据字典
	pubMethod.bindCategory(‘txt_Gender‘, ‘Gender‘);
	pubMethod.bindCategory(‘txt_Education‘, ‘Education‘);
	pubMethod.bindCategory(‘txt_WorkingProperty‘, ‘WorkingProperty‘);
	pubMethod.bindCategory(‘txt_Degree‘, ‘Degree‘);
	pubMethod.bindCategory(‘txt_Gender‘, ‘Gender‘);
	pubMethod.bindCategory(‘txt_Title‘, ‘Title‘);
	pubMethod.bindCategory(‘txt_TitleLevel‘, ‘TitleLevel‘);
	pubMethod.bindCategory(‘txt_Nationality‘, ‘Nationality‘);
	pubMethod.bindCategory(‘txt_Party‘, ‘PoliticalStatus‘)
	top.$(‘#staffTab‘).tabs({
		onSelect: function () {
			top.$(‘.validatebox-tip‘).remove();
		}
	});
	top.$(‘#txt_passSalt‘).val(randomString());

}

绑定数据字典的代码例如以下:

//公共方法
var pubMethod = {
    bindCategory: function (categoryControl,categoryCode) {
        if (categoryControl == ‘‘|| categoryCode == ‘‘)
        {
            return;
        }

        top.$(‘#‘+ categoryControl).combobox({
            url: ‘Modules/handler/DataItemAdminHandler.ashx?action=GetCategory&categorycode=‘ + categoryCode,
            method: ‘get‘,
            valueField: ‘ItemValue‘,
            textField: ‘ItemName‘,
            editable: false,
            panelHeight: ‘auto‘
        });
    }
}

新增员工的代码例如以下:

//公共变量
var actionUrl = ‘handler/StaffAdminHandler.ashx‘;
var formUrl = "Modules/html/StaffForm.htm";

AddStaff: function () { //添加员工(职员)
	if ($(this).linkbutton(‘options‘).disabled == true) {
		return;
	}
	//功能代码逻辑...
	var addDialog = top.$.hDialog({
		href: formUrl + ‘?v=‘ + Math.random(),
		width: 680,
		height: 500,
		title: ‘新增员工(职员)‘,
		iconCls: ‘icon-vcard_add‘,
		onLoad: function () {
			var dep = $(‘#organizeTree‘).tree(‘getSelected‘);
			var depID = 0;
			if (dep) {
				depID = dep.id || 0;
			};
			top.$(‘#chk_Enabled‘).attr("checked", true);
			//假设左側有选中组织机构,则加入的时候,部门默认选中
			StaffAdminMethod.initData(depID);
		},
		closed: false,
		submit: function () {
			var tab = top.$(‘#staffTab‘).tabs(‘getSelected‘);
			var index = top.$(‘#staffTab‘).tabs(‘getTabIndex‘, tab);
			if (top.$(‘#uiform‘).form(‘validate‘)) {
				//var query = createParam(‘add‘, 0) + ‘&roles=‘ + top.$(‘#txt_role‘).combo(‘getValues‘);
				var vOrganizeId = top.$(‘#txt_OrganizeId‘).combobox(‘getValue‘);
				var query = ‘action=AddStaff&vOrganizeId=‘ + vOrganizeId + ‘&‘ + top.$(‘#uiform‘).serialize();

				$.ajaxjson(actionUrl, query, function (d) {
					if (d.Success) {
						msg.ok(‘加入成功‘);
						mygrid.reload();
						addDialog.dialog(‘close‘);
					} else {
						if (d.Data == -2) {
							msg.error(‘username已存在,请更改username。‘);
							if (index > 0)
								top.$(‘#staffTab‘).tabs(‘select‘, 0);
							top.$(‘#txt_username‘).select();
						} else {
							MessageOrRedirect(d);
						}
					}
				});
			} else {
				if (index > 0)
					top.$(‘#staffTab‘).tabs(‘select‘, 0);
			}
		}
	});
}

改动界面代码与添加的代码相似,仅仅只是改动界面在弹出时,要绑定当前改动的数据,绑定方法有非常多种,如:通过用户选择的当前用户datagrid当前行返回,这样的对于字段列不多时比較适合,但假设字段比較多, 我们不可能把全部字段都载入到界面上来,一般仅仅是显示一些比較经常使用的字段给用户,这时我们能够通过当前所选的行的主键值或唯一性来得到待改动的数据进行绑定,我们这儿的员工编辑界面就是採用的后一种方式,代码例如以下所看到的:

var parm = ‘action=GetEntity&KeyId=‘ + row.Id;
$.ajaxjson(actionUrl, parm, function (data) {
	if (data) {
		//OrganizeId
		top.$(‘#txt_Code‘).val(data.Code);
		top.$(‘#txt_RealName‘).val(data.RealName);
		top.$(‘#txt_Birthday‘).datebox(‘setValue‘, data.Birthday);
		top.$(‘#txt_Gender‘).combobox(‘setValue‘, data.Gender);
		top.$(‘#txt_Age‘).val(data.Age);
		top.$(‘#txt_Major‘).val(data.Major);
		top.$(‘#txt_School‘).val(data.School);
		top.$(‘#txt_Education‘).combobox(‘setValue‘, data.Education);
		top.$(‘#txt_Degree‘).combobox(‘setValue‘, data.Degree);
		top.$(‘#txt_Title‘).combobox(‘setValue‘, data.Title);
		top.$(‘#txt_TitleLevel‘).combobox(‘setValue‘, data.TitleLevel);
		top.$(‘#txt_TitleDate‘).datebox(‘setValue‘, data.TitleDate);
		/*省略部分代码...*/
		top.$(‘#chk_Enabled‘).attr(‘checked‘,data.Enabled == "1");
		top.$(‘#txt_Description‘).val(data.Description);
	}
});

改动后,单击确定,就可以保存当前改动的数据,例如以下所看到的:

if (top.$(‘#uiform‘).validate().form()) {
	var vOrganizeId = top.$(‘#txt_OrganizeId‘).combobox(‘getValue‘);
	var query = ‘action=EditStaff&vOrganizeId=‘ + vOrganizeId + ‘&KeyId=‘ + row.Id + ‘&‘ + top.$(‘#uiform‘).serialize();
	$.ajaxjson(actionUrl, query, function (d) {
		if (d.Success) {
			msg.ok(d.Message);
			editDailog.dialog(‘close‘);
			mygrid.reload();
		} else {
			MessageOrRedirect(d);
		}
	});
}

1.4 删除所选员工

对于须要删除的员工数据,我们能够对其进行删除(框架中的删除全是逻辑删除,即打删除标志),当前,删除前提示一下用户,这样比較友好一些,例如以下:



使用Jquery+EasyUI进行框架项目开发案例解说之中的一个---员工管理源代码分享

时间: 2024-12-06 16:02:30

使用Jquery+EasyUI进行框架项目开发案例解说之中的一个---员工管理源代码分享的相关文章

使用Jquery+EasyUI 进行框架项目开发案例讲解之五 模块(菜单)管理源码分享

http://www.cnblogs.com/huyong/p/3454012.html 使用Jquery+EasyUI 进行框架项目开发案例讲解之五  模块(菜单)管理源码分享    在上四篇文章  <使用Jquery+EasyUI进行框架项目开发案例讲解之一---员工管理源码分享>  <使用Jquery+EasyUI 进行框架项目开发案例讲解之二---用户管理源码分享>  <使用Jquery+EasyUI 进行框架项目开发案例讲解之三---角色管理源码分享> <

使用Jquery+EasyUI 进行框架项目开发案例讲解之四 组织机构管理源码分享

http://www.cnblogs.com/huyong/p/3404647.html 在上三篇文章  <使用Jquery+EasyUI进行框架项目开发案例讲解之一---员工管理源码分享> <使用Jquery+EasyUI 进行框架项目开发案例讲解之二---用户管理源码分享> <使用Jquery+EasyUI 进行框架项目开发案例讲解之三---角色管理源码分享> 我们分享了使用Jquery EasyUI来进行ASP.NET项目的开发的相关方法,每一个模块都有其共用性,

使用Jquery+EasyUI项目开发情况的框架是中评---员工管理源代码共享

使用Jquery+EasyUI 进行框架项目开发案例解说之中的一个 员工管理源代码分享 在開始解说之前,我们先来看一下什么是Jquery EasyUI?jQuery EasyUI是一组基于jQuery的UI插件集合,而jQuery EasyUI的目标就是帮助web开发人员更轻松的打造出功能丰富而且美观的UI界面.开发人员不须要编写复杂的javascript,也不须要对css样式有深入的了解.开发人员须要了解的仅仅有一些简单的html标签. jQuery EasyUI为我们提供了大多数UI控件的使

Java Web项目开发案例精粹-1-企业日常事务管理系统-源代码

一.功能简介 首页[index.jsp]: 1.显示最新消息,单击消息的链接,可以查看具体的消息内容及其回复和批复 2.如果员工已登陆,则显示其信息 消息列表[messageList.jsp]: 1.以分页的形式,显示消息列表,单击消息的链接,可以查看具体的消息内容和批复 发布新消息[publishNewMessage.jsp]: 1.发布新的消息 身份识别[login.jsp]: 1.登陆 二.使用到的javaweb知识及其它: 1.jsp 2.servlet 3.filter 4.jdbc

【小程序源码案例】微信小程序项目开发案例分享

作者:web小二本文标签: 微信小程序 小程序源码案例 小程序项目小程序的开发,并不是适合所有公司,我今天跟大家分享小程序方面的教程,主要是供大家学习使用.学习这种东西,有时候则是单纯的喜欢,没有任何目的,很单纯的为了好玩,记得很早之前学flash,没有想法,就是觉得好玩,纯娱乐爱好而已.到后来玩视频剪辑也是出于同样的原因,不图钱财名利,只是图自己个人爱好娱乐. 但是,学习,有时候则是需要有明确目的,特别是关系到自己吃饭问题的时候,你就需要非常有目的去学习,并且还需要制定好学习的计划与目标,希望

Android开发之手机拍照功能的实现(源代码分享)

Android系统里调用手机拍照的功能有两种方法一种直接调用手机自带的相机另一种就是使用自己做的拍照应用.比如Camera360 一款于各操作系统都有的的功能强大的手机摄影软件:能拍摄出不同风格,不同特效的照片,同时具有云服务和互联网分享功能,全球用户已经超过2.5亿.现在专门的开发一款手机摄影软件肯定没多大意义,已经比不过这些前辈了,我们只需学会如何调用手机自带的摄像机完成拍照并把照片获取过来,为用户提供上传头像,发表图文微博,传送图片的功能即可.完成上述的功能十分的简单,甚至不需要在清单文件

JQuery EasyUI学习框架

前言 前端技术,新项目的开发拟使用EasyUI框架(基于EasyUI丰富UI组件库),项目负责人的提示EasyUI分配给我这个任务.发展前,我需要这对于一个新手EasyUI框架学习一些基本的入门.记录在学习过程中的问题,在他们自己的问题和实事后. 关于EasyUI EasyUI框架式基于JQuery的,使用它帮助我们快捷的构建web网页. EasyUI框架是一个简单.易用.强大的轻量级web前端javascript框架.现阶段来说.在开发web项目时,前端的开发我们更喜欢使用JQuery取代原生

使用.NET MVC框架项目开发流程(项目开发流程)

MVC项目开发流程 整理需求,进行需求分析.项目设计. 整理数据项,建数据库做前期准备,并整理字典. 建立所需数据库表和视图和模型. 页面实现其初步功能(跳过逻辑后台代码),只是实现页面之间的跳转以及展示(预览审核使用). .............................................................................................................................. 审核通过……开始写数据

jQuery实现Checkbox中项目开发全选全不选的使用

1 <html> 2 <head> 3 <meta charset="utf-8"> 4 <title>Checkbox的练习</title> 5 <style type="text/css"> 6 *{margin:0px;padding:0px;} 7 table{width:100%;text-align:center;} 8 </style> 9 10 <script