bootstrap-table示例

废话不多说,先上一个基本示例,然后逐步介绍功能和配置。

1、远程加载列表数据:

1)引入库:

<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-table/1.16.0/bootstrap-table.min.css">

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-table/1.16.0/bootstrap-table.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-table/1.16.0/locale/bootstrap-table-zh-CN.min.js"></script>

<!--表头颜色、奇偶行不通颜色-->
<style type="text/css">
	#mytab  thead{background: #5488c4;}
	#mytab tr:nth-child(even){
		background:#f4f8fb;
	}
</style>

2)html代码:

<html>
<body>
<!--container 让整个页面居中,而且左右留白适中-->
<div class="container">
  <div class="row">
    <div class="table-responsive">
      <div id="toolbar">
        <form class="form-inline" onsubmit="return func()">
          <div class="form-group">
            <div class="input-group">
              <div class="input-group-addon">产品名</div>
              <select id="search_service" class="form-control" onchange="searchProduct();">
                <option value="0">请选择产品线...</option>
              </select>
            </div>
          </div>
          <!--<button type="button" class="btn btn-primary queryButton">查询</button>-->
          <button class="btn btn-primary btn-sm" data-toggle="modal" data-target="#addInterfaceModal">添加数据</button>
        </form>
      </div>
      <!--表格-->
      <table id="mytab" class="table table-hover" style="word-break:break-all; word-wrap:break-all;"></table>
    </div>
  </div>
</div> 

<!--bootstrap modal弹出框-->
<form class="form-horizontal" role="form" id="form_data" style="margin: 20px;">
 <div class="modal fade" id="addInterfaceModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
  <div class="modal-dialog">
    <div class="modal-content">
      <div class="modal-header"><!--header-->
       <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
       <h4 class="modal-title" id="myModalLabel">新增接口信息</h4>
      </div>
      <div class="modal-body"><!--body-->
       <form class="form-horizontal" role="form">
        <div class="form-group">
         <label for="serviceId" class="col-sm-3 control-label">服务</label>
         <div class="col-sm-9">
          <select class="form-control" name="serviceId" id="serviceId">
           <option value="0">请选择服务</option>
          </select>
         </div>
        </div>
        <div class="form-group">
         <label for="interfaceName" class="col-sm-3 control-label">接口名</label>
         <div class="col-sm-9">
          <input type="text" class="form-control" name="interfaceName" id="interfaceName" placeholder="输入接口名">
         </div>
        </div>
        <div class="form-group">
         <label for="interfaceUrl" class="col-sm-3 control-label">接口URL</label>
         <div class="col-sm-9">
          <input type="text" class="form-control" name="interfaceUrl" id="interfaceUrl" placeholder="输入接口URL">
         </div>
        </div>
        <div class="form-group">
         <label for="header" class="col-sm-3 control-label">接口URL HEAD</label>
         <div class="col-sm-9">
          <input type="text" class="form-control" name="header" id="header" placeholder="格式如下,没有可不填! key:value;key:value">
         </div>
        </div>
       </form>
      </div>
      <div class="modal-footer"><!--footer-->
        <button type="button" class="btn btn-default" data-dismiss="modal">关闭</button>
        <button type="button" class="btn btn-primary" onClick=check_form();>提交</button>
        <span id="tip"> </span>
      </div>
    </div><!-- /.modal-content -->
  </div><!-- /.modal -->
 </div>
</form>
	
	
	
<!--加载table列表数据、以及下拉列表数据-->
<script>
  //todo1
</script>
</body>
<!--事件函数-->
<script>
  //todo2
</script>
</html>

3)scripts代码:

//todo1
$('#mytab').bootstrapTable({
	url: 'url...',
	toolbar: "#toolbar",
	sidePagination: "false",
	striped: true, // 是否显示行间隔色
	search : "true",
	showRefresh: true,
	showToggle:true,
	showColumns:true,
	showHeader:true,
	//uniqueId: "ID",
	pagination: false, // 是否分页
	sortable: false, // 是否启用排序
	dataField : "data",//ajax返回json数据中,数组的key
	columns: [{
			field: 'id',
			title: 'XXX'
		},{
			field: 'serviceId',
			title: 'XXX'
		},{
			field: 'interfaceName',
			title: 'XXX名'
		},{
			field: 'interfaceUrl',
			title: 'XXX',
			formatter: function(value, row, index) {
				return "<a href='"+value+"' target='_blank'>连接</a>";
			}
		},{
			field: 'header',
			title: 'XXX'
		},{
			field: 'operation',
			title: '操作',
			width: 120,
			align: 'center',
			valign: 'middle',
			formatter: function(value, row, index) {
				var result = "";
				result += "<a href='javascript:;' class='btn btn-xs btn_view' style='color:green' title='查看'><span class='glyphicon glyphicon-search'></span></a>";
				result += "<a href='javascript:;' class='btn btn-xs btn_edit' style='color:#1890ff' title='编辑'><span class='glyphicon glyphicon-pencil'></span></a>";
				result += "<a href='javascript:;' class='btn btn-xs btn_del' style='color:red' title='删除'><span class='glyphicon glyphicon-remove'></span></a>";
				return result;
			},
			events: {
				'click .btn_view': function(e, value, row, index) {
					EditViewById(row,0);
				},
				'click .btn_edit': function(e, value, row, index) {
					EditViewById(row,1);
				},
				'click .btn_del': function(e, value, row, index) {
					DelById(row);
				}
			}
		}
	]
});

