BootStrap的表格加載json數據,而且能夠搜索,選擇

 

  2018.4.11日更新,8號的時候我推薦去官網下載,可是那個版本不知道爲何我沒法使用 $table.bootstrapTable('getSelections'); 不管如何。。。而後我嘗試着更換了NuGet裏面的bootstrap-table,而後就能夠了.....須要一題的是,Nuget裏面有兩個bootstrap-table,只須要下載那個MVC的就能夠了,第一個沒卵用.....css

 

  2018.4.8日更新,NuGet裏面的bootstrap-table插件版本過低了,因此能夠去官網下載,可是下載好的裏面有兩個文件夾,一個是src,一個是dist,這兩個裏面都有js,都有css,可是這裏須要注意的是,只能引用src文件夾下面的才能夠用!html

 

 

  2018.3.30日更新,我使用個人這篇博客在個人筆記本上想實現這個功能,可是徹底沒有用,進不去bootstrapTable這個方法,並且徹底不知道哪裏錯了,而後在個人亂搞之下。。。成功了。。。jquery

注意sql

<script src="~/Scripts/bootstrap-table.js"></script>    錯誤
<script src="~/Scripts/bootstrap-table/bootstrap-table.js"></script>    正確

這兩個js是徹底不同的,上面那個沒有用的,只有下面的那個纔有用。。。。緣由是由於我在NuGet裏面下載了兩個bootstrap-table,帶MVC的那個能夠用,第一個不能用,因此引用也是錯誤的。數據庫

 

 

  我會了EasyUI的方法,可是這個Bootstrap的一直不會,看了下某個項目裏的實現方式,竟然是讀出數據而後循環加<td>。。。。json

我又在網上搜索其它的方法,毫無例外的提到了bootstrapTable這個方法,這個方法分爲客戶端和服務器兩種方式,暫時我還不清楚兩種方式之間的區別,待研究。bootstrap

第一步:引用

@*1、Jquery組件引用*@
<script src="~/Scripts/jquery-3.0.0.js"></script>
@*2、bootstrap組件引用*@
<script src="~/Scripts/bootstrap.js"></script>
<link href="~/Content/bootstrap.css" rel="stylesheet" />

@*3、bootstrap table組件以及中文包的引用*@
<script src="~/Scripts/bootstrap-table/bootstrap-table.js"></script>
<link href="~/Content/bootstrap-table.css" rel="stylesheet" />
<script src="~/Scripts/bootstrap-table/locale/bootstrap-table-zh-CN.min.js"></script>

Bootstrap的表格是須要一個插件的!!! 去NuGet下!緩存

第二步:寫js和html

@{
  
    Layout = "~/Views/Shared/_Layout.cshtml";
}


<div class="panel-body" style="padding-bottom:0px;">
    <div id="toolbar" class="btn-group">
        <button id="btn" type="button" class="btn btn-default">
            <span class="glyphicon glyphicon-plus" aria-hidden="true"></span>選課
        </button>
    </div>
    <table id="table"></table>
</div>



