bootstrap table Refresh重新加载数据的方法

本文介绍如何使用Bootstrap Table的refresh方法来重新加载数据,包括调整分页配置。通过示例代码展示具体操作过程。

bootstrap table refresh重新加载数据的方法,同时也可重新设置分页相关的配置和refreshOptions方法类似。

refresh方法

参数名称 
params需要更新的配置

代码例子

//重新加载数据
$('#table').bootstrapTable('refresh');
//重新加载数据,并设置每页显示10
$('#table').bootstrapTable('refresh', {pageSize:10});

 

完整例子

<!doctype html>
<html>
<head>
     <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <script src="http://www.itxst.com/package/jquery-3.3.1/jquery.js"></script>
    <link href="http://www.itxst.com/package/bootstrap-4.3.1/css/bootstrap.css" rel="stylesheet" />
    <link href="http://www.itxst.com/package/bootstrap-table-1.15.3/bootstrap-table.css" rel="stylesheet" />
    <script src="http://www.itxst.com/package/bootstrap-table-1.15.3/bootstrap-table.js"></script> 
    <title>bootstrap table refresh在线例子</title>
    <style>
        .table-demo {
            width: 80%;
            margin: 30px auto 0px auto;
        }
        .fixed-table-header {
            border-right: solid 1px #ddd;
            border-top: solid 1px #ddd;
        }
            .fixed-table-header table  {
                border-top: solid 0px #ddd !important;
                margin-top:-1px;
            }
    </style>
</head>
<body >
  <div id="toolbar">
    <button onclick="ck(1)">refresh刷新请求</button> 
    <button onclick="ck(2)">refresh刷新请求同时更新pageSize</button>  
    <button onclick="getOps()">点击获取配置</button>
  </div>
    <div>
        <table id="table"></table>
    </div>
    <script>
        //设置需要显示的列
        var columns = [{
            field: 'Id',
            title: '编号'
        }, {
            field: 'ProductName',
            title: '名称'
        }, {
            field: 'StockNum',
            title: '库存'
        }];
 
        //bootstrap table初始化数据
        $('#table').bootstrapTable({
           toolbar:"#toolbar",  
          columns: columns,
          classes: "table table-bordered table-striped table-sm table-dark", //设置表格样式
           height:400,
          //******服务器端分页设置****
           url: "/package/bootstrap-table-1.14.1/data.json", //服务器返回数据的网址
           method: 'GET',   //数据请求方式
           sidePagination:'server', 
           pagination:true,
           pageNumber:1,
           pageSize:2,
           pageList:"[10, 20, 50, 200]",
           paginationHAlign:"left",
           paginationDetailHAlign:"right",
          queryParams:function(params) {
          /******获取分页数据时,这里你可以带上你自定义的参数******/
            params.action="getlist";
            params.catalogId=0;
            return params; }
           //******服务器端分页设置****
        });


         function ck(icase)
     {
      
       if(icase===1)
       {
         $('#table').bootstrapTable('refresh');
       }
       if(icase===2)
       {
         $('#table').bootstrapTable('refresh', {pageSize:10});
       }
       
     } 
    function getOps()
      {
        var ops=$('#table').bootstrapTable('getOptions');
        alert(JSON.stringify(ops));
        alert("获取每页显示条数:"+ops.pageSize);
      }
       


    </script>