$.ajax({
	url: "url...",
	type: "get",
	success:function(_data){
		if (_data.code == 'A00000') {
			var data = _data.data;
			for (var i = 0; i < data.length; i++) {
				$('#serviceId').append("<option value=" + data[i].id + ">" + data[i].serviceName + "</option>");
			}
		} else {
			alert('获取服务列表请求出错');
			return;
		}
	},error:function() {
		alert('获取服务列表请求出错');
	}
});

事件函数代码:

function func() {
	return false;
}
function searchProduct() {
	var sid = $('#search_service').val();
	var my_url = "url?serviceId="+sid;
	if ( sid === "0") {
		my_url = 'url2';
	}
	$.ajax({
		url: my_url,
		type: "get",
		success:function(_data){
			if (_data.code == 'A00000') {
				var data = _data.data;
				$("#mytab").bootstrapTable('load', data);
			} else {
				alert('查询接口列表请求出错');
				return;
			}
		},error:function() {
			alert('查询接口列表请求出错');
		}
	});
}

function check_form() {
	var serviceId = $.trim($('#serviceId').val());
	var interfaceName = $.trim($('#interfaceName').val());
	var interfaceUrl = $.trim($('#interfaceUrl').val());

	if(!interfaceName || !interfaceUrl){
		alert('请输入接口名|接口URL!');
		return;
	}
	if (serviceId === "0") {
		alert('请选择服务!');
		return;
	}
	var header = $.trim($('#header').val());

	$.ajax({
		url: "url3",
		data:{"serviceId":serviceId,"interfaceName":interfaceName,"interfaceUrl":interfaceUrl,"header":header},
		type: "get",
		beforeSend:function(){
			$("#tip").html("<span style='color:blue'>正在处理...</span>");
			return true;
		},
		success:function(data){
			if (data.code == 'A00000') {
				$("#tip").html("<span style='color:blueviolet'>操作成功!</span>");
				location.reload();
			} else if (data.code == 'E00002') {
				$("#tip").html("<span style='color:red'>失败,可能是接口名重名导致!</span>");
				return;
			}else {
				$("#tip").html("<span style='color:red'>失败,请重试</span>");
				return;
			}
		},error:function() {
			alert('请求出错');
		}
	});
}

2、重新加载数据:

我们都知道,当页面初始化时,我们使用bootstrapTable构造方法直接加载远程数据;但是当查询条件变了,需要重新从远程获取数据,然后将数据渲染到table中,总不能再次使用构造方法渲染一个新的表格吧。bootstrap提供了load方法,如下:

$('#table').bootstrapTable('load', newData);

3、其他问题:

1)bootstrap table自动换行

<table class="table table-condensed" style="word-break:break-all; word-wrap:break-all;">
</table>

2)表格中某列点击行,获取整行信息:

{
	field: 'column_operate',
	title: '操作',
	formatter: function(value, row, index) {
		return '<a href="javascript:void(0);" class="say_hi">点我</a>';
	},
	events: {
		'click .say_hi': function(e, value, row, index) {
			alert(row.name + ' 你好');
		}
	}
}

这里列一下boostrap自带的图表css:

https://www.runoob.com/bootstrap/bootstrap-glyphicons.html

https://www.w3schools.com/bootstrap/bootstrap_ref_comp_glyphs.asp

bootstrap在线编辑器:

https://www.jc2182.com/bootstrap/bootstrap-grid-examples.html

4、参考:

bootstrap 官方api:http://www.itxst.com/bootstrap-table-methods/bbrb7bvz.html

其他博客:

https://www.jb51.net/article/140396.htm

https://www.jianshu.com/p/b5ca011a0d9c

https://www.jb51.net/article/122986.htm

https://www.cnblogs.com/lichihua/p/10435072.html

https://blog.csdn.net/pengjunlee/article/details/80658596

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

赶路人儿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值