首先给你的要操作的模块index自定义属性,从1开始依次叠加,如下所示
<li class="sidebar-item" id="" index="1">
<a class="sidebar-link has-arrow waves-effect waves-dark" href="javascript:void(0)">
<i class="icon-Car-Wheel"></i><span class="hide-menu">我的首页 </span></a></li>
<li class="sidebar-item" id="" index="2">
<a class="sidebar-link has-arrow waves-effect waves-dark" href="javascript:void(0)">
<i class="icon-Mailbox-Empty"></i><span class="hide-menu">我的工作</span></a></li>
//页面加载事件
$(function () {
然后获取到上面的模块
var sidebarnav=document.getElementById("sidebarnav").getElementsByTagName("li");
再for循环一遍它的长度
for (var i = 0; i <sidebarnav.length; i++) {
给上面模块点击事件
sidebarnav[i].onclick=function(){
点击上面的模块获取到index自定义属性
var index=this.getAttribute("index");
然后post提交,到控制器写方法,Main是控制器名,RiZhi是方法名,然后回填到页面
$.post("/Main/RiZhi",
EmployeeID是操作人的id
{Index:index,EmployeeID:EmployeeID},
function(date){
return;
});
}
}
});
控制器方法如下,S_SysLog是日志表,记录什么人使用的什么模块和时间,如下是我的关系表
权限表就是放操作模块的表
public ActionResult RiZhi(string Index,int EmployeeID)
{
try
{
New一个S_SysLog日志表
S_SysLog SysLog = new S_SysLog();
将接受到的index字符串转为int类型
int Indexa = Convert.ToInt32(Index);
接受页面传送的EmployeeID
SysLog.EmployeeID = EmployeeID;
将上面的int类型记录到模块上
SysLog.JurisdictionID = Indexa;
点击模块记录当前的时间
SysLog.UseTime = DateTime.Now.ToString(“yyyy-MM-dd HH:mm:ss”);
新增保存到数据库
myModel.S_SysLog.Add(SysLog);
myModel.SaveChanges();
如下图所示,是存到数据库日志表的数据
}
catch (Exception)
{
}
return Json("", JsonRequestBehavior.AllowGet);
}
然后再连表查询模块表和日志表获取到所有的记录,如下
public ActionResult SelectSR(int EmployeeID)
{
声明CountSr存放所有的记录
var CountSr = (from tbSysLog in myModel.S_SysLog
join tbJurisdiction in myModel.S_Jurisdiction on tbSysLog.JurisdictionID
equals tbJurisdiction.JurisdictionID
where tbSysLog.EmployeeIDEmployeeID
倒叙的排序
orderby tbSysLog.SysLogID descending
select tbJurisdiction.Jurisdiction).ToList();
将所有的记录返回到页面
return Json(CountSr, JsonRequestBehavior.AllowGet);
}
然后到页面上给一个盒子来显示最近的操作,如下图所示,你需要显示几个操作就在里面添加多少个li标签再到li标签里面放一个盒子
再到下面写js代码,如下
$(function () {
SelectSR是上面写的连表查询方法名
$.post(“SelectSR”, {EmployeeID:EmployeeID},
function(Data) {
输出一下数据获取到数据的长度
console.log(Data);
如果数据长度等于0,那么隐藏
if (Data.length0 ) {
var Zjcz=document.getElementById(“ZJCZ”);
Zjcz.style.display=“none”;
}
For循环一遍,因为我这里给的10个盒子,所以如果i等于十,那么返回数据,
for (var i = 0; i < Data.length; i++) {
if (i==10) {
return;
}
if(i<=9){
如果i小于等于9,声明zjcz获取到ZJCZ里面的div
var zjcz=document.getElementById(“ZJCZ”).getElementsByTagName(“div”);
再for循环一遍,j小于zjcz的长度
for (var j = 0; j <zjcz.length; j++) {
如果data数据不等于undefined,那么数据返回到页面,如果数据等于undefined那么隐藏它的div,这里按照上面给的div数量来写,因为我上面给的是个div,那么我这里就是0到9依次往下面写
if (Data[0]!=undefined) {
zjcz[0].innerHTML=Data[0];
}else {
zjcz[0].style.display=“none”;
}
……
if (Data[9]!=undefined) {
zjcz[9].innerHTML=Data[9];
}else {
zjcz[9].style.display=“none”;
}
}
}
}
})
});
下面运行演示一下,如图这是没有操作时候的样子,左边是操作模块,右边是显示到页面的盒子
下面我点击五条,如下图所示,那么他就只显示五条数据
现在我点击十条以上,如下图所示,它只显示最近的十条,这样最近操作到这里就完成了