版权声明:神毓逍遥 https://blog.csdn.net/qq_26347097/article/details/82659662
一.前情提要
接着之前的,新建一个控制器UserInfoController,并添加Index视图(前端框架用的easyUI)
以下是相关引用:
<link href="~/Content/themes/default/easyui.css" rel="stylesheet" />
<link href="~/Content/themes/icon.css" rel="stylesheet" />
<script src="~/Scripts/jquery-1.8.2.min.js"></script>
<script src="~/Scripts/jquery.easyui.min.js"></script>
<script src="~/Scripts/easyui-lang-zh_CN.js"></script>
<script src="~/Scripts/datapattern.js"></script>
<script src="~/Scripts/jquery.unobtrusive-ajax.min.js"></script>
<script src="~/Scripts/jquery.validate.min.js"></script>
二.UI层搭建
UserInfoController
using OA.BLL;
using OA.IBLL;
using OA.Model;
using OA.Model.EnumType;
using OA.Model.Search;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace OA.WebApp.Controllers
{
public class UserInfoController : Controller
{
//
// GET: /UserInfo/
IUserInfoService userInfoService = new UserInfoService();
public ActionResult Index()
{
return View();
}
#region 获取用户列表数据
public ActionResult GetUserInfoList()
{
int pageIndex = Request["page"] != null ? int.Parse(Request["page"]) : 1;
int pageSize = Request["rows"] != null ? int.Parse(Request["rows"]) : 5;
int totalCount=0;
//接收搜索条件
string userName=Request["name"];
string userRemark=Request["remark"];
//构造搜索条件
UserInfoSearch userInfoSearch = new UserInfoSearch
{
userName=userName,
userRemark=userRemark,
pageIndex=pageIndex,
pageSize=pageSize,
TotalCount=totalCount
};
short delFlag = (short)DeleteEnumType.Normarl;
//根据构建好的搜索条件完成搜索
var userInfoList = userInfoService.LoadSearchEntities(userInfoSearch,delFlag);
var temp = from u in userInfoList
select new
{
ID = u.ID,
UName = u.UName,
UPwd = u.UPwd,
Remark = u.Remark,
SubTime = u.SubTime
};
return Json(new { rows = temp, total = userInfoSearch.TotalCount });
}
#endregion
#region 删除用户数据
public ActionResult DeleteUserInfo()
{
string strId = Request["strId"];
string[] strIds = strId.Split(',');
List<int> list = new List<int>();
foreach (string id in strIds)
{
list.Add(Convert.ToInt32(id));
}
//将list集合存储的要删除的记录的编号传递到业务层
if (userInfoService.DeleteEntities(list))
{
return Content("ok");
}
else
{
return Content("no");
}
}
#endregion
#region 添加用户数据
public ActionResult AddUserInfo(UserInfo userInfo)
{
userInfo.DelFlag = 0;
userInfo.ModifiedOn = DateTime.Now;
userInfo.SubTime = DateTime.Now;
userInfoService.AddEntity(userInfo);
userInfoService.CurrentDBSession.Savechanges();
return Content("ok");
}
#endregion
#region 展示要修改的数据
public ActionResult ShowEditInfo()
{
int id = int.Parse(Request["id"]);
var userInfo = userInfoService.LoadEntities(u => u.ID == id).FirstOrDefault();
return Json(userInfo, JsonRequestBehavior.AllowGet);
}
#endregion
#region 完成用户数据的更新
public ActionResult EditUserInfo(UserInfo userInfo)
{
userInfo.ModifiedOn = DateTime.Now;
if (userInfoService.EditEntity(userInfo))
{
return Content("ok");
}
else
{
return Content("no");
}
}
#endregion
}
}
Index
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Index</title>
<link href="~/Content/themes/default/easyui.css" rel="stylesheet" />
<link href="~/Content/themes/icon.css" rel="stylesheet" />
<script src="~/Scripts/jquery-1.8.2.min.js"></script>
<script src="~/Scripts/jquery.easyui.min.js"></script>
<script src="~/Scripts/easyui-lang-zh_CN.js"></script>
<script src="~/Scripts/datapattern.js"></script>
<script src="~/Scripts/jquery.unobtrusive-ajax.min.js"></script>
<script src="~/Scripts/jquery.validate.min.js"></script>
<script type="text/javascript">
$(function () {
$("#addDiv").css("display", "none");
$("#editDiv").css("display", "none");
//给搜索按钮添加一个单击事件
$("#btnSearch").click(function () {
//获取用户输入的搜索数据
var pars = {
name: $("#txtSearchName").val(),
remark: $("#txtSearchReark").val()
};
//将获取的搜索数据发送到服务端
loadData(pars);
})
loadData();
});
//加载数据
function loadData(pars) {
$('#tt').datagrid({
url: '/UserInfo/GetUserInfoList',
title: '用户数据表格',
width: 700,
height: 400,
fitColumns: true, //列自适应
nowrap: false,
idField: 'ID',//主键列的列明
loadMsg: '正在加载用户的信息...',
pagination: true,//是否有分页
singleSelect: false,//是否单行选择
pageSize: 5,//页大小,一页多少条数据
pageNumber: 1,//当前页,默认的
pageList: [3, 6, 9],//[5],
queryParams: pars,//往后台传递参数
columns: [[//c.UserName, c.UserPass, c.Email, c.RegTime
{ field: 'ck', checkbox: true, align: 'left', width: 50 },
{ field: 'ID', title: '编号', width: 80 },
{ field: 'UName', title: '姓名', width: 120 },
{ field: 'UPwd', title: '密码', width: 120 },
{ field: 'Remark', title: '备注', width: 120 },
{
field: 'SubTime', title: '时间', width: 80, align: 'right',
formatter: function (value, row, index) {
return (eval(value.replace(/\/Date\((\d+)\)\//gi, "new Date($1)"))).pattern("yyyy-M-d");
}
}
]],
toolbar: [{
id: 'btnDelete',
text: '删除',
iconCls: 'icon-remove',
handler: function () {
deleteInfo();
}
}, {
id: 'btnAdd',
text: '添加',
iconCls: 'icon-add',
handler: function () {
addInfo();
}
}, {
id: 'btnEidt',
text: '编辑',
iconCls: 'icon-edit',
handler: function () {
showEditInfo();
}
}]
});
}
//删除数据
function deleteInfo() {
var rows = $('#tt').datagrid('getSelections');//获取所选择的行
if (!rows || rows.length == 0) {
//alert("请选择要修改的商品!");
$.messager.alert("提醒", "请选择要删除的记录!", "error");
return;
}
$.messager.confirm("提示", "确定要删除数据吗", function (r) {
if (r) {
//获取要删除的记录的ID值。
var rowsLength = rows.length;
var strId = "";
for (var i = 0; i < rowsLength; i++) {
strId = strId + rows[i].ID + ",";//1,2,3,
}
//去掉最后一个逗号.
strId = strId.substr(0, strId.length - 1);
//将获取的要删除的记录的ID值发送到服务端.
$.post("/UserInfo/DeleteUserInfo", { "strId": strId }, function (data) {
if (data == "ok") {
$('#tt').datagrid('reload');//加载表格不会跳到第一页。
//清除上次操作的历史的记录。
$('#tt').datagrid('clearSelections')
} else {
$.messager.alert("提醒", "删除记录失败!", "error");
}
});
}
});
}
//添加数据
function addInfo() {
$("#addDiv").css("display", "block");
$('#addDiv').dialog({
title: '添加用户数据',
width: 300,
height: 200,
collapsible: true,
maximizable: true,
resizable: true,
modal: true,
buttons: [{
text: 'Ok',
iconCls: 'icon-ok',
handler: function () {
//表单校验
validateInfo($("#addForm"));
$("#addForm").submit();//提交表单
}
}, {
text: 'Cancel',
handler: function () {
$('#addDiv').dialog('close');
}
}]
});
}
//完成添加后调用该方法
function afterAdd(data) {
if (data == "ok") {
$('#addDiv').dialog('close');
$('#tt').datagrid('reload');//加载表格不会跳到第一页。
$("#addForm input").val("");
}
}
//表单校验
function validateInfo(control) {
control.validate({//表示对哪个form表单进行校验,获取form标签的id属性的值
rules: {//表示验证规则
UName: "required",//表示对哪个表单元素进行校验,要写具体的表单元素的name属性的值
Remark: {
required: true
},
UPwd: {
required: true,
minlength: 5
},
Sort: {
required: true
}
},
messages: {
UName: "请输入用户名",
Remark: {
required: "请输入备注"
},
UPwd: {
required: "请输入密码",
minlength: jQuery.format("密码不能小于{0}个字 符")
},
Sort: {
required: "请输入排序"
}
}
});
}
//编辑数据
function showEditInfo() {
//判断一下用户是否选择了要修改的数据
var rows = $('#tt').datagrid('getSelections');///获取所选中行
if (rows.length != 1) {
$.messager.alert("提醒", "请选择要要修改的数据!", "error");
return;
}
//将要修改的数据查询出来,显示到文本框中
var id = rows[0].ID;
$.post("/UserInfo/ShowEditInfo", { "id": id }, function (data) {
$("#txtUName").val(data.UName);
$("#txtUPwd").val(data.UPwd);
$("#txtRemark").val(data.Remark);
$("#txtSort").val(data.Sort);
$("#txtSubTime").val(ChangeDateFormat(data.SubTime));
$("#txtDelFlag").val(data.DelFlag);
$("#txtId").val(data.ID);
$("#txtModifiedOn").val(ChangeDateFormat(data.ModifiedOn));
});
$("#editDiv").css("display", "block");
$('#editDiv').dialog({
title: '编辑用户数据',
width: 300,
height: 200,
collapsible: true,
maximizable: true,
resizable: true,
modal: true,
buttons: [{
text: 'Ok',
iconCls: 'icon-ok',
handler: function () {
//表单校验
validateInfo($("#editForm"));
$("#editForm").submit();//提交表单
}
}, {
text: 'Cancel',
handler: function () {
$('#editDiv').dialog('close');
}
}]
});
}
//更新以后调用该方法
function afterEdit(data) {
if (data == "ok") {
$('#editDiv').dialog('close');
$('#tt').datagrid('reload');//加载表格不会跳到第一页。
} else {
$.messager.alert("提醒", "修改数据失败!", "error");
}
}
//将序列化成json格式后日期(毫秒数)转成日期格式
function ChangeDateFormat(cellval) {
var date = new Date(parseInt(cellval.replace("/Date(", "").replace(")/", ""), 10));
var month = date.getMonth() + 1 < 10 ? "0" + (date.getMonth() + 1) : date.getMonth() + 1;
var currentDate = date.getDate() < 10 ? "0" + date.getDate() : date.getDate();
return date.getFullYear() + "-" + month + "-" + currentDate;
}
</script>
</head>
<body>
<div>
用户名:<input type="text" id="txtSearchName" />
备注:<input type="text" id="txtSearchReark" />
<a href="#" class="easyui-linkbutton" data-options="iconCls:'icon-search'" style="width:80px" id="btnSearch">Search</a>
<table id="tt" style="width: 700px;" title="标题,可以使用代码进行初始化,也可以使用这种属性的方式" iconcls="icon-edit"></table>
</div>
<!--添加数据-->
<div id="addDiv">
@using (Ajax.BeginForm("AddUserInfo", "UserInfo", new { }, new AjaxOptions() { HttpMethod = "post", OnSuccess = "afterAdd" }, new { id = "addForm" })
)
{
<table>
<tr><td>用户名</td><td><input type="text" name="UName" /></td></tr>
<tr><td>密码</td><td><input type="password" name="UPwd" /></td></tr>
<tr><td>备注</td><td><input type="text" name="Remark" /></td></tr>
<tr><td>排序</td><td><input type="text" name="Sort" /></td></tr>
</table>
}
</div>
<!--编辑数据-->
<div id="editDiv">
@using (Ajax.BeginForm("EditUserInfo", "UserInfo", new { }, new AjaxOptions() { HttpMethod = "post", OnSuccess = "afterEdit" }, new { id = "editForm" }))
{
<input type="hidden" name="ID" id="txtId" />
<input type="hidden" name="ModifiedOn" id="txtModifiedOn" />
<input type="hidden" name="SubTime" id="txtSubTime" />
<input type="hidden" name="DelFlag" id="txtDelFlag" />
<table>
<tr><td>用户名</td><td><input type="text" name="UName" id="txtUName" /></td></tr>
<tr><td>密码</td><td><input type="password" name="UPwd" id="txtUPwd" /></td></tr>
<tr><td>备注</td><td><input type="text" name="Remark" id="txtRemark" /></td></tr>
<tr><td>排序</td><td><input type="text" name="Sort" id="txtSort" /></td></tr>
</table>
}
</div>
</body>
</html>
三.业务层搭建(因为UserInfo有个批量删除,所以业务层需要编写自己特有的批量删除方法)
IBLL
using IDAL;
using OA.Model;
using OA.Model.Search;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace OA.IBLL
{
public interface IUserInfoService :IBaseService<UserInfo>
{
bool DeleteEntities(List<int> list);
IQueryable<UserInfo> LoadSearchEntities(UserInfoSearch userInfoSearch,short delFlag);
}
}
BLL
using IDAL;
using OA.IBLL;
using OA.Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace OA.BLL
{
public class UserInfoService : BaseService<UserInfo>, IUserInfoService
{
public override void SetCurrentDal()
{
CurrentDal = this.CurrentDBSession.UserInfoDal;
}
/// <summary>
/// 批量删除多条用户数据
/// </summary>
/// <param name="list"></param>
/// <returns></returns>
public bool DeleteEntities(List<int> list)
{
var userInfoLis = this.CurrentDBSession.UserInfoDal.LoadEntities(u => list.Contains(u.ID));
foreach (var userInfo in userInfoLis)
{
this.CurrentDBSession.UserInfoDal.DeleteEntity(userInfo);
}
return this.CurrentDBSession.Savechanges();
}
/// <summary>
/// 完成用户信息的搜索
/// </summary>
/// <param name="userInfoSearch"></param>
/// <returns></returns>
public IQueryable<UserInfo> LoadSearchEntities(Model.Search.UserInfoSearch userInfoSearch, short delFlag)
{
var temp = this.CurrentDBSession.UserInfoDal.LoadEntities(c => c.DelFlag == delFlag);
//根据用户名来搜索
if (!string.IsNullOrEmpty(userInfoSearch.userName))
{
temp = temp.Where<UserInfo>(u => u.UName.Contains(userInfoSearch.userName));
}
//根据备注来搜索
if (!string.IsNullOrEmpty(userInfoSearch.userRemark))
{
temp = temp.Where<UserInfo>(u => u.Remark.Contains(userInfoSearch.userRemark));
}
userInfoSearch.TotalCount = temp.Count();
return temp.OrderBy<UserInfo, int>(u => u.ID).Skip<UserInfo>((userInfoSearch.pageIndex - 1) * userInfoSearch.pageSize)
.Take<UserInfo>(userInfoSearch.pageSize);
}
}
}