## Bootstrap Table与数据库的交互
### 一、引言
在Web开发中,数据表格是展示数据的重要工具,Bootstrap Table是一个基于Bootstrap风格的jQuery插件,它提供了丰富的功能和易于使用的接口,使得开发者能够快速构建出美观且功能强大的数据表格,仅仅使用Bootstrap Table来展示数据往往是不够的,我们还需要能够对数据进行修改、添加和删除等操作,这就需要与后端数据库进行交互,本文将详细介绍如何使用Bootstrap Table与数据库进行交互,包括数据的增删改查等操作。
### 二、准备工作
#### 1. 引入必要的库
在使用Bootstrap Table之前,我们需要先引入jQuery、Bootstrap以及Bootstrap Table的CSS和JS文件,可以通过CDN方式引入,也可以下载到本地后引入。
```html
```
#### 2. 创建HTML结构
我们需要一个容器来放置Bootstrap Table,并为其设置一个ID,以便在JavaScript中进行操作。
```html
ID | Name | Age | Birthday | Action |
---|
```
### 三、与数据库交互
#### 1. 获取数据(GET)
当页面加载时,Bootstrap Table会自动发送HTTP GET请求到`data-url`属性指定的地址(/api/data`),获取数据并填充到表格中,假设后端API返回的数据格式如下:
```json
{
"id": 1,
"name": "John Doe",
"age": 30,
"birthday": "1990-01-01"
},
{
"id": 2,
"name": "Jane Smith",
"age": 25,
"birthday": "1995-06-15"
}
```
#### 2. 添加数据(POST)
为了添加新数据,我们需要自定义一个按钮或输入框来提交新数据,以下是一个简单的示例,展示如何通过表单添加新数据:
```html
$('#addButton').click(function() {
var newData = {
name: 'New User',
age: 20,
birthday: '2000-01-01'
};
$.ajax({
url: '/api/data',
method: 'POST',
contentType: 'application/json',
data: JSON.stringify(newData),
success: function(response) {
$('#table').bootstrapTable('refresh'); // 刷新表格
},
error: function(xhr, status, error) {
console.error('Error adding new data:', error);
}
});
});
```
#### 3. 修改数据(PUT)
修改数据通常需要选中一行,然后点击编辑按钮,我们可以使用`operateFormatter`来自定义操作列,包括编辑按钮,以下是一个示例:
```javascript
function operateFormatter(value, row, index) {
return `
`;
window.operateEvents = {
'click .edit': function (event, value, row, index) {
// 弹出模态框进行编辑
$('#editModal').modal('show');
// 填充模态框中的输入框
$('#editModal #id').val(row.id);
$('#editModal #name').val(row.name);
$('#editModal #age').val(row.age);
$('#editModal #birthday').val(row.birthday);
// 保存当前行数据到模态框中,以便后续提交修改
$('#editModal').data('row', row);
}
};
```
编辑模态框的HTML和JavaScript代码如下:
```html
```
```javascript
$('#saveButton').click(function() {
var row = $('#editModal').data('row');
row.name = $('#editModal #name').val();
row.age = $('#editModal #age').val();
row.birthday = $('#editModal #birthday').val();
$.ajax({
url: '/api/data/' + row.id,
method: 'PUT',
contentType: 'application/json',
data: JSON.stringify(row),
success: function(response) {
$('#editModal').modal('hide');
$('#table').bootstrapTable('refresh'); // 刷新表格
},
error: function(xhr, status, error) {
console.error('Error updating data:', error);
}
});
});
```
#### 4. 删除数据(DELETE)
删除数据同样可以通过自定义的操作列来实现,以下是一个完整的示例:
```javascript
function operateFormatter(value, row, index) {
return `
`;
window.operateEvents = {
'click .edit': function (event, value, row, index) {
$('#editModal').modal('show');
$('#editModal #id').val(row.id);
$('#editModal #name').val(row.name);
$('#editModal #age').val(row.age);
$('#editModal #birthday').val(row.birthday);
$('#editModal').data('row', row);
},
'click .remove': function (event, value, row, index) {
if (confirm('Are you sure you want to delete this record?')) {
$.ajax({
url: '/api/data/' + row.id,
method: 'DELETE',
contentType: 'application/json',
success: function(response) {
$('#table').bootstrapTable('remove', { field: 'id', values: [row.id] }); // 从表格中移除该行
},
error: function(xhr, status, error) {
console.error('Error deleting data:', error);
}
});
}
}
};
```
### 四、完整示例代码整合
以下是上述所有步骤的完整整合代码:
```html
ID | Name | Age | Birthday | Action |
---|
$(function() {
// Add button click event to add new data
$('#addButton').click(function() {
var newData = {
name: 'New User',
age: 20,
birthday: '2000-01-01'
};
$.ajax({
url: '/api/data',
method: 'post',
contentType: 'application/json',
data: JSON.stringify(newData),
success: function(response) {
$('#table').bootstrapTable('refresh'); // refresh the table
},
error: function(xhr, status, error) {
console.error('Error adding new data:', error);
}
});
});
// Date formatter function for birthday column
function dateFormatter(value) {
return moment(value).format('YYYY-MM-DD'); // format the date as desired format
}
// Operate formatter function to include edit and delete buttons in each row
function operateFormatter(value, row, index) {
return `
}
// Operate events for edit and delete buttons
window.operateEvents = {
'click .edit': function (event, value, row, index) {
$('#editModal').modal('show'); // pop up modal for editing
$('#editModal #id').val(row.id); // fill in the input fields with current row data
$('#editModal #name').val(row.name);
$('#editModal #age').val(row.age);
$('#editModal #birthday').val(row.birthday);
// save current row data to modal for later submission
$('#editModal').data('row', row);
},
'click .remove': function (event, value, row, index) {
if (confirm('Are you sure you want to delete this record?')) {
$.ajax({
url: '/api/data/' + row.id, // API endpoint to delete a record by ID
method: 'DELETE', // HTTP method to use
contentType: 'application/json', // type of data being sent
success: function(response) {
$('#table').bootstrapTable('remove', { field: 'id', values: [row.id] }); // remove the row from the table
},
error: function(xhr, status, error) {
console.error('Error deleting data:', error);
}
});
}
}
};
$('#saveButton').click(function() {
var row = $('#editModal').data('row'); // get the current row data from modal
row.name = $('#editModal #name').val(); // update name
row.age = parseInt($('#editModal #age').val()); // update age
row.birthday = parseDate($('#editModal #birthday').val()); // update birthday
$.ajax({
url: '/api/data/' + row.id, // API endpoint to update a record by ID
method: 'put', // HTTP method to use
contentType: 'application/json', // type of data being sent
data: JSON.stringify(row), // send updated row data
success: function(response) {
$('#editModal').modal('hide'); // hide the modal
$('#table').bootstrapTable('refresh'); // refresh the table
},
error: function(xhr, status, error) {
console.error('Error updating data:', error);
}
});
});
// Function to parse date string into Date object (assuming the date string is in ISO format)
function parseDate(dateString) {
return moment(dateString, 'YYYY-MM-DD').toDate();
}
});
```
各位小伙伴们,我刚刚为大家分享了有关“bootstrap table 修改数据库”的知识,希望对你们有所帮助。如果您还有其他相关问题需要解决,欢迎随时提出哦!
原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/698239.html