Bootstrap表格添加搜索栏

在学习了表格的分页后,本文尝试在表格顶部加入搜索栏,用来筛选表格的数据,先看一下效果:

未进行搜索时,有394条记录:

在输入乘车码“1”和订单号“20150120”后,只有28条记录:

此处使用了两个筛选条件:乘车码和订单号进行了模糊查询,从而大大减少了表格的记录数,以达到搜索的目的。

HTML页面代码如下:

<div id="toolbar">
    <div class="my-container">
        <label class="myLabel-content">乘车码:</label>
        <div class="myText-content">
            <input id="busNo" type="text" class="form-control" placeholder="输入乘车码">
        </div>
    </div>
    <div class="my-container">
        <label class="myLabel-content">订单号:</label>
        <div class="myText-content">
            <input id="orderId" type="text" class="form-control" placeholder="输入订单号">
        </div>
    </div>
    <div class="myBtn-content">
        <button id="search" type="button" class="btn btn-primary">搜索</button>
        <button id="reset" type="button" class="btn btn-default">重置</button>
    </div>
</div>
<table id="testTable" data-toggle="table" data-height="530"
       data-striped="true" data-classes="table table-hover" data-toolbar="#toolbar"
       data-side-pagination="server" data-pagination="true" data-page-list="[10,20,50,100]">
    <thead>
        <tr>
            <th class="col-md-3" data-field="BusNo" data-align="center">乘车码</th>
            <th class="col-md-5" data-field="OrderId" data-align="center">订单号</th>
            <th class="col-md-4" data-field="OrderDate" data-align="center" data-formatter="FormatDateTime">订单日期</th>
        </tr>
    </thead>
</table>
View Code

可以注意到:在table中并没有URL,因为在查询的过程中参数可以是变化的,会在JavaScript中对URL做动态的绑定。JavaScript代码如下:

$(function () {
            $('#testTable').bootstrapTable('refresh', { url: '/Home/GetPaginationData2' });
            $('#search').click(function () {
                var busNo = $('#busNo').val();
                var orderId = $('#orderId').val();
                $('#testTable').bootstrapTable('refresh', { url: '/Home/GetPaginationData2?orderId=' + orderId + '&busNo=' +busNo });
            });
            $('#reset').click(function() {
                $('#busNo').val('');
                $('#orderId').val('');
                $('#testTable').bootstrapTable('refresh', { url: '/Home/GetPaginationData2' });
            });
        });
View Code

其中三个函数对表格的URL进行了设定:

  1. 初始化页面时;

  2. 点击“搜索”按钮,对URL添加了两个参数:“orderId”和“busNo”,稍后在后台代码中会对这两个参数进行处理;

  3. 点击“重置”按钮,将清空查询条件,重新查询表格数据。

后台代码如下:

public JsonResult GetPaginationData2(string orderId, string busNo)
        {
            var offset = Request.Params["offset"] == null ? 0 : int.Parse(Request.Params["offset"]);
            var limit = Request.Params["limit"] == null ? 10 : int.Parse(Request.Params["limit"]);

            using (var context = new TestEntities())
            {
                int count;
                var q = (from a in context.Tickets
                    join b in context.Order on a.OrderId equals b.Id
                    select new
                    {
                        BusNo = a.BusNumber,
                        OrderId = b.Id,
                        OrderDate = b.OrderDateTime,
                    }).Where(
                        t => (string.IsNullOrEmpty(orderId) || t.OrderId.Contains(orderId)) &&
                            (string.IsNullOrEmpty(busNo) || t.BusNo.Contains(busNo)))
                    .Distinct()
                    .Pagination(offset, limit, out count);
                var data = q.ToList();
                return Json(new {rows = data, total = count}, JsonRequestBehavior.AllowGet);
            }
        }
View Code

下面是程序中会引用的CSS样式,供参考:

.my-container {
    float: left;
    display: inline-block;
    margin-right:30px;
}

.myLabel-content ,.myText-content,.myBtn-content{
    float: left;
    display: inline-block;
    margin-left: 10px;
}
.myLabel-content,.myText-content input[type='text'],.myBtn-content .btn {
    height: 30px;
    font-size: 12px;
}
.myBtn-content .btn {
    margin-bottom: 10px;
}
View Code

 

posted @ 2015-02-13 16:27  ChirsLee  阅读(12560)  评论(1编辑  收藏  举报