edit类型 layui_使用LayUI操作数据表格 – 井传红 – 博客园

这篇博客介绍了如何使用LayUI库在数据表格中添加搜索、分页和编辑功能。通过添加HTML和JS代码,实现了搜索关键字、分页自动传递参数以及查看、编辑和删除操作。表格数据通过GET请求获取,返回JSON格式。同时,博客还展示了完整的页面代码和Servlet处理方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

接着 上一篇 继续完善我们的demo,这次我们加一个搜索按钮

搜索

在table标签的上方,加入这样一组html

搜索商户:

搜索

在js加入初始化代码和定义加载方法

layui.use('table', function(){

var table = layui.table;

//方法级渲染

table.render({

elem: '#LAY_table_user'

,url: 'UVServlet'

,cols: [[

{checkbox: true, fixed: true}

,{field:'id', title: 'ID', width:80, sort: true, fixed: true}

,{field:'aid', title: '商户', width:80, sort: true}

,{field:'uv', title: '访问量', width:80, sort: true,edit:true}

,{field:'date', title: '日期', width:180}

,{field:'datatype', title: '日期类型', width:100}

]]

,id: 'testReload'

,page: true

,height: 600

});

var $ = layui.$, active = {

reload: function(){

var demoReload = $('#demoReload');

table.reload('testReload', {

where: {

keyword: demoReload.val()

}

});

}

};

)};

绑定click点击事件

$('.demoTable .layui-btn').on('click', function(){

var type = $(this).data('type');

active[type] ? active[type].call(this) : '';

});

此时点击查询按钮,会将keyword这个关键字传到后端,接下来就是自己处理查询关键字业务了。

到目前为止,搜索也有了,分页也有了,对了,分页会自动传到后端page,limit2个值到后台,相当于(pageindex,pagesize)

预览下效果

看看请求的参数

从参数可以看出,数据表格默认是get请求,返回的数据结构是这样的

给表格增加操作按钮

首先加入一组html,放到table标签下面,代码如下

查看

编辑

删除

然后在js中指定工具条

//方法级渲染

table.render({

elem: '#LAY_table_user'

,url: 'UVServlet'

,cols: [[

{checkbox: true, fixed: true}

,{field:'id', title: 'ID', width:80, sort: true, fixed: true}

,{field:'aid', title: '商户', width:80, sort: true}

,{field:'uv', title: '访问量', width:80, sort: true,edit:true}

,{field:'date', title: '日期', width:180}

,{field:'datatype', title: '日期类型', width:100}

,{field:'right', title: '操作', width:177,toolbar:"#barDemo"}

]]

,id: 'testReload'

,page: true

,height: 600

});

界面效果如下

接下来需要给按钮绑定事件,来完成功能操作

在LayUI里面,一般采用table.on()来表示事件,例如这个

//监听表格复选框选择

table.on('checkbox(useruv)', function(obj){

console.log(obj)

});

我勾选一个复选框,就打印一个日志

加入以下js代码,来绑定工具条事件

//监听工具条

table.on('tool(demo)', function(obj){

var data = obj.data;

if(obj.event === 'detail'){

layer.msg('ID:'+ data.id + ' 的查看操作');

} else if(obj.event === 'del'){

layer.confirm('真的删除行么', function(index){

obj.del();

layer.close(index);

});

} else if(obj.event === 'edit'){

layer.alert('编辑行:
'+ JSON.stringify(data))

}

});

这时候,点击按钮就会有反应了。这里说明一下

接下来就是把数据传递到后端,直接将js改造如下

 View Code

预览效果

至此,数据表格的绑定、展示、分页、搜索、查看、编辑、删除、排序 功能都已经完成,是不是很简单?

此处粘贴出完整的页面代码

layui

搜索商户:

搜索

查看

编辑

删除

layui.use('table', function(){

var table = layui.table;

//方法级渲染

table.render({

elem: '#LAY_table_user'

,url: 'UVServlet'

,cols: [[

{checkbox: true, fixed: true}

,{field:'id', title: 'ID', width:80, sort: true, fixed: true}

,{field:'aid', title: '商户', width:80, sort: true}

,{field:'uv', title: '访问量', width:80, sort: true,edit:true}

,{field:'date', title: '日期', width:180}

,{field:'datatype', title: '日期类型', width:100}

,{field:'right', title: '操作', width:177,toolbar:"#barDemo"}

]]

,id: 'testReload'

,page: true

,height: 600

});

var $ = layui.$, active = {

reload: function(){

var demoReload = $('#demoReload');

table.reload('testReload', {

where: {

keyword: demoReload.val()

}

});

}

};

//监听表格复选框选择

table.on('checkbox(useruv)', function(obj){

console.log(obj)

});

//监听工具条

table.on('tool(useruv)', function(obj){

var data = obj.data;

if(obj.event === 'detail'){

layer.msg('ID:'+ data.id + ' 的查看操作');

} else if(obj.event === 'del'){

layer.confirm('真的删除行么', function(index){

console.log(data);

$.ajax({

url: "UVServlet",

type: "POST",

data:{"uvid":data.id,"memthodname":"deleteuv","aid":data.aid},

dataType: "json",

success: function(data){

if(data.state==1){

obj.del();

layer.close(index);

layer.msg("删除成功", {icon: 6});

}else{

layer.msg("删除失败", {icon: 5});

}

}

});

});

} else if(obj.event === 'edit'){

layer.prompt({

formType: 2

,title: '修改 ID 为 ['+ data.id +'] 的访问量'

,value: data.uv

}, function(value, index){

EidtUv(data,value,index,obj);

});

}

});

$('.demoTable .layui-btn').on('click', function(){

var type = $(this).data('type');

active[type] ? active[type].call(this) : '';

});

function EidtUv(data,value,index,obj) {

$.ajax({

url: "UVServlet",

type: "POST",

data:{"uvid":data.id,"memthodname":"edituv","aid":data.aid,"uv":value},

dataType: "json",

success: function(data){

if(data.state==1){

layer.close(index);

//同步更新表格和缓存对应的值

obj.update({

uv: value

});

layer.msg("修改成功", {icon: 6});

}else{

layer.msg("修改失败", {icon: 5});

}

}

});

}

});

应大家要求,将servlet代码贴出来,其中用到了json.jar

import com.weimob.models.Pagination;

import com.weimob.models.QueryResult;

import com.weimob.models.UvData;

import com.weimob.uv.dao.WeiMobUvDao;

import org.json.JSONArray;

import org.json.JSONObject;

import javax.servlet.RequestDispatcher;

import javax.servlet.ServletException;

import javax.servlet.annotation.WebServlet;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import java.io.IOException;

import java.util.ArrayList;

import java.util.List;

import java.util.Map;

@WebServlet(name="UVServlet",

urlPatterns={"/WebApp/UVServlet"},

loadOnStartup=0)

public class UVServlet extends HttpServlet {

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

doGet(request, response);

}

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

String memthodname = request.getParameter("memthodname");

if(memthodname!=null){

switch (memthodname){

case "queryList":

break;

case "deleteuv":

deleteUv(request,response);

break;

case "edituv":

edituv(request,response);

break;

default:

queryList(request, response);

}

}else {

queryList(request, response);

}

}

private void queryList(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException {

String str = request.getParameter("keyword");

String pindex = request.getParameter("page");

String limit = request.getParameter("limit");

response.setStatus(200);

int aid = 0;

int pagesize=15;

int index = 0;

int total = 0;

if (str != null && str.length() > 0) {

aid = Integer.valueOf(str);

}

if (pindex != null) {

index = Integer.parseInt(pindex);

pagesize=Integer.parseInt(limit);

}

WeiMobUvDao dao = new WeiMobUvDao();

StringBuffer sbtotal = new StringBuffer();

sbtotal.append("SELECT count(1) as count FROM WpMulShopDataUv_1 ");

if (aid > 0) {

sbtotal.append(" where aid=");

sbtotal.append(aid);

}

total = dao.GetCount(sbtotal.toString());

if (total > 0) {

StringBuffer sb = new StringBuffer();

sb.append("SELECT Id,AId,Uv,DataType,Date FROM WpMulShopDataUv_1 ");

if (aid > 0) {

sb.append(" where aid=");

sb.append(aid);

}

if (total > pagesize) {

sb.append(" Limit ");

int start = (index - 1) * pagesize;

if (start < 0) {

start = 0;

}

sb.append(start);

sb.append(",");

sb.append(pagesize);

}

List list = dao.QueryUv(sb.toString());

QueryResult result = new QueryResult(total, list);

String jsonstr= ConvertListToPageJson(list,total);

System.out.println(jsonstr);

request.setAttribute("result", jsonstr);

response.getWriter().print(jsonstr);

}else {

QueryResult result = new QueryResult(total, null);

JSONObject obj = new JSONObject(result);

response.getWriter().print(obj);

}

}

private void deleteUv(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException {

String str = request.getParameter("aid");

String uvid = request.getParameter("uvid");

String limit = request.getParameter("limit");

response.setStatus(200);

int aid = 0;

int uv_id=0;

int index = 0;

int total = 0;

if (str != null && str.length() > 0) {

aid = Integer.valueOf(str);

}

if (uvid != null) {

uv_id = Integer.parseInt(uvid);

}

if(uv_id<=0){

response.getWriter().print("参数无效");

}

WeiMobUvDao dao = new WeiMobUvDao();

List list=new ArrayList();

list.add(uv_id);

int res_count= dao.DeleteByIds(aid,list);

JSONObject jsonObject = new JSONObject();

jsonObject.put("state",res_count>0?true:false);

jsonObject.put("code",0);

jsonObject.put("msg","null");

response.getWriter().print(jsonObject);

}

private void edituv(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException {

String str = request.getParameter("aid");

String uvid = request.getParameter("uvid");

String uvstr = request.getParameter("uv");

response.setStatus(200);

JSONObject jsonObject = new JSONObject();

int aid = 0;

int uv_id=0;

int uv = 0;

if (str != null && str.length() > 0) {

aid = Integer.valueOf(str);

}

if (uvid != null) {

uv_id = Integer.parseInt(uvid);

uv= Integer.parseInt(uvstr);

}

if(uv_id<=0){

response.setStatus(500);

jsonObject.put("state",-1);

jsonObject.put("msg","参数无效");

response.getWriter().print(jsonObject);

}

if(uv<0){

response.setStatus(500);

jsonObject.put("state",-1);

jsonObject.put("msg","参数无效");

response.getWriter().print(jsonObject);

}

WeiMobUvDao dao = new WeiMobUvDao();

List list=new ArrayList();

list.add(uv_id);

UvData res= dao.getByIds(aid,uv_id);

if(res==null){

response.setStatus(500);

jsonObject.put("state",-1);

jsonObject.put("msg","参数无效,对象不存在");

response.getWriter().print(jsonObject);

return;

}

int res_count= dao.modifyEntity(res);

jsonObject.put("state",res_count>0?true:false);

jsonObject.put("code",0);

jsonObject.put("msg","null");

response.getWriter().print(jsonObject);

}

public String ConvertListToPageJson(List> list, int countList) {

// 新建一个json数组

JSONArray jsonArray = new JSONArray();

// 新建一个json对象

JSONObject jsonObject = null;

// 遍历泛型集合

for (Object object : list) {

jsonObject = new JSONObject(object);

jsonArray.put(jsonObject);

}

// 转换数据格式

String json = jsonArray.toString();

// 拼接字符串

StringBuffer sb = new StringBuffer();

sb.append("{\"count\":");

sb.append(countList);

sb.append(",\"code\":");

sb.append(0);

sb.append(",\"msg\":");

sb.append("null");

sb.append(",\"data\":");

sb.append(json);

sb.append("}");

String jsonString = sb.toString();

return jsonString;

}

}

不少同学不知道怎么绑定数据源,欢迎看我上一篇。表格数据源格式:http://www.layui.com/demo/table/user/?page=1&limit=30

总结:

LayUI为我们提供了强大丰富的类库组件,完善的文档,学习成本和开发成本相对低廉,具有快速,扁平化等优点。

关于数据表格的介绍就到这里。官方文档

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值