我在这里给大家道个歉,楼主因为毕业季拍毕业照 找工作事情比较多,所以博客实战给拉下来了,对不起大家,这只是暂时的拉下,楼主是不会放弃的。
在上一节中我们是完成了博客的回台部分,现在我需要在前台拿到回台传来的数据并且给以显示出来。 不知道大家还记得我们在博客类别管理里面,easyui的datagrid用法吗?在这里我们继续使用datagrid 只不过多了一个模糊查询。 接下来给大家看看实际效果
博客分页显示
我们主要显示的有博客的 标题 发布时间 博客类型 然后工具栏多了一个关于博客标题的模糊查询
然后同样的导入我们的公共头文件
<%@include file="./common/head.jspf"%>
这样我们easyui所用到的一些js或者css就载入进来了
接下我们就要完成这个分页的布局,根据easyui的api手册提供的datagrid的几种使用形式,我们选择html+js的那种方式
<table id="dg" title="博客管理" class="easyui-datagrid" fitColumns="true" pagination="true"
url="${blog}/admin/blog/listBlog.do" toolbar="#tb">
<thead>
<tr>
<th field="cb" checkbox="true" align="center"></th>
<th field="id" width="20" align="center">编号</th>
<th field="title" width="200">标题</th>
<th field="releaseDate" width="100" align="center">发布日期</th>
<th field="blogType" width="100" align="center" formatter="formatBlogType">博客类型</th>
</tr>
</thead>
</table>
<div id="tb">
<div>
标题 <input type="text" id="s_title" size="20" onkeydown="if(event.keyCode==13) searchBlog()">
<a href="javascript:searchBlog()" class="easyui-linkbutton" iconCls="icon-search" plain="true">搜索</a>
<a href="javascript:deleteBlog()" class="easyui-linkbutton" iconCls="icon-remove" plain="true">删除</a>
<a href="javascript:openBlogModifyTab()" class="easyui-linkbutton" iconCls="icon-edit" plain="true">修改</a>
<a href="javascript:reload()" class="easyui-linkbutton" iconCls="icon-reload" plain="true">刷新</a>
</div>
</div>
大家可能对easyui的部分属性不懂,这里我简单解释一下
1、在table中table 就是整个用与显示的 分页数据的一个便签
**2、在id=tb的div中 这一块就是分页显示上方的工具条 ** 这里就没有什么好解释的了 就是一个div里面一个input 四个a标签分别对应 模糊查询输入框 模糊查询按钮 删除 修改 刷新
从上面可以看出,我们需要实现6个js方法 下面我逐个解释一下每一个方法的作用
方法都介绍完了 接下来就是具体编码的实现了
/**
* 格式化博客类型获取其类型名称
* @param val
* @param row
* @returns {string}
*/
function formatBlogType(val, row) {
return val.typeName;
}
/**
* 按照title查询博客信息
*/
function searchBlog() {
$("#dg").datagrid("load", {
"title":$("#s_title").val()
});
}
/**
* 删除博客信息
* 可以多选
*/
function deleteBlog() {
//获取选中要删除的行
var selectedRows = $("#dg").datagrid("getSelections");
//判断是否有选择的行
if(selectedRows.length == 0) {
$.messager.alert("系统提示", "请选择要删除的数据");
return;
}
//定义选中 选中id数组
var idsStr = [];
//循环遍历将选中行的id push进入数组
for(var i = 0; i < selectedRows.length; i++) {
idsStr.push(selectedRows[i].id);
}
//将数组安装,连接成字符串
var ids = idsStr.join(","); //1,2,3,4
//提示是否确认删除
$.messager.confirm("系统提示", "<font color=red>您确定要删除选中的"+selectedRows.length+"条数据么?</font>", function(r) {
//确定删除
if(r) {
//发送ajax请求
$.post("${blog}/admin/blog/delete.do",
{ids: ids}, function(result){
if(result.success) {
$.messager.alert("系统提示", "数据删除成功!");
$("#dg").datagrid("reload");
} else {
$.messager.alert("系统提示", "数据删除失败!");
}
}, "json");
}
});
}
/**
*打开修改博客界面
*/
function openBlogModifyTab() {
}
/**
* 重新载入数据
*/
function reload() {
$("#dg").datagrid("reload");
}
在这里我简单讲解一下
formatBlogType(val,row) val 对应属性的值 row对应行的信息
datagrid比较常用也比较复杂,它有其中有load,reload这三个方法,它们都有相同的功能,都是加载数据的,但又有区别。
load方法,比如我已经定义一个datagrid的id为dg,那这个方法的使用方式为 $(“#dg”).datagrid(“load”,{ }); 它的参数为一个json对象,里面写的是你要传输的参数的键值对,调用这个方法来加载数据的时候,它传给后台的分页信息是从第一页开始的。 所以我们模糊查询的时候需要把数值作为查询参数给传递过去 reload方法,使用方式也跟load的一样 $(“#grid”).datagrid(“reload”,{ }); 看它的名字应该就可以知道它的做用了,没错,它跟load一样有加载数据功能,也一样的传参数,但它传给后台的分布信息是当前的页码,就是实现刷新当前页的功能。
image.png
image.png
在这一节我们完成了博客的分页显示模糊查询等功能,但是其中的修改博客以及写博客我们放到了下一节,所以修改博客那个方法我们暂时也没有实现。