<script>
    $(function () {

        //1.初始化Table
        var oTable = new TableInit();
        oTable.Init();

        //2.初始化Button的點擊事件
        var oButtonInit = new ButtonInit();
        oButtonInit.Init();

    })

    var TableInit = function () {
        var oTableInit = new Object();
        //初始化Table
        oTableInit.Init = function () {
            $('#table').bootstrapTable({
                url: '/SelectCourse/GetCourseTable',            //請求後臺的URL(*)
                method: 'get',            //請求方式(*)
                toolbar: '#toolbar',        //工具按鈕用哪一個容器
                striped: true,                      //是否顯示行間隔色
                cache: false,                       //是否使用緩存,默認爲true,因此通常狀況下須要設置一下這個屬性(*)
                pagination: true,                   //是否顯示分頁(*)
                sortable: false,                     //是否啓用排序
                sortOrder: "asc",                   //排序方式
                queryParams: oTableInit.queryParams,//傳遞參數(*)
                sidePagination: "server",           //分頁方式:client客戶端分頁,server服務端分頁(*)
                pageNumber: 1,                       //初始化加載第一頁,默認第一頁
                pageSize: 10,                       //每頁的記錄行數(*)
                pageList: [5, 25, 50, 100],        //可供選擇的每頁的行數(*)
                search: true,                       //是否顯示錶格搜索,此搜索是客戶端搜索,不會進服務端,因此,我的感受意義不大
                strictSearch: true,
                showColumns: true,                  //是否顯示全部的列
                showRefresh: true,                  //是否顯示刷新按鈕
                minimumCountColumns: 2,             //最少容許的列數
                clickToSelect: true,                //是否啓用點擊選中行
                height: 500,                        //行高,若是沒有設置height屬性,表格自動根據記錄條數以爲表格高度
                uniqueId: "ID",                     //每一行的惟一標識,通常爲主鍵列
                showToggle: true,                    //是否顯示詳細視圖和列表視圖的切換按鈕
                cardView: false,                    //是否顯示詳細視圖
                detailView: false,                   //是否顯示父子表
                columns: [{
                    fileid: 'state', checkbox: true, formatter: function (value, row, index) {   //加複選框 //if (index === 2) {
                        //    return {
                        //        disabled: true,
                        //        checked: true
                        //    }
                        //}
                        console.info(value);
                        return value;
                    }
                }, {
                    field: '課程編號',
                    title: '課程編號',
                }, {
                    field: '課程名',
                    title: '課程名'
                }, {
                    field: '授課老師',
                    title: '授課老師'
                }, {
                    field: '上課地點',
                    title: '上課地點'
                }, {
                    field: '上課時間',
                    title: '上課時間'
                }, {
                    field: '課程介紹',
                    title: '課程介紹'
                }]
            });
        };
        oTableInit.queryParams = function (params) {
            var temp = {   //這裏的鍵的名字和控制器的變量名必須一直,這邊改動,控制器也須要改爲同樣的
                //limit: params.limit,   //頁面大小
                //offset: params.offset,  //頁碼
                departmentname: $("#txt_search_Coursename").val(),
                statu: $("#txt_search_Teacher").val(),
                search: params.search       //加了這個,就可使用自帶的搜索功能了
            };
            return temp;
        };
        return oTableInit;
    };

    var ButtonInit = function () {
        var oInit = new Object();
        var postdata = {};

        oInit.Init = function () {
            //初始化頁面上面的按鈕事件
        };

        return oInit;
    };

    $('#table').on('click-row.bs.table', function (e, row, $element) {
        $('.success').removeClass('success');
        $($element).addClass('success');
    });

    var $table = $('#table'),   //可寫可不寫
        $button = $('#btn');

    $button.click(function () {      //由於這個,你能夠編輯表格了! var result = $table.bootstrapTable('getSelections');
        alert('getSelections: ' + JSON.stringify($table.bootstrapTable('getSelections')));
        var ids = [];
        for (var i = 0; i < result.length; i++) {

            var item = result[i];
            //ids.push(item.授課老師);
        }
        alert(ids);
    })


</script>

 

第三步:寫ActionResult

方法1.寫死json字符串,這個能夠做爲測試,實際項目都是從json文本或數據庫取得數據服務器

    public ActionResult list()
        {
            string json = "{\"total\":2,\"rows\":[{\"id\":\"1\",\"name\":\"Vae\",\"time\":\"2017\",\"state\":\"0\"},{\"id\":\"2\",\"name\":\"蜀雲泉\",\"time\":\"2017\",\"state\":\"很好\"}]}";
            return Content(json);
        }

這裏須要注意,要total和rows這兩個東東,並且這個貌似是服務器端特有的,客戶端沒有total,具體的東西要去GitHub上找官方示例,我暫且擱置。ide

 

方法2.從數據庫取數據

     public ActionResult GetCourseTable(string departmentname, string statu, string search)
        {
            if (search !="")
            {
                sql = $"select* from Course where 課程名 like '%{search}%' or 授課老師 like '%{search}%'";
            } 


            DataTable dt= sqlHelper.SqlConnectionInformation(sql);

            var rows = JsonConvert.SerializeObject(dt);
   
            string json = $"{{\"total\":{dt.Rows.Count},\"rows\":{rows}}}";

            return Content(json);
        }

參數那裏,寫了search,就能夠用自帶的功能了,你只須要寫個sql就好了,而後取數據存入DataTable,而後JsonConvert序列化成json格式的,完事。

 

 

效果圖:

 

 

相關文章
相關標籤/搜索