zoukankan      html  css  js  c++  java
  • BootStrap的表格加载json数据,并且可以搜索,选择

      2018.4.11日更新,8号的时候我推荐去官网下载,但是那个版本不知道为什么我无法使用 $table.bootstrapTable('getSelections'); 无论如何。。。然后我尝试着更换了NuGet里面的bootstrap-table,然后就可以了.....需要一题的是,Nuget里面有两个bootstrap-table,只需要下载那个MVC的就可以了,第一个没卵用.....

      2018.4.8日更新,NuGet里面的bootstrap-table插件版本太低了,所以可以去官网下载,但是下载好的里面有两个文件夹,一个是src,一个是dist,这两个里面都有js,都有css,但是这里需要注意的是,只能引用src文件夹下面的才可以用!

      2018.3.30日更新,我使用我的这篇博客在我的笔记本上想实现这个功能,但是完全没有用,进不去bootstrapTable这个方法,而且完全不知道哪里错了,然后在我的乱搞之下。。。成功了。。。

    注意

    <script src="~/Scripts/bootstrap-table.js"></script>    错误
    <script src="~/Scripts/bootstrap-table/bootstrap-table.js"></script>    正确

    这两个js是完全不一样的,上面那个没有用的,只有下面的那个才有用。。。。原因是因为我在NuGet里面下载了两个bootstrap-table,带MVC的那个可以用,第一个不能用,所以引用也是错误的。

      我会了EasyUI的方法,但是这个Bootstrap的一直不会,看了下某个项目里的实现方式,居然是读出数据然后循环加<td>。。。。

    我又在网上搜索其它的方法,毫无例外的提到了bootstrapTable这个方法,这个方法分为客户端和服务器两种方式,暂时我还不清楚两种方式之间的区别,待研究。

    第一步:引用

    @*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上找官方示例,我暂且搁置。

    方法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格式的,完事。

    效果图:

     

  • 相关阅读:
    搜索旋转排序数组
    SpringBoot整合mybatis
    《浪潮之巅》阅读笔记01
    阅读杂记01
    go home or stand up
    关于URL编码/javascript/js url 编码(轉)
    水晶报表 相关。
    Format函数(转)
    asp 亂碼問題。
    圣人不死,大盗不止
  • 原文地址:https://www.cnblogs.com/yunquan/p/8664767.html
Copyright © 2011-2022 走看看