Web-插件 表格插件bootstrap-table使用示例

Web-插件 表格插件bootstrap-table使用示例

说明

bootstrap-table是bootstrap的一个表格插件,本文将介绍bootstrap-table的一些使用示例。


示例列表

刷新表格

$("#table").bootstrapTable('refresh');

表格传参

 $('#excuteDoctorAdviceList').bootstrapTable('refresh',{
   query:{
    patientName:patientName
   }
});

自定义单元格

{
    field: 'user_name',</code>
    title: '操作',
    align: 'center',
    formatter: operateFormatter //自定义方法,添加操作按钮
}
function operateFormatter(value, row, index){
      var str="";
      if(row.status==6){
            var str= "<a href='javascript:rejectdoctorDetail("+row.doctor_advice_detail_id+")'>驳回<a/>";
      }else{
            var str="<span style='color:red'>已驳回</span>";
      }
    return str;
}

获取选中id

function getSelections(){
    var selectDetail =$('#excuteDoctorAdviceList').bootstrapTable("getSelections");
    if(""==selectDetail){
          alertStr("请至少选择一条医嘱");
        return false;
    }
    var selectArray= new Array();
    $.each(selectDetail, function(index, val) {
         /* iterate through array or object */
         selectArray.push(val.doctor_advice_id);
    });
 return selectArray.join(",");
}

添加自增id列

{
    title: "序号",

    formatter: function(value, row, index) {

       return index + 1;
    },
    rowspan: 1,

    align: 'center',

    width: '50px'

 },

单元格单击事件

1.指定某一列单元格加载单击事件
onClickCell: function(field, value, row, $element) {
  if(field=="drug_num"){
      $element.html("<input style='width:40px' type='test' ></input>"); //单击后变为input框
      $element.find('input').focus().select();   //焦点选中
      $element.find('input').keyup(function(event){ //回车事件
        if(event.keyCode ==13){
            $element.html($(this).val());
            index = $element.parent().data('index');
            tdValue =$(this).val();
            editData(index, field, tdValue); //单元格赋值
        }
      });
  }
},

2.更新单元格
function editData(index, field, value){    //更新单元格的值
    $("#ArbetTable").bootstrapTable('updateCell', {
        index: index,       //行索引
        field: field,       //列名
        value: value        //cell值
    })    
}

删除单元行(普通删除id会错乱)


1.定义删除事件
},{
    field: 'operate',
    title: '操作',
    align: 'center',
    formatter: removeDrug, //自定义方法,添加操作按钮
    events: operateEvents, //定义删除事件

},
2.自定义方法
function removeDrug(value, row, index){
  return "<button type='button' class='btn btn-default btn-sm tableDelete' style='padding-top:0px;padding-bottom:0px;'><span class='glyphicon glyphicon-minus' style='margin-right: 0px;' ></span></button>";
}
3.自定义事件
window.operateEvents = {
    'click .tableDelete': function (e, value, row, index) {
        rowDelete(row.drug_id);
    }
}
 
 4.删除本行
 function rowDelete(drug_id){
    $("#ArbetTable").bootstrapTable('remove', {
        field: 'drug_id',
        values: [drug_id]
    });
  }

bootstrap-table记忆翻页

1.定义复选框,从全局数组中记忆取回
{
    checkbox:true,
    field: 'id',
    formatter : function(i, row) { // 每次加载 checkbox 时判断当前 row 的 id 是否已经存在全局 Set() 里
    if ($.inArray(row.drug_id,
        overAllIds) != -1) {// 因为 判断数组里有没有这个 id 
      return {
        checked : true
      // 存在则选中
      }
    }
  }
},
2.定义全局数组
var overAllIds = new Array(); //全局数组
var overName=new Array("已选择药品:");