</body>
</html>
<think>我们正在讨论的是BootstrapTablerefresh方法。根据引用,我们知道refresh方法用于异步刷新表格数据,并且在刷新完成后可能需要执行回调函数。同时,引用中提到,在onPostBody事件中可能无法访问到某些对象,因此需要使用其他方式(如通过变量)来判断刷新完成并执行代码。问题:如何在BootstrapTable中使用refresh函数更新表格数据?步骤:1.初始化BootstrapTable。2.使用refresh方法更新数据,并了解如何传递新的数据源。3.如何在刷新完成后执行回调函数(即刷新完成后的操作)?根据BootstrapTable的文档,refresh方法有两个可选参数:-params:一个对象,包含要发送到服务器的额外参数(当使用ajax方式时)。-options:一个对象,可以设置silent为true来静默刷新(不重新加载数据,仅刷新视图),或者设置url来改变数据源地址。但是,如果我们只是要更新数据(比如从本地获取了新数据),我们可以使用:$('#table').bootstrapTable('load',data);//直接加载数据//或者使用refresh重新从服务器获取数据(如果配置了url)$('#table').bootstrapTable('refresh');然而,refresh方法通常用于重新从服务器加载数据(当表格配置了url时)。如果我们已经获得了新数据(比如通过ajax请求),我们可以直接使用load方法加载。但是,问题中提到了“refresh函数”,所以我们重点讲解refresh。另外,refresh方法还支持回调。但是,在官方文档中,refresh方法本身并不直接提供回调参数。那么如何知道刷新完成呢?我们可以通过监听BootstrapTable的事件来实现,例如:-使用'on-post-body'事件(但引用[1]提到可能调用不到需要的对象,所以需要谨慎)-使用'on-load-success'事件,该事件在数据加载成功时触发。但是,注意:refresh方法会触发ajax请求,然后触发'on-load-success'事件。因此,我们可以这样:示例:1.初始化表格:```javascript$('#table').bootstrapTable({url:'data.json',columns:[...],onLoadSuccess:function(data){//数据加载成功,包括refresh触发的加载也会触发这里console.log('数据加载完成');}});```2.调用refresh刷新数据:```javascript$('#table').bootstrapTable('refresh');```但是,如果我们只想在某个特定的refresh操作后执行回调,而不是每次加载都执行,我们可以使用以下方法方法一:在refresh之前解绑事件,然后再绑定(不推荐,因为可能影响其他事件处理)方法二:使用jQuery的one方法绑定一次性的onLoadSuccess事件(推荐):```javascript//先解绑,避免重复绑定(如果之前已经绑定过)//然后使用one绑定一次$('#table').one('load-success.bs.table',function(e,data){//这里写刷新完成后的回调console.log('本次刷新完成');});$('#table').bootstrapTable('refresh');```注意:事件名称是'load-success.bs.table',这是BootstrapTable的事件命名空间。另外,引用[1]中提到使用`postBodyResult`变量再判断执行一些代码,这是因为在`onPostBody`事件中可能访问不到某些对象。所以,我们通常使用`onLoadSuccess`事件来处理刷新完成后的操作。如果我们没有使用ajax,而是使用本地数据,那么我们可以使用`refresh`方法并设置`silent`为true来刷新视图(不重新请求数据):```javascript$('#table').bootstrapTable('refresh',{silent:true});```但是,如果我们更新了本地数据,通常使用`load`方法重新加载数据即可。总结:使用`refresh`方法更新表格数据(从服务器重新加载):```javascript$('#table').bootstrapTable('refresh');```如果需要在刷新完成后执行操作,可以监听`load-success.bs.table`事件(一次性监听可以使用`one`方法)。示例代码:HTML结构(参考引用[2]):```html<tableid="table"data-toggle="table"data-url="data.json"data-height="460"><thead><tr><thdata-field="id">ID</th><thdata-field="name">Name</th><thdata-field="price">Price</th></tr></thead></table>```JavaScript:```javascript//初始化表格(通过HTML属性已经初始化了)//刷新按钮点击事件$('#refreshButton').click(function(){//刷新前绑定一次性事件$('#table').one('load-success.bs.table',function(e,data){alert('刷新完成!数据条数:'+data.length);});$('#table').bootstrapTable('refresh');});```注意:如果刷新过程中出现错误,可以监听`onLoadError`事件来处理。另外,如果我们需要传递额外的参数到服务器,可以:```javascript$('#table').bootstrapTable('refresh',{query:{date:'2018-06-13',type:'month'}});```服务器端将接收到date和type参数。以上就是在BootstrapTable中使用refresh函数更新表格数据方法。引用说明:[^1]:参考了BootstrapTable的事件文档,特别是onPostBody事件和onLoadSuccess事件。[^2]:参考了提供的HTML结构,用于表格的初始化。相关问题:1.如何给BootstrapTable传递自定义参数进行刷新?2.BootstrapTable的load方法refresh方法有什么区别?3.如何处理BootstrapTable刷新时的错误?</think>### Bootstrap Table 的 `refresh` 函数使用指南 在 Bootstrap Table 中,`refresh` 函数用于动态更新表格数据,支持**异步刷新**和**回调执行**。以下是具体实现方法和示例: --- #### 一、核心用法 ##### 1. 基本刷新(重新加载数据) ```javascript $('#dataTable').bootstrapTable('refresh'); ``` - 重新请求配置的 `url` 数据源 - 自动更新表格视图 ##### 2. 带参数的刷新 ```javascript $('#dataTable').bootstrapTable('refresh', { query: { date: $('#calendar').val(), // 获取表单值 type: $('#types').val() // 获取下拉框值 } }); ``` - 通过 `query` 传递新参数到后端 - 适合动态过滤数据(如日期筛选)[^2] --- #### 二、异步刷新后的回调执行 当需要**在数据加载完成后执行操作**时(如更新统计信息),使用事件监听: ```javascript $('#dataTable').bootstrapTable('refresh', { query: { type: 'month' } }); // 监听数据加载完成事件 $('#dataTable').on('post-body.bs.table', function(e, data) { console.log("新数据加载:", data); // 在此添加回调逻辑 updateSummary(data); // 自定义回调函数 }); ``` - `post-body.bs.table` 是官方推荐的回调事件[^1] - 参数 `data` 包含新加载数据集 --- #### 三、完整示例(结合 AJAX) ```html <div class="tableDisplay" id="dataTable"> <table id="myTable"></table> </div> <script> // 初始化表格 $('#myTable').bootstrapTable({ url: '/api/getData', columns: [{ field: 'id', title: 'ID' }, { field: 'name', title: '名称' }] }); // 按钮触发刷新 $('#refreshBtn').click(function() { $('#myTable').bootstrapTable('refresh', { query: { date: $('#calendar').val(), type: $('#types').val() }, silent: true // 静默刷新不显示加载动画 }); }); // 刷新完成回调 $('#myTable').on('load-success.bs.table', function(e, data) { alert(`已加载 ${data.length} 条新数据`); }); </script> ``` --- #### 关键注意事项 1. **事件选择** - `load-success.bs.table`:数据加载成功时触发 - `post-body.bs.table`:DOM渲染完成后触发(操作DOM元素时用)[^1] - 避免使用 `onPostBody`(旧版可能有作用域问题) 2. **性能优化** - 添加 `silent: true` 参数避免过度渲染动画 - 使用 `cache: false` 禁用缓存确保获取最新数据 3. **与 `load` 的区别** ```javascript // refresh:基于配置的url重新请求 $('#table').bootstrapTable('refresh'); // load:直接加载本地数据 $('#table').bootstrapTable('load', localDataArray); ``` > 参考官方文档:[Bootstrap Table 事件文档](https://bootstrap-table.com/docs/api/events/) ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值