BootStrapTable的基础使用

BootStrapTable是通过表格对象进行增删改的,当我们对表格的数据进行了修改之后,需要将修改之后的数据保存到表格对象中,否则操作失效

HTML

<button id="addBtn" onclick="addRow()">新追加一行</button>
<table id="table" data-toggle="table" style="width: 1120px;">
    <thead>
        <tr>
            <!-- 
                data-visible="false": 指定该栏不可见
                class="readonly-column": 指定该列只读
             -->
            <th colspan="1" class="readonly-column" data-field="id" data-visible="false">id</th>
            <!-- data-field="titile1": 用于绑定数据 -->
            <th colspan="1" data-field="titile1" data-align="center" data-valign="middle"
                data-halign="center">标题checkbox</th>
            <!-- data-align="center" data-valign="middle" data-halign="center": 用于指定对齐位置 -->
            <th colspan="1" data-field="titile2" data-align="center" data-valign="middle" data-halign="center">标题测试</th>
            <th colspan="1" data-field="titile3" data-align="center" data-valign="middle"
                data-halign="center">文件上传</th>
            <th colspan="1" data-field="titile4" data-align="center" data-valign="middle"
                data-halign="center">标题4</th>
            <!-- 因为删除是一个按钮,所以并没有属性可以绑定,设置为空即可 -->
            <th colspan="1" data-field="" data-align="center" data-valign="middle"
                data-halign="center">删除</th>
        </tr>
    </thead>
</table>
<hr>
<button id="getDataFromTable" onclick="getAllDataFromTable()">获取表格中的数据</button>

JavaScript


// 初始化三条向表格中插入的空数据
const tableData = Array.from({length: 3}, (item, index) => ({
    id: index + 1,
    titile1: "",
    titile2: "",
    titile3: "",
    titile4: ""
}));
// 向表格中初始化数据
$('#table').bootstrapTable('load', tableData);

// 通过js对表格进行初始化
$('#table').bootstrapTable({
  // 指定当前表格每一行的唯一标识为id(表格中的每一行都有一个隐藏项目栏id)
  uniqueId: "id",
  // 指定表格的宽和高
  height: 300,
  width: 400,
  columns: [{
        // id,因为我们设置id为不可见,所以此处初始化一个空对象用来占位
    }, {
        // 标题checkbox
        width : 60,
        formatter: function(value, row, index) {
            /*
                1. 当value的值为1的时候,设置checkbox为选中状态,否则为非选中状态
                2. 当我们在勾选表格中的checkbox的时候,会触发onchange事件,将checkbox的选中状态保存到BootStrapTable对象中
                3. ${value === 1 ? checked='checked' : ''}的是必须的,
                   否则当我们新追加一行的时候,虽然BootStrapTable中的选中状态值不会丢失,但无法在画面上显示选中状态
            */
            `<input type="checkbox" name='titile1' ${value === 1 ? checked='checked' : ''} 
                οnchange='saveCheckBoxCondition(${index}, this)' />`;
        }
    }, {
        // 标题测试
        width : 150,
        formatter: function(value, row, index) {
            // ES6的新语法,当value的值为null或者undefined的时候,返回空字符串
            return value ?? "";
        }
    },{
        // 文件上传
        width : 180,
        formatter: function (value, row, index) {
            /*
                因为我们我们要从input对象中获取出上传的文件对象,因此给每一个input文件输入框都指定唯一的id
                通过该id来特定出唯一的input对象
            */
            return `<input id='file_${index}' type='file' οnchange='fileChange(${index});`
        }
    }, {
        // 标题4
        width: 150,
        formatter: function (value, row, index) {
            /*
                1. value="${value == null ? '' : value}"的设置是必须的,否则但我们新追加一行后,
                原先输入的值并不会显示在输入库中
                2. 当我们输入的时候,会触发onchange事件,从而将输入的数据保存到BootStrapTable对象中
            */
            return `
                <input type="text" name="titile4" maxLength="32" 
                    οnchange='saveContentToBTable(${index}, this)'
                    class="form-control" value="${value == null ? '' : value}" />
            `;
        }
    }, {
        // 删除
        width: 150,
        formatter: function (value, row, index) {
            // 我们为表格中的每一行都指定了唯一的id,因此可以通过row行对象进行获取
            return `
                <button type='button' οnclick='removeRow("${row.id}")'>删除</button>
            `;
        }
    }]
});

/*
    将checkbox的状态保存到BootstrapTable对象中
        index: 当前表格所在的行
        obj: 当前操作的input的DOM对象
*/
function saveCheckBoxCondition(index, obj) {
    // 获取出当前input的name属性值
    let name = $(obj).attr('name');
    // 根据index获取出当前表格的行对象
    let row = $(`#table`).bootstrapTable('getData')[index];
    // 将checkbox的选中状态保存到行对象中
    row[name] = $(obj).prop("checked") ? 1 : 0;
}

/*
    将文本输入框的输入值保存到BootstrapTable对象中
        index: 当前表格所在的行
        obj: 当前操作的input的DOM对象
*/
function saveContentToBTable(index, obj) {
    // 当前输入框输入的值
    let value = $(obj).val();
    // 当前输入框的name属性
    let name = $(obj).attr('name');
    // 根据index获取出当前表格的行对象
    let row = $("#table").bootstrapTable('getData')[index];
    // 将input的输入值保存到当前行对象中
    row[name] = value;
}

// 全局变量uniqueNo,用于记录当前行唯一的id
let uniqueNo = 3;

/*
    在表格中新追加一行
*/
function addRow() {
    $('#table').bootstrapTable('insertRow', {
        // 计算新增加行的index
        index : $('#table').bootstrapTable('getData').length + 1,
        row: {
            // 每增加一行,当前行的id都会 +1
            id : parseInt(uniqueNo) + 1,
            titile1: "",
            titile2: "",
            titile3: "",
            titile4: "",
        }
    });
    
    uniqueNo = uniqueNo + 1;
}

/*
    删除表格中的一行
*/
function removeRow(uniqueId) {
    // 我们为表格中的行指定了唯一的id,因此可以通过该唯一id进行删除
    $('#table').bootstrapTable('removeByUniqueId', uniqueId);
}

/*
    文件上传
*/
function fileChange() {

    // 获取出当前input的DOM对象
    const fileObj = document.getElementById(`file_${index}`);
    // 获取出当前上传的文件对象
    const file = fileObj.files[0];

    // 判断当前文件是否超过5M
    if (file.size > 5242880) {
        fileObj.files[0] = '';
        alert("上传的文件不能超过5M");
        return;
    }
    // 判断当前文件是否为空文件
    if (file.size == 0) {
        fileObj.files[0] = '';
        alert("要上传的文件的内容不能为空");
        return;
    }
    
    // 获取出上传的文件名
    const fileNameWithSuffix = file.name;
    // 获取文件的最后修改时间
    let date = new Date(file.lastModifiedDate);
    // 对最后修改时间进行格式化
    const formatDateStr = date;
    
    // 将上传的文件信息保存到表格的行对象中
    $('#table').bootstrapTable('updateRow', {
        index: index, 
        row: {
            fileData: file,
            fileName: fileNameWithSuffix,
            fileLastUpddateTime: formatDateStr,
        }
    });
}

/*
    获取表格中的所有数据
*/
function getAllDataFromTable() {
    // 获取表格对象中的所有数据
    const tableDataList = $('#table').bootstrapTable('getData');
    console.log(tableDataList);
}

翻页之后,滚动条移至顶部

// 监听表格的翻页事件
$('#表格对象ID').on('page-change.bs.table', function (e, number, size) {
     window.scrollTo(0,0);
});
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值