3.定义checkbox点击、取消事件
$('#drugTable').on('uncheck.bs.table check.bs.table check-all.bs.table uncheck-all.bs.table',function(e, rows) {
          var datas = $.isArray(rows) ? rows : [ rows ]; // 点击时获取选中的行或取消选中的行
          examine(e.type, datas); // 保存到全局 Array() 里
});
4.选中方法处理
function examine(type, datas) {
  if (type.indexOf('uncheck') == -1) {
    $.each(datas,
        function(i, v) {
          // 添加时,判断一行或多行的 id 是否已经在数组里 不存则添加 
          overAllIds.indexOf(v.drug_id) == -1 ? overAllIds
              .push(v.drug_id) : -1;
          overName.push(v.drug_name+"&nbsp;&nbsp;");
        });
  } else {
    $.each(datas, function(i, v) {
      overAllIds.splice(overAllIds.indexOf(v.drug_id), 1); //删除取消选中行
      overName.splice(overName.indexOf(v.drug_name+"&nbsp;&nbsp;"), 1); //删除取消选中行
    });
  }
  drugs=overName.join("");
  $("#is_drug").html(drugs);
}

bootstrap-table 父子关联表

$(function() {
    var oTableInit = new Object();  
    var oInit = new Object();

   $('#excuteDoctorAdviceList').bootstrapTable({
        url: 'URL',         //请求后台的URL(*)
        method: 'post',                     //请求方式(*)
        detailView: true, //父子表
        dataType: "json",
        contentType: "application/x-www-form-urlencoded",
        striped:true,//隔行变色
        cache:false,  //是否使用缓存
        showColumns:false,// 列
        pagination: true, //分页
        paginationLoop:false,
        buttonsAlign: "right", //按钮对齐方式
        sidePagination: "server", //服务端处理分页
        pageNumber:1,
        pageSize:20,
        pageList:[15, 20, 30],
        undefinedText:'--',
        queryParamsType:'',
        height:$(window).height() - 80,
      columns: [{
                  rowspan: 1,
                  align: 'center',
                  field:"id",
                  checkbox:true
               },
               {
             field: 'doctor_advice_id',
             visible:false
         },{
             field: 'patient_id',
             visible:false
         },{

            field: 'patient_name',

            title: '姓名',

            align: 'center',

         },
      ],
     queryParams : function (params) {
                    //这里的键的名字和控制器的变量名必须一直,这边改动,控制器也需要改成一样的
      var temp = {   
            pageSize: params.pageSize,  //页面大小
            pageNumber: params.pageNumber, //页码
            sort: params.jssj,      //排序列名  
            sortOrder: params.order //排位命令(desc,asc) 
          };
          return temp;
        },
      onExpandRow: function(index, row, $detail) {

         oTableInit.InitSubTable(index, row, $detail);
      }
   });

oTableInit.InitSubTable = function(index, row, $detail) {
   var doctorAdviceId = row.doctor_advice_id;

   var cur_table = $detail.html('<table id="detail"></table>').find('table');

   $(cur_table).bootstrapTable({

      url: "子链接url",         //请求后台的URL(*)

      method: 'post',  

      dataType: "json",

      contentType: "application/x-www-form-urlencoded",

      clickToSelect: true,

      queryParams : {doctorAdviceId:doctorAdviceId},

      columns: [{
                  title: "序号",

                  formatter: function(value, row, index) {

                     return index + 1;
                  },
                  rowspan: 1,

                  align: 'center',

                  width: '50px'

               },{

            field: 'type',

            title: '类型',

            align: 'center',

         }, {
            field: 'classPrimaryName',

            title: '名称',

            align: 'center',

            formatter: lookTreatFormatter,
         }, {

            field: 'dosage',

            title: '初始数量',

            align: 'center',

         }, {

            field: 'dosage',

            title: '初始数量',

            align: 'center',

         }, {

            field: 'src_unit_name',

            title: '单位',

            align: 'center',

         },{

            field: 'min_dosage',

            title: '计量',

            align: 'center',

         },{
            field: 'user_name',

            title: '操作',   

            align: 'center',

            formatter: operateFormatter //自定义方法,添加操作按钮
         }       

      ],
      //无线循环取子表,直到子表里面没有记录
      onExpandRow: function(index, row, $Subdetail) {
         oInit.InitSubTable(index, row, $Subdetail);
      },
   });
   return oTableInit; 
  };
});

结尾

你是我的半截的诗,不许别人更改一个字--《半截的诗》

添加新评论