BootstrapTable(附源碼)


Bootstrap結合BootstrapTable的使用,分為兩種模試顯示列表。

引用的css:

 

 <link href="@Url.Content("~/Css/bootstrap.min.css")" rel="stylesheet" type="text/css" />

  <link href="@Url.Content("~/Css/bootstrap-table.css")" rel="stylesheet" type="text/css" />

引用的JS:

<script src="../../Scripts/jquery.js" type="text/javascript"></script>

<script src="../../Scripts/bootstrap.min.js" type="text/javascript"></script>

<script src="../../Scripts/bootstrap-table.js" type="text/javascript"></script>

<script src="../../Scripts/bootstrap-table-zh-CN.js" type="text/javascript"></script>

常用方法:

刷新表格:$table.bootstrapTable('refresh');

獲取選擇的行:$table.bootstrapTable('getSelections');

1.服務端請求:即當數據量大,千百萬條數據的情況下,只獲取當頁條件下的數據。每點擊分頁或查詢都向服務端重新獲取分頁數據。

 

前端代碼:

function initTable() {

            var queryUrl = '@Url.Content("~/Welcome/QueryList")' + '?rnd=' + +Math.random();

            $table = $('#table-javascript').bootstrapTable({

                //method: 'get',

          method: 'post',
          contentType: "application/x-www-form-urlencoded",//必須的,操你大爺!!!!

                url: queryUrl,

                height: $(window).height() - 200,

                striped: true,

                pagination: true,

                singleSelect: false,

                pageSize: 50,

                pageList: [10, 50, 100, 200, 500],

                search: false, //不顯示 搜索框

                showColumns: false, //不顯示下拉框(選擇顯示的列)

                sidePagination: "server", //服務端請求

                queryParams: queryParams,

                minimunCountColumns: 2,

                columns: [{

                    field: 'state',

                    checkbox: true

                }, {

                    field: 'Name',

                    title: '姓名',

                    width: 100,

                    align: 'center',

                    valign: 'middle',

                    sortable: true,

                    formatter: nameFormatter

                }, {

                    field: 'Gender',

                    title: '性別',

                    width: 40,

                    align: 'left',

                    valign: 'top',

                    sortable: true,

                    formatter: sexFormatter,

                    sorter: priceSorter

                }, {

                    field: 'Birthday',

                    title: '出生日期',

                    width: 80,

                    align: 'left',

                    valign: 'top',

                    sortable: true

                }, {

                    field: 'CtfId',

                    title: '身份證',

                    width: 80,

                    align: 'middle',

                    valign: 'top',

                    sortable: true

                }, {

                    field: 'Address',

                    title: '地址',

                    width: 180,

                    align: 'left',

                    valign: 'top',

                    sortable: true

                }, {

                    field: 'Tel',

                    title: '固定電話',

                    width: 100,

                    align: 'left',

                    valign: 'top',

                    sortable: true

                }, {

                    field: 'Mobile',

                    title: '手機號碼',

                    width: 100,

                    align: 'left',

                    valign: 'top',

                    sortable: true

                }, {

                    field: 'operate',

                    title: '操作',

                    width: 100,

                    align: 'center',

                    valign: 'middle',

                    formatter: operateFormatter,

                    events: operateEvents

                }],

                onLoadSuccess:function(){

 

                },

                onLoadError: function () {

                    mif.showErrorMessageBox("數據加載失敗!");

                }

            });

        }

//傳遞的參數

function queryParams(params) {

            return {

                pageSize: params.pageSize,

                pageIndex: params.pageNumber,

                UserName: $("#txtName").val(),

                Birthday: $("#txtBirthday").val(),

                Gender: $("#Gender").val(),

                Address: $("#txtAddress").val(),

                name: params.sortName,

                order: params.sortOrder

            };

        }

  

服務器端代碼:

public ActionResult QueryList(int pageIndex = 1, int pageSize = 100)

        {

            try

            {

                string name = Request["UserName"];

                string birthday = Request["Birthday"];

                string gender = Request["Gender"];

                string Address = Request["Address"];

                Document docQuery = new Document();

                if (!string.IsNullOrEmpty(name))

                {

                    docQuery.Add("Name", new MongoRegex(".*" + name + ".*", MongoRegexOption.IgnoreCase));

                }

                if (!string.IsNullOrEmpty(birthday))

                {

                    docQuery.Add("Birthday", new MongoRegex(".*" + birthday + ".*", MongoRegexOption.IgnoreCase));

                }

                if (!string.IsNullOrEmpty(gender))

                {

                    docQuery.Add("Gender", gender);

                }

                if (!string.IsNullOrEmpty(Address))

                {

                    docQuery.Add("Address", new MongoRegex(".*" + Address + ".*", MongoRegexOption.IgnoreCase));

                }

                if (this.HttpContext.Request.QueryString.AllKeys.Contains("ToExcel"))

                {

                    List<OpenRoom> listExport = MongoDbHelper.GetList<OpenRoom>(MongoTables.OpenRoom, docQuery);

                    //List<string> listTilte = new List<string> { "" };

                    ExportMethod(listExport);

                }

                long totalCount = MongoDbHelper.GetTotalCount<OpenRoom>(MongoTables.OpenRoom, docQuery);

                var list = MongoDbHelper.GetList<OpenRoom>(MongoTables.OpenRoom, docQuery, new Document(), pageIndex, pageSize);

                string jsonString = JsonHelper.ObjToJson(list);

                jsonString = "{\"total\":" + totalCount.ToString() + ",\"rows\":" + jsonString + "}";

                return Content(jsonString);

            }

            catch (Exception ex)

            {

                return Content(ex.Message);

            }

 

        }

  

注意返回的格式:要返回總記錄數total及分頁后數據rows。

未解決問題:導出Excel時,超出65536行數據時,會異常。怎樣解決這個問題?

2.客戶端請求:當數據量較少,只有上千條數據時,一次性將所有數據返回給客戶端,無論點下一頁,或搜索條件時,不向服務端發請求,實現全文檢索。

這個比較簡單,將sidePagination屬性設為 "client",因為客戶端會處理分頁和全文檢索,無需向服務器端發請求,所以也無需傳遞參數。

 

前端JS:

function initTable() {

            var queryUrl = '@Url.Content("~/UserInfo/QueryList")' + '?rnd=' + +Math.random();

            $table = $('#table-javascript').bootstrapTable({

                method: 'get',

                url: queryUrl,

                height: $(window).height() - 200,

                striped: true,

                pagination: true,

                pageSize: 50,

                pageList: [10, 25, 50, 100, 200],

                search: true,

                sidePagination: "client",

                showColumns: true,

                minimunCountColumns: 2,

                columns: [{

                    field: 'state',

                    radio: true

                }, {

                    field: 'Id',

                    title: 'ID',

                    align: 'right',

                    valign: 'bottom',

                    sortable: true

                }, {

                    field: 'UserName',

                    title: '姓名',

                    width: 100,

                    align: 'center',

                    valign: 'middle',

                    sortable: true,

                    formatter: nameFormatter

                }, {

                    field: 'Account',

                    title: '賬號',

                    align: 'left',

                    valign: 'top',

                    sortable: true

                }, {

                    field: 'Address',

                    title: '家鄉',

                    align: 'middle',

                    valign: 'top',

                    sortable: true

                }, {

                    field: 'Phone',

                    title: '電話',

                    align: 'left',

                    valign: 'top',

                    sortable: true

                }, {

                    field: 'QQ',

                    title: 'QQ號碼',

                    align: 'left',

                    valign: 'top',

                    sortable: true

                }, {

                    field: 'Remark',

                    title: '備注',

                    align: 'left',

                    valign: 'top',

                    sortable: true

                }, {

                    field: 'operate',

                    title: '操作',

                    align: 'center',

                    width: 100,

                    valign: 'middle',

                    formatter: operateFormatter,

                    events: operateEvents

                }]

            });

        }

  

后台直接返回Json數據即可。

后台代碼:

public ActionResult QueryList()

        {

            try

            {

                List<sys_user> list = accessHelper.GetUserList();

                string jsonString = JsonHelper.ObjToJson(list);

                return Content(jsonString);

            }

            catch (Exception ex)

            {

                return Content(ex.Message);

            }

 

        }

  

源碼下載


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM