bootstrap-table的使用(3)--自定义搜索功能,数据库查询一个时间段内的内容并显示为例

自定义搜索功能

bootstrap-table是自带搜索功能的,但是搜索功能比较单一,如果我们有特殊的要求,那么需要自己写一个搜索功能,主要是应用于进行数据库查询,并将结果展示。
大致流程为:
1、利用bootstrap-table自带的url传值,传递参数到servlet。
2、在servlet中进行数据库查询,然后将数据库内容进行整理,整理成JSONArray和JSONObject的数据格式。
3、将格式封装成,“total"和"rows”,传递回表格。
下面以查询一个时间段内的数据为例子,进行介绍。

1、传参数

初始化定义几个参数,state,就是告诉servlet这次传值是为了实现什么功能,StartSearch是起始时间,EndSearch是结束时间,查询最后修改时间在这两个时间段内的数据。
定义一个bootstrap-table的函数,实现表格的初始化等功能,并且定义一个searchT()的函数,这是实现按钮的功能,点击按钮,则改变state的值为"search",并且传参数至servlet,根据内容查询后重置表格。

	var state ="loadData";
	var StartSearch =null;
	var EndSearch =null;
	var mPage =1;
	
	var TableInit=function(){
	    var oTableInit = new Object();
	    oTableInit.Init=function(){
			$('#reportTable').bootstrapTable({
				method: 'get',
				url: "<c:url value='/IP_IndexServlet?act="+state+"&&start="+StartSearch+"&&end="+EndSearch+"'/>", //获取数据的Servlet地址
	            queryParams: function queryParams(params) {   //设置查询参数              
	            	var param = {                    
	            		pageNumber: params.pageNumber,                    
	            		pageSize: params.pageSize,                              
	            		};                
	            return param;                            
	            },

				cache: false,
				//height: 750, 
				striped: true,
				pagination: true, 
				silent: true, //以静默方式刷新数据
				toolbar:"#toolbar",
				locale:"zh-US", //表格汉化
				sidePagination: "client",
				pageSize: 10,
				pageNumber:mPage,
				pageList: [10, 14,15, 16, 18,20],
				search: true,
				showColumns: true,
				showRefresh: true,
				showExport: true,
				exportDataType: 'all', 
				clickToSelect: true,
				exportTypes:[ 'excel','xlsx','doc','csv', 'txt', 'sql' ],
                exportOptions:{  
                    //ignoreColumn: [12,14],            //忽略某一列的索引  
                    fileName: '数据导出',              //文件名称设置  
                    worksheetName: 'Sheet1',          //表格工作区名称  
                    tableName: 'IP数据表',  
                    excelstyles: ['background-color', 'color', 'font-size', 'font-weight'],  
                    //onMsoNumberFormat: DoOnMsoNumberFormat  
                },
	            columns : [{
	                field : '序号',
	                title : '序号'
	            }, {
	                field : '类型',
	                title : '类型'
	            }, {
	                field : '品牌',
	                title : '品牌'
	            }, {
	                field : '操作系统',
	                title : '操作系统'
	            }, {
	                field : 'IP地址',
	                title : 'IP地址'
	            }, {
	                field : 'MAC地址',
	                title : 'MAC地址'
	            }, {
	                field : '最后修改时间',
	                title : '最后修改时间'
	            }, {
	                field : '备注',
	                title : '用途'
	            },{
	            	field: 'operate',
	            	title: '操作',
	            	align: 'center',
	            	events: operateEvents,//给按钮注册事件
	            	formatter: operateFormatter
	            }],
                responseHandler: function (res) {
                    $("#calcul").html("<p>查询范围内共执行任务 "+res.mCount+" 次</p><p>总计 "+res.mTime+" 小时</p>");
                    return{                            //return bootstrap-table能处理的数据格式
                        "total":res.total,
                        "rows":res.rows
                    }
                },
			});
			//隐藏正在加载
			//$('#reportTable').bootstrapTable('hideLoading');
	    };
	    oTableInit.destroy=function(){
	        $("#reportTable").bootstrapTable('destroy');
	    }
	    return oTableInit;
	}
	var oTable = new TableInit();
	oTable.destroy();
	oTable.Init();
	
	//该函数实现参数的变化及表格的重置功能。
	function SearchT() {
		var start=document.SearchForm.start;
		var end=document.SearchForm.end;
		StartSearch=start.value;
		EndSearch=end.value;
		state="search";

    	var oTable = new TableInit();
    	oTable.destroy();
     	oTable.Init();
	}

实现数据库查询并返回值

		request.setCharacterEncoding("UTF-8");
		String act=request.getParameter("act");//获知要执行什么动作
		String Search_start=request.getParameter("start");
		String Search_end=request.getParameter("end");
		
		if(act.equals("search")) {//是查询动作
			response.setContentType("text/json; charset=utf-8");
			PrintWriter out = response.getWriter();
			JSONArray jsonarray = new JSONArray();  //定义一个json数据的数据集
			try {
			ipd.IP_CreateTable(mIP);
		} catch (SQLException e1) {
			// TODO 自动生成的 catch 块
			e1.printStackTrace();
		}

			//获取该时间段内的IP信息
	        Result result=ipd.findcontent(Search_start,Search_end,mIP);
	        
	        for(int i=0;i<result.getRowCount();i++) {
				Map rst=result.getRows()[i];
				JSONObject jsonobj = new JSONObject();//新定义一个json格式的数据
				jsonobj.put("序号", rst.get("序号"));  
				jsonobj.put("类型", rst.get("类型"));  
				jsonobj.put("品牌", rst.get("品牌"));
				jsonobj.put("操作系统", rst.get("操作系统"));  
				jsonobj.put("IP地址", rst.get("IP地址"));
				jsonobj.put("MAC地址", rst.get("MAC地址"));  
				jsonobj.put("最后修改时间", rst.get("最后修改时间"));  
				jsonobj.put("备注", rst.get("备注"));   

				jsonarray.add(jsonobj);
			}
			int length = jsonarray.size();
			
			JSONObject jsonobj1 = new JSONObject();
			//将数据集和数据长度,封装成一个固定格式的json数据包,即包含"total","rows"两个参数的内容,这两个参数必须包含,不然无法正常显示表格。
			jsonobj1.put("total", length);
			jsonobj1.put("rows", jsonarray);
			out = response.getWriter();
			out.println(jsonobj1);//显示在表格中
		}
发布了45 篇原创文章 · 获赞 5 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/baidu_31788709/article/details/102690700