文章内容

C# MVC bootstrap使用table篇(一)

  • 2018-08-09 02:06:04
  • 401
  • 0
  • 0

原文博客 https://www.cnblogs.com/landeanfen/p/4976838.html

1. 引用Css,JS

本章节引用的是bootstrap-3.3.7-dist版本。

<link href="~/Public/plugins/bootstrap-3.3.7-dist/css/bootstrap.min.css" rel="stylesheet" />

<link href="~/Public/plugins/bootstrap-3.3.7-dist/dist/bootstrap-table.min.css" rel="stylesheet" />

<script src="~/Public/plugins/jquery/jquery-2.1.4.min.js"></script>

<script src="~/Public/plugins/bootstrap-3.3.7-dist/dist/bootstrap-table.min.js"></script>

<script src="~/Public/plugins/bootstrap-3.3.7-dist/dist/locale/bootstrap-table-zh-CN.js"></script>

 2. html

<div class="panel-body" style="padding-bottom:0px;">
    <div class="panel panel-default">
        <div class="panel-heading">查询条件</div>
        <div class="panel-body">
            <form id="formSearch" class="form-horizontal">
                <div class="form-group" style="margin-top:15px">
                    <label class="control-label col-sm-1" for="txt_search_departmentname">部门名称</label>
                    <div class="col-sm-3">
                        <input type="text" class="form-control" id="txt_search_departmentname">
                    </div>
                    <label class="control-label col-sm-1" for="txt_search_statu">状态</label>
                    <div class="col-sm-3">
                        <input type="text" class="form-control" id="txt_search_statu">
                    </div>
                    <div class="col-sm-4" style="text-align:left;">
                        <button type="button" id="btn_query" class="btn btn-primary">查询</button>
                    </div>
                </div>
            </form>
        </div>
    </div>

    <div id="toolbar" class="btn-group">
        <button id="btn_add" type="button" class="btn btn-default">
            <span class="glyphicon glyphicon-plus" aria-hidden="true"></span>新增
        </button>
        <button id="btn_edit" type="button" class="btn btn-default">
            <span class="glyphicon glyphicon-pencil" aria-hidden="true"></span>修改
        </button>
        <button id="btn_delete" type="button" class="btn btn-default">
            <span class="glyphicon glyphicon-remove" aria-hidden="true"></span>删除
        </button>
    </div>
    <table id="tb_departments"></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 () {
            $('#tb_departments').bootstrapTable({
                url: '/default/agvtasklist_post',         //请求后台的URL(*)
                method: 'post',                      //请求方式(*)
                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: [10, 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: [{
                    checkbox: true
                }, {
                    field: 'taskid',
                    title: '任务号'
                }, {
                    field: 'taskno',
                    title: '任务批次'
                }, {
                    field: 'StationFrom',
                    title: '物料起点'
                }, {
                    field: 'StationTo',
                    title: '物料终点'
                }, {
                    field: 'GoodzType',
                    title: '物料类型'
                }, {
                    field: 'AbnormalMessage',
                    title: '异常'
                }, {
                    field: 'ctime',
                    title: '创建时间'
                }, {
                    field: 'cusername',
                    title: '创建人'
                }, {
                    field: 'executantname',
                    title: '执行人'
                }]
            });
        };

        //得到查询的参数
        oTableInit.queryParams = function (params) {
            var temp = {   //这里的键的名字和控制器的变量名必须一直,这边改动,控制器也需要改成一样的
                limit: params.limit,   //页面大小
                offset: params.offset,  //页码
                departmentname: $("#txt_search_departmentname").val(),
                statu: $("#txt_search_statu").val()
            };
            return temp;
        };
        return oTableInit;
    };


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

        oInit.Init = function () {
            //初始化页面上面的按钮事件
            $("#btn_query").on("click", function () {
                $("#tb_departments").bootstrapTable('refresh');
            })
        };

        return oInit;
    };
</script>

MVC 代码

public JsonResult agvtasklist_post(int limit, int offset)
{
    var list = (from a in agv.agv_tasklist
                        select a).OrderByDescending(b => b.ctime);
    var total  = list.Count();
    var tasklist = list.Skip(offset).Take(limit).ToList();

    IsoDateTimeConverter timeConverter = new IsoDateTimeConverter();
    //这里使用自定义日期格式,如果不使用的话,默认是ISO8601格式 
    //timeConverter.DateTimeFormat = "yyyy'-'MM'-'dd' 'HH':'mm':'ss";
    timeConverter.DateTimeFormat = "yyyy'-'MM'-'dd' 'HH':'mm':'ss";
    return Json(new { total = total, rows = tasklist }, JsonRequestBehavior.AllowGet);
}

image.png

 表格生成了,数据也实现分页了,但是出现了一个让我纠结的问题!

image.png  中间切换按钮没有图标,列表按钮大小又不一样,不解决难受。


解决方法:

  1. 打开bootstrap-table.js  找到 this.options.showToggle

image.png

加入打印console.info(this.options.icons)

发现注释中的

this.options.icons中并没有toggle属性,只有toggleOn 和toggleOff

所以将this.options.icons.toggle修改为this.options.icons.toggleOn或者this.options.icons.toggleOff就正常了


2.找到this.options.showColumns

在代码button属性中加入样式: style="padding:3px 10px;"  

image.png




清除缓存,重新加载后就OK了。


image.png

如果有其他方式解决该问题的大神,请在评论下方留言指导,谢谢!