使用Spring+Struts2+Hibernate+EasyUI实现批量删除功能,以下是效果图片:
前端
批量删除JS:
function onDeleteBatch() {
<span style="white-space:pre"> </span>var rows = $("#sysloglist").datagrid('getSelections');//获取选中的行
if(rows.length==0){
$.messager.alert('提示','请选择所需删除的记录!');
return false;
}
var ids=[];
for (var i = 0; i < rows.length; i++) {
<span style="white-space:pre"> </span>var id=rows[i].id; //取出id值
<span style="white-space:pre"> </span>ids.push(id); //将id值放入数组中
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>var params = $.param({'ids':ids},true);
<span style="white-space:pre"> </span>var url = 'system/syslog_deleteBatch';
$.messager.confirm('提示', '确定所选记录删除?', function(r){
if(r){
$.ajax({
url : url,
data: params,
cache : false,
async : false,
type : "POST",
dataType : 'json',
success : function (result){
var msg = '';
if(result.success) {
msg = result.msg;
} else {
msg = '<span style="color: red;">' + result.msg + '</span>';
}
$.messager.show({
title:'提示',
msg:msg,
timeout:1500,
showType:'slide'
});
if(result.success) {
$("#sysloglist").datagrid('reload');
}
}
});
}
});
}
html页面:
<body class="easyui-layout" data-options="fit:true,border:false">
<div data-options="region:'center',title:'任务列表',fit:true" style="height:100%;background:#fafafa">
<table id="sysloglist" class="easyui-datagrid" style="height:100%;"
data-options="url:'system/syslog_grid.action',
border:false,
rownumbers:'true',
toolbar:'#tb',
pagination:true,
pageSize:'50',
pageList:[50,100,150],
fit:true,
view: detailview,
detailFormatter:detailFormatter">
<thead>
<tr>
<th data-options="field:'ck',checkbox:true"></th>
<th data-options="field:'log',width:300">日志</th>
<th data-options="field:'status',width:80,align:'center'">状态</th>
<th data-options="field:'createdate',width:180,align:'center',formatter: formatDate">创建日期</th>
<th data-options="field:'operator',width:120,align:'center',formatter: formatAction">操作</th>
</tr>
</thead>
</table>
<div id="tb">
<a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-remove" plain="true" οnclick="onDeleteBatch()">批量删除</a>
</div>
</div>
</body>
</html>
这里使用了easyui的拓展插件datagrid-detailview.js,当使用该插件时,在页面中就呈现如上图的效果,点击每条记录的“+”号会弹出自定义的信息。如只使用easyui的datagrid控件,只需去掉table的data-options的view和detailFormatter属性即可。
Action
public class SyslogAction extends BaseAction {
private SyslogServiceI syslogService;
private String[] ids;
public void deleteBatch() {
boolean success = syslogService.doDeleteBatch(ids);
Feekback back = new Feekback();
back.putSuccess(success);
back.putMsg(success?"批量删除成功!":"批量删除失败!");
this.write(back.toString());
}
//--------//
public SyslogServiceI getSyslogService() {
return syslogService;
}
public void setSyslogService(SyslogServiceI syslogService) {
this.syslogService = syslogService;
}
public String[] getIds() {
return ids;
}
public void setIds(String[] ids) {
this.ids = ids;
}
}
Service
public class SyslogServiceImpl implements SyslogServiceI {
private SyslogDAOI syslogDao;
public boolean doDeleteBatch(String[] ids) {
StringBuilder sb = new StringBuilder();
for(String id : ids) {
sb.append(id);
sb.append(",");
}
String strIds = sb.substring(0, sb.length() - 1);
String hql = "delete from Syslog l where l.id in (" + strIds + ")";
Map<String, Object> params = new HashMap<String, Object>();
params.put("ids", ids);
int r = syslogDao.executeHql(hql);
if(r != 0) {
return true;
}
return false;
}
//----//
public SyslogDAOI getSyslogDao() {
return syslogDao;
}
public void setSyslogDao(SyslogDAOI syslogDao) {
this.syslogDao = syslogDao;
}
}
DAO
@Override
public int executeHql(String hql) {
int result = -1;
try {
<span style="white-space:pre"> </span>Query q = this.getCurrentSession().createQuery(hql);
result = q.executeUpdate();
} catch(Exception e) {
e.printStackTrace();
}
return result;
}