SSM框架实现前台复选框选中数据,后台实现批量修改删除
前端页面
<table id="simple-table"
class="table table-striped table-bordered table-hover"
style="margin-top:5px;">
<thead>
<tr>
<th class="center" style="width:35px;"><label class="pos-rel"><input
type="checkbox" class="ace" id="zcheckbox" /><span class="lbl"></span>
</label></th>
<th class="center" style="width:50px;">序号</th>
<th class="center">租客姓名</th>
<th class="center">租客手机号</th>
<th class="center">意向房屋地址</th>
<th class="center">状态</th>
<th class="center">负责人编号</th>
<th class="center">负责人</th>
<th class="center">带客申请</th>
</tr>
</thead>
<tbody>
<!-- 开始循环 -->
<c:choose>
<c:when test="${not empty alist}">
<c:forEach items="${alist}" var="list" varStatus="vs">
<tr>
<c:if test="${list.state==1 }">
<td></td>
</c:if>
<c:if test="${list.state==0 }">
<td class='center' style="width: 30px;"><label><input
type='checkbox' name='ids' id="${list.id }"
value="${list.state }" class="ace" /><span class="lbl"></span>
</label>
</td>
</c:if>
<td class='center' style="width: 30px;">${vs.index+1}</td>
<td class="center">${list.name }</td>
<td class="center">${list.phone }</td>
<td class="center">${list.address }</td>
<c:if test="${list.state==0 }">
<td class="center">待分配</td>
</c:if>
<c:if test="${list.state==1 }">
<td class="center">已分配</td>
</c:if>
<td class="center">${list.user_id }</td>
<td class="center">${list.username }</td>
<td class="center"><c:if test="${list.state==0 }">
<a class="btn btn-xs btn-success" title="编辑"
onclick="editUser('${list.id}');"> <i
class="ace-icon fa fa-pencil-square-o bigger-120" title="编辑"></i>
</a>
</c:if>
</td>
<div class="hidden-md hidden-lg">
<div class="inline pos-rel">
<button class="btn btn-minier btn-primary dropdown-toggle"
data-toggle="dropdown" data-position="auto">
<i class="ace-icon fa fa-cog icon-only bigger-110"></i>
</button>
</div>
</div>
</td>
</tr>
</c:forEach>
<c:if test="${QX.cha == 0 }">
<tr>
<td colspan="10" class="center">您无权查看</td>
</tr>
</c:if>
</c:when>
<c:otherwise>
<tr class="main_info">
<td colspan="10" class="center">没有相关数据</td>
</tr>
</c:otherwise>
</c:choose>
</tbody>
</table>
<table style="width:100%;">
<tr>
<a title="批量修改" class="btn btn-mini btn-danger" onclick="makeAll('确定选中的数据吗?');" >统一分配</a>
<td style="vertical-align:top;"><div class="pagination" style="float: right;padding-top: 0px;margin-top: 0px;">${page.pageStr}</div>
</td>
</tr>
</table>
</div>
复选框按钮
$(function() {
//复选框全选控制
var active_class = 'active';
$('#simple-table > thead > tr > th input[type=checkbox]').eq(0).on('click', function(){
var th_checked = this.checked;//checkbox inside "TH" table header
$(this).closest('table').find('tbody > tr').each(function(){
var row = this;
if(th_checked) $(row).addClass(active_class).find('input[type=checkbox]').eq(0).prop('checked', true);
else $(row).removeClass(active_class).find('input[type=checkbox]').eq(0).prop('checked', false);
});
});
});
获取选中的内容
function makeAll(msg){
bootbox.confirm(msg, function(result) {
if(result) {
var str = '';
var emstr = '';
for(var i=0;i < document.getElementsByName('ids').length;i++)
{
if(document.getElementsByName('ids')[i].value!=1){
if(document.getElementsByName('ids')[i].checked){
if(str=='') str += document.getElementsByName('ids')[i].value;
else str += ',' + document.getElementsByName('ids')[i].value;
if(emstr=='') emstr += document.getElementsByName('ids')[i].id;
else emstr += ',' + document.getElementsByName('ids')[i].id;
}
}
}
if(str==''){
bootbox.dialog({
message: "<span class='bigger-110'>您没有选择任何内容或内容不符!</span>",
buttons:
{ "button":{ "label":"确定", "className":"btn-sm btn-success"}}
});
$("#zcheckbox").tips({
side:3,
msg:'点这里全选',
bg:'#AE81FF',
time:8
});
return;
}else{
if(msg == '确定选中的数据吗?'){
top.jzts();
var diag = new top.Dialog();
diag.Drag=true;
diag.Title ="批量修改";
diag.URL = '<%=basePath%>appointment/editAdmin.do?ids='+emstr;
diag.Width = 600;
diag.Height = 265;
diag.CancelEvent = function(){ //关闭事件
diag.close();
};
diag.show();
后台代码
批量修改我用的是for循环这样会修改几个数据就执行几条sql语句效率比较低,要提高效率可以在xml里面写一个批量修改的sql语句
/**
* 批量修改
* @return
* @throws Exception
*/
@RequestMapping(value="editApp1")
public ModelAndView editApp1() throws Exception{
ModelAndView mv=this.getModelAndView();
PageData pd=this.getPageData();
// appointmentService.listEditApp(pd);
String ids = pd.getString("ids");
String idss[] = ids.split(",");
int user_id=Integer.parseInt((String)pd.get("user_id"));
for(int i=0;i<idss.length;i++){
System.out.println(idss[i]);
PageData pd1=new PageData();
pd1.put("id",idss[i] );
pd1.put("user_id", user_id);
appointmentService.editApp(pd1);
}
mv.addObject("msg","success");
mv.setViewName("save_result");
return mv;
}
前后台数据交互的万能类
@SuppressWarnings("rawtypes")
public class PageData extends ActEntity<PageData> implements Map {
private static final long serialVersionUID = 1L;
private Map map = null;
private HttpServletRequest request;
public PageData(HttpServletRequest request) {
this.request = request;
Map<String, String> returnMap = new HashMap<String, String>();
String name = "";
String value = "";
Map<String, String[]> properties = request.getParameterMap();
for (Map.Entry<String, String[]> entry : properties.entrySet()) {
name = entry.getKey();
Object valueObj = entry.getValue();
if (null == valueObj) {
value = "";
} else if (valueObj instanceof String[]) {
String[] values = (String[]) valueObj;
for (int i = 0; i < values.length; i++) {
value = values[i] + ",";
}
value = value.substring(0, value.length() - 1);
} else {
value = valueObj.toString();
}
returnMap.put(name, value);
}
map = returnMap;
}
public PageData() {
map = new HashMap();
}
@Override
public Object get(Object key) {
Object obj = null;
if (map.get(key) instanceof Object[]) {
Object[] arr = (Object[]) map.get(key);
obj = request == null ? arr : (request.getParameter((String) key) == null ? arr : arr[0]);
} else {
obj = map.get(key);
}
return obj;
}
public String getString(Object key) {
return get(key) == null ? "" : get(key).toString();
}
@SuppressWarnings("unchecked")
@Override
public Object put(Object key, Object value) {
return map.put(key, value);
}
@Override
public Object remove(Object key) {
return map.remove(key);
}
public void clear() {
map.clear();
}
public boolean containsKey(Object key) {
// TODO Auto-generated method stub
return map.containsKey(key);
}
public boolean containsValue(Object value) {
// TODO Auto-generated method stub
return map.containsValue(value);
}
public Set entrySet() {
// TODO Auto-generated method stub
return map.entrySet();
}
public boolean isEmpty() {
// TODO Auto-generated method stub
return map.isEmpty();
}
public Set keySet() {
// TODO Auto-generated method stub
return map.keySet();
}
@SuppressWarnings("unchecked")
public void putAll(Map t) {
// TODO Auto-generated method stub
map.putAll(t);
}
public int size() {
// TODO Auto-generated method stub
return map.size();
}
public Collection values() {
// TODO Auto-generated method stub
return map.values();
}
@Override
public String toString() {
return "PageData [map=" + map + ", request=" + request + "]";
}
}
public abstract class ActEntity<T> implements Serializable {
private static final long serialVersionUID = 1L;
protected Activit act; // 流程任务对象
public ActEntity() {
super();
}
@JsonIgnore
public Activit getAct() {
if (act == null){
act = new Activit();
}
return act;
}
public void setAct(Activit act) {
this.act = act;
}
/**
* 获取流程实例ID
* @return
*/
public String getProcInsId() {
return this.getAct().getProcInsId();
}
/**
* 设置流程实例ID
* @param procInsId
*/
public void setProcInsId(String procInsId) {
this.getAct().setProcInsId(procInsId);
}
}