C# Bootstrap table之 分页

效果如图:

 

一、声明talbe

  <div class="container">
        <table id="table" class="table table-bordered">
        </table>
    </div>

二、JS绑定Table值

           当前使用的是服务端分页  sidePagination: "server"  。根据数据库的查询结果绑定table数据每次只查询当前显示的行,适合数据量大的程序;还有一种是客户端分页,是一次性查询出所有的内容,然后再分页,客户端分页的模式适合数据量小的程序。client模式的分页还没研究,这里就不演示了。

    <script type="text/jscript">
        $(function () {
            $('#table').bootstrapTable({
                //请求方法
                method: 'get',
                //是否显示行间隔色
                striped: true,
                //是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*)     
                cache: false,
                //是否显示分页(*)  
                pagination: true,
                //是否启用排序  
                sortable: true,
                //排序方式 
                sortOrder: "asc",
                //初始化加载第一页,默认第一页
                pageNumber: 1,
                //每页的记录行数(*)   
                pageSize: 10,
                //可供选择的每页的行数(*)    
                pageList: [10, 20, 30, 40],
                //这个接口需要处理bootstrap table传递的固定参数,并返回特定格式的json数据  
                url: "jgdx.ashx?action=GetJson",
                //默认值为 'limit',传给服务端的参数为:limit, offset, search, sort, order Else
                //queryParamsType:'',   
                //查询参数,每次调用是会带上这个参数,可自定义                         
                queryParams: function (params) {
                    return {
                        rows: params.limit,                         //页面大小
                        page: (params.offset / params.limit) + 1,   //页码
                        sort: params.sort,      //排序列名  
                        sortOrder: params.order //排位命令(desc,asc) 
                    };
                },
                //分页方式:client客户端分页,server服务端分页(*)
                sidePagination: "server",
                //是否显示搜索
                search: false,
                strictSearch: true,
                idField: "id",
                columns: [{
                    field: 'rownum',
                    title: '序号',
                    align: 'center'
                }, {
                    field: 'dm',
                    title: '代码',
                    align: 'center'
                }, {
                    field: 'xm',
                    title: '姓名',
                    align: 'center'
                }, {
                    field: 'xb',
                    title: '性别',
                    align: 'center'
                },{
                    field: 'mid',
                    title: '操作',
                    align: 'center',
                    formatter: function (value, row, index) {
                        //通过formatter可以自定义列显示的内容
                        //value:当前field的值,即id
                        //row:当前行的数据
                        var a = '<a href="#" >编辑</a>&nbsp;&nbsp;';
                        var b = '<a href="#" >删除</a>';
                        return a + b;
                    }
                }, {
                    checkbox: true,
                    visible: true //是否显示复选框  
                }],
                pagination: true
            });
        });  
    </script>

三、后台代码:分页需要加上total和row属性,另外需要获取前台传入的rows和page值,来查询需要的行数。

        string sql = "";
        DataSet ds = new DataSet();
        public void ProcessRequest(HttpContext context)
        {
            string output = "";
            string action = context.Request["action"].ToString();switch (action)
            {
                case "GetJson":
                    DataTable dt = getData(context);
                    string str = DataTableToJsonWithStringBuilder(dt);
                    output = "{\"total\":" + getCout(context) + ",\"rows\":" + str + "}";
                    break;default:
                    break;
            }

            context.Response.ContentType = "text/plain";
            context.Response.Write(output);
        }public string GetJson(HttpContext context)
        {
            DataTable dt = getData(context);
            return DataTableToJsonWithStringBuilder(dt);
        }
        public DataTable getData(HttpContext context)
        {
            int rows = Convert.ToInt32(context.Request["rows"]);//显示行数
            int page = Convert.ToInt32(context.Request["page"]);//页码
            int starNum = rows * page - rows + 1;//开始行数
            int endNum = rows * page;//结束行数
            string sql = "select * from (select row_number() over(order by @@servername) as rownum,* from yhgl)a where rownum between " + starNum + " and " + endNum + "";
            DataSet ds = pub.GetDataset(sql, "xinxi");
            return ds.Tables["xinxi"];
        }
        public int getCout(HttpContext context)
        {
            string sql = "select count(*) count  from yhgl";
            DataSet ds = pub.GetDataset(sql, "xinxi");
            return Convert.ToInt32(ds.Tables["xinxi"].Rows[0]["count"]);
        }
        public string DataTableToJsonWithStringBuilder(DataTable table)
        {
            var jsonString = new StringBuilder();
            if (table.Rows.Count > 0)
            {
                jsonString.Append("[");
                for (int i = 0; i < table.Rows.Count; i++)
                {
                    jsonString.Append("{");
                    for (int j = 0; j < table.Columns.Count; j++)
                    {
                        if (j < table.Columns.Count - 1)
                        {
                            jsonString.Append("\"" + table.Columns[j].ColumnName.ToString()
                         + "\":" + "\""
                         + table.Rows[i][j].ToString() + "\",");
                        }
                        else if (j == table.Columns.Count - 1)
                        {
                            jsonString.Append("\"" + table.Columns[j].ColumnName.ToString()
                         + "\":" + "\""
                         + table.Rows[i][j].ToString() + "\"");
                        }
                    }
                    if (i == table.Rows.Count - 1)
                    {
                        jsonString.Append("}");
                    }
                    else
                    {
                        jsonString.Append("},");
                    }
                }
                jsonString.Append("]");
            }
            return jsonString.ToString();
        }

 

posted @ 2017-11-25 15:38  高空燕子飞过  阅读(3426)  评论(0编辑  收藏  举报