一丶复选框全选
当点击最顶上的全选/全不选 checkbox时,下面的一列要跟随着
解决方法:用js
function checkAll(){
//获取(全选/全不选) 复选框的checked值
var flag=document.getElementById("ckAll").checked;
//得到所有复选框元素
var ids=document.getElementsByName("ids");
for(var i=0;i<ids.length;i++){
ids[i].checked=flag;
}
}
二丶批量删除
凡是增删改查唯一的一个数据都是依据主键删除的(这很关键),所以我就把复选框的value值 放主键
<input type="checkbox" name="ids" value="tcno=${t.tcno }&begin=${t.begin}&end=${t.end}&">
js代码先这样写看看效果
function delAllProduct(){
//得到所有复选框
var str=""
var ids=document.getElementsByName("ids");
for(var i=0;i<ids.length;i++){
if(ids[i].checked==true){
str+=ids[i].value
}
}
str=str.substr(0, str.length-1);
alert(str);
}
结果:当点击批量删除时,主键的信息全部在上面,就可以实现删除了!
批量删除的实现:点击批量删除,触发delAllproduct事件
function delAllProduct(){
//得到所有复选框
var str=""
var ids=document.getElementsByName("ids");
for(var i=0;i<ids.length;i++){
if(ids[i].checked==true){
str+=ids[i].value
}
}
str=str.substr(0, str.length-1);
if(str!="")
location.href="${pageContext.request.contextPath}/deleteAllTickets?"+str;
}
注意:str==null时就不跳转了,否则数据库查询时会出错
web层 servlet代码
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String[] tcno = request.getParameterValues("tcno");
String[] begin=request.getParameterValues("begin");
String[] end=request.getParameterValues("end");
TicketService ts=new TicketService();
ts.deleteAllTickets(tcno,begin,end);
request.getRequestDispatcher("/ticketsList").forward(request, response);
}
数据库层代码
public void deleteAllTickets(String[] tcno, String[] begin, String[] end) throws SQLException {
QueryRunner qr = new QueryRunner(C3P0Util.getDataSource());
Object[][] params=new Object[tcno.length][];
for(int i=0;i<params.length;i++){
params[i]=new Object[]{tcno[i],begin[i],end[i]};
}
qr.batch("delete from tickets where tcno=? and begin=? and end=?", params);
}
三,多条件查询
(思路)
起始sql语句 select * from tickets where 1=1 (一定要写这个 where 1=1)
因为条件是不确定的,从提交的条件判断是否为null,sql+=“‘你要的条件’”
最后把我的代码附上,因为我tickets的javabean 附带了一个car的javabean的引用,所以用了自定义结果类型resultSetHandler,代码会稍显多.
public List<Tickets> findTicketByManyCondition(String begin, String end, String concumerType, String maxprice,
String minprice, String time) throws SQLException {
// TODO Auto-generated method stub
QueryRunner qr = new QueryRunner(C3P0Util.getDataSource());
List<Object> list=new ArrayList<Object>();
String sql="select * from tickets t,car c where c.CNo=t.tcno and 1=1";
if(!"".equals(begin)){
sql+=" and begin=?";
list.add(begin);
}
if(!"".equals(end)){
sql+=" and end=?";
list.add(end);
}
if(!"".equals(concumerType)){
sql+=" and concumerType=?";
list.add(concumerType);
}
if(!"".equals(minprice)){
sql+=" and tprice>?";
list.add(minprice);
}
if(!"".equals(maxprice)){
sql+=" and tprice<?";
list.add(maxprice);
}
if(!"".equals(time)){
sql+=" and beginTime>?";
list.add(time);
}
return qr.query(sql, new ResultSetHandler<List<Tickets>>(){
@Override
public List<Tickets> handle(ResultSet rs) throws SQLException {
List<Tickets> list = new ArrayList<Tickets>();
while(rs.next()){
Tickets t = new Tickets();
t.setTcno(rs.getString("tcno"));
t.setTprice(Double.valueOf(rs.getString("tprice")));
t.setTnum(Integer.valueOf(rs.getString("tnum")));
t.setBegin(rs.getString("begin"));
t.setEnd(rs.getString("end"));
t.setConcumerType(rs.getString("concumerType"));
String beginTime = rs.getString("beginTime").substring(0, 19);
String endTime = rs.getString("endTime").substring(0, 19);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
t.setBeginTime(sdf.parse(beginTime));
t.setEndTime(sdf.parse(endTime));
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Car c = new Car();
c.setCno(rs.getString("tcno"));
c.setCtype(rs.getString("Ctype"));
t.setCar(c);
list.add(t);
}
System.out.println(list.size()+"--------------------");
return list;
}
},list.toArray());
}