一般在利用Bootstrap-Table显示后台数据时,我们往往会在表格的最后一列添加操作按钮,以便对某条数据进行修改和删除操作,如下图所示:

Bootstrap-Table表格内添加操作按钮的实现方法_bootstrap


当点击编辑按钮时,界面会弹出模态框供用户操作,点击修改后表格自动刷新,如下图所示:

Bootstrap-Table表格内添加操作按钮的实现方法_System_02

测试数据

Bootstrap-Table表格内添加操作按钮的实现方法_sql_03

前端代码

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title>Bootstrap Table</title>
    <link href="lib/bootstrap/css/bootstrap.min.css" rel="stylesheet" />
    <link href="lib/bootstrap-table/bootstrap-table.min.css" rel="stylesheet" />
    <script src="lib/bootstrap/js/jquery-1.9.1.min.js"></script>
    <script src="lib/bootstrap/js/bootstrap.min.js"></script>
    <script src="lib/bootstrap-table/bootstrap-table.min.js"></script>
    <script src="lib/bootstrap-table/locale/bootstrap-table-zh-CN.min.js"></script>
</head>
<body>
    <div style="margin:100px auto;width:1000px;">
        <table id="table"></table>
    </div>

    <div class="modal fade" id="editModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
        <div class="modal-dialog">
            <div class="modal-content">
                <div class="modal-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">
                    <div class="form-group">
                        <label for="id">编号</label>
                        <input id="id" type="text" class="form-control" disabled />
                    </div>
                    <div class="form-group">
                        <label for="name">姓名</label>
                        <input id="name" type="text" class="form-control" />
                    </div>
                    <div class="form-group">
                        <label for="gender">性别</label>
                        <select id="gender" class="form-control">
                            <option value="男">男</option>
                            <option value="女">女</option>
                        </select>
                    </div>
                    <div class="form-group">
                        <label for="age">年龄</label>
                        <input id="age" type="text" class="form-control" />
                    </div>
                </div>
                <div class="modal-footer">
                    <button type="button" class="btn btn-default" data-dismiss="modal">关闭</button>
                    <button type="button" class="btn btn-primary" onclick="editInfo()">修改</button>
                </div>
            </div>
        </div>
    </div>

    <script>
        $('#table').bootstrapTable({
            url: "ashx/QueryHandler.ashx",                         // URL
            method: "post",                                        // 请求类型
            contentType: "application/x-www-form-urlencoded",      // post请求必须要有,否则后台接受不到参数
            sidePagination: "server",                              // 设置在服务端还是客户端分页
            showRefresh: false,                                    // 是否刷新按钮
            sortStable: true,                                      // 是否支持排序
            cache: false,                                          // 是否使用缓存
            pagination: true,                                      // 是否显示分页
            search: false,                                         // 是否有搜索框
            clickToSelect: true,                                   // 是否点击选中行
            pageNumber: 1,                                         // 首页页码,默认为1
            pageSize: 5,                                           // 页面数据条数
            pageList: [5, 10, 20, 30],
            queryParamsType: "",
            queryParams: function (params) {
                return {
                    pageSize: params.pageSize,                     // 每页记录条数
                    pageNumber: params.pageNumber,                 // 当前页索引
                };
            },
            columns: [{
                field: 'Id',
                title: '编号',
                align: "center",
                halign: "center",
                valign: 'middle',
                sortable: true
            },
            {
                field: 'Name',
                title: '姓名',
                align: "center",
                halign: "center",
                valign: 'middle'
            },
            {
                field: 'Gender',
                title: '性别',
                align: "center",
                halign: "center",
                valign: 'middle'
            },
            {
                field: 'Age',
                title: '年龄',
                align: "center",
                halign: "center",
                valign: 'middle'
            },
            {
                field: 'operate',
                title: '操作',
                align: 'center',
                valign: 'middle',
                width: 200,
                events: {
                    'click #edit': function (e, value, row, index) {
                        $('#id').val(row.Id);
                        $('#name').val(row.Name);
                        $('#gender').val(row.Gender);
                        $('#age').val(row.Age);
                    },
                    'click #delete': function (e, value, row, index) {
                        deleteInfo(row.Id);
                    }
                },
                formatter: function (value, row, index) {
                    var result = "";
                    result += '<button id="edit" class="btn btn-info" data-toggle="modal" data-target="#editModal">编辑</button>';
                    result += '<button id="delete" class="btn btn-danger" style="margin-left:10px;">删除</button>';
                    return result;
                }
            }]
        })

        // 修改信息
        function editInfo() {
            $.ajax({
                type: 'post',
                url: 'ashx/EditHandler.ashx',
                dataType: 'json',
                data: {
                    id: $('#id').val(),
                    name: $('#name').val(),
                    gender: $('#gender').val(),
                    age: $('#age').val()
                },
                success: function (data) {
                    if (data == 'Yes') {
                        $('#table').bootstrapTable('refresh');
                        $('#editModal').modal('hide');
                    }
                    else {
                        alert('修改失败');
                    }
                }
            })
        }

        // 删除信息
        function deleteInfo(id) {
            $.ajax({
                type: 'post',
                url: 'ashx/DeleteHandler.ashx',
                dataType: 'json',
                data: {
                    id: id
                },
                success: function (data) {
                    if (data == 'Yes') {
                        $('#table').bootstrapTable('refresh');
                    }
                    else {
                        alert('删除失败');
                    }
                }
            })
        }
    </script>
</body>
</html>

后台查询代码

using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Web;
using Newtonsoft.Json;

namespace WebApplication2.ashx
{
    /// <summary>
    /// TestHandler 的摘要说明
    /// </summary>
    public class QueryHandler : IHttpHandler
    {
        private static string ConnectionString = ConfigurationManager.ConnectionStrings["ConnectionString"].ToString();

        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/plain";

            // 获取分页参数
            int pageSize = int.Parse(context.Request["pageSize"].ToString());
            int pageNumber = int.Parse(context.Request["pageNumber"].ToString());

            // 查询数据
            int total = GetCount();
            DataTable dataTable = GetDataTable(pageSize, pageNumber);

            // 格式化数据
            var data = new { total = total, rows = dataTable };
            context.Response.Write(JsonConvert.SerializeObject(data));
        }

        public bool IsReusable
        {
            get
            {
                return false;
            }
        }

        // 数获取数量
        private int GetCount()
        {
            string sql = "select count(*) from [TPerson]";
            using (SqlConnection connection = new SqlConnection(ConnectionString))
            {
                SqlCommand command = new SqlCommand(sql, connection);
                try
                {
                    connection.Open();
                    return Convert.ToInt32(command.ExecuteScalar());
                }
                catch
                {
                    return -1;
                }
            }
        }

        // 分页查询
        private DataTable GetDataTable(int pageSize, int pageNumber)
        {
            string sql = "select * from(select row_number() over(order by Id) as RowId, *from [TPerson]) as b where b.Id between (@pageNumber - 1) * @pageSize + 1 and @pageNumber * @pageSize order by Id";
            using (SqlDataAdapter adapter = new SqlDataAdapter(sql.ToString(), ConnectionString))
            {
                SqlParameter[] parameters =
                {
                    new SqlParameter("@pageSize", pageSize),
                    new SqlParameter("@pageNumber", pageNumber)
                };
                
                DataTable dataTable = new DataTable();
                adapter.SelectCommand.Parameters.AddRange(parameters.ToArray());
                adapter.Fill(dataTable);
                return dataTable;
            }
        }
    }
}

后台编辑代码

using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Web;
using Newtonsoft.Json;

namespace WebApplication2.ashx
{
    /// <summary>
    /// QueryHandler 的摘要说明
    /// </summary>
    public class EditHandler : IHttpHandler
    {

        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/plain";

            // 获取参数
            int id = int.Parse(context.Request["id"].ToString());
            string name = context.Request["name"].ToString();
            string gender = context.Request["gender"].ToString();
            int age = int.Parse(context.Request["age"].ToString());

            // 查询参数
            SqlParameter[] parameters =
            {
                new SqlParameter("@Id", id),
                new SqlParameter("@Name", name),
                new SqlParameter("@Gender", gender),
                new SqlParameter("@Age", age)
            };

            // 修改信息
            using (SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ToString()))
            {
                SqlCommand command = new SqlCommand();
                command.Connection = connection;
                command.CommandText = "update [TPerson] set Name=@Name,Gender=@Gender,Age=@Age where Id=@Id";
                command.Parameters.AddRange(parameters);
                try
                {
                    connection.Open();
                    command.ExecuteNonQuery();
                    context.Response.Write(JsonConvert.SerializeObject("Yes"));
                }
                catch
                {
                    context.Response.Write(JsonConvert.SerializeObject("No"));
                }
            }
        }

        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
}

后台删除代码

using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Web;
using Newtonsoft.Json;

namespace WebApplication2.ashx
{
    /// <summary>
    /// DeleteHandler 的摘要说明
    /// </summary>
    public class DeleteHandler : IHttpHandler
    {

        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/plain";

            // 获取参数
            int id = int.Parse(context.Request["id"].ToString());

            // 删除信息
            using (SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ToString()))
            {
                SqlCommand command = new SqlCommand();
                command.Connection = connection;
                command.CommandText = "delete from [TPerson] where Id=@Id";
                command.Parameters.Add(new SqlParameter("@Id", id));
                try
                {
                    connection.Open();
                    command.ExecuteNonQuery();
                    context.Response.Write(JsonConvert.SerializeObject("Yes"));
                }
                catch
                {
                    context.Response.Write(JsonConvert.SerializeObject("No"));
                }
            }
        }

        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
}

大功告成!