javascript 实现datagrid

来源:互联网 发布:吴碧霞 知乎 编辑:程序博客网 时间:2024/05/21 08:57

1、本文主要是实现datagrid,分页采取的jQuery.pagination.js,首先我们需要引入jQuery与jQuery.pagination.js,然后实现datagrid,代码如下:

/** 扩展jQuery方法:* @author doubleicon* @url http://blog.csdn.net/u011872945 * @name datagrid.js* @since 2014/6/17*/(function ($) {    $.fn.datagrid = function (data, parameter) {        var _columnCount = 0;        var _iconWidth = 32;        var _iconHeight = 32;        var field_array = new Array();        var title_array = new Array();        var width_array = new Array();        var align_array = new Array();        var toolbar_width = 0;        for (var i = 0; i < parameter.columns.length; i++) {            _columnCount++;            field_array[i] = parameter.columns[i].field;            title_array[i] = parameter.columns[i].title || "";            width_array[i] = parameter.columns[i].width || 100;            align_array[i] = parameter.columns[i].align || "left";        }        var sbBuilder = new Array();        for (var i = 0; i < parameter.toolbar.length; i++) {            var width = parameter.toolbar[i].width || 100;            toolbar_width += width;        }        sbBuilder = sbBuilder.concat("<table> ");        sbBuilder = sbBuilder.concat("<tr>");        if (parameter.toolbar.length > 0) {            sbBuilder = sbBuilder.concat("<td style='width:" + toolbar_width + "px;background: linear-gradient(to bottom, #f9f9f9 0px, #efefef 100%) repeat-x scroll 0 0 rgba(0, 0, 0, 0);'></td>");        }        for (var i = 0; i < _columnCount; i++) {            sbBuilder = sbBuilder.concat("<td style='width:" + width_array[i] + "px;background: linear-gradient(to bottom, #f9f9f9 0px, #efefef 100%) repeat-x scroll 0 0 rgba(0, 0, 0, 0);' align='" + align_array[i] + "'>");            sbBuilder = sbBuilder.concat(title_array[i]);            sbBuilder = sbBuilder.concat("</td>");        }        sbBuilder = sbBuilder.concat("</tr>");        for (var i = 0; i < data.length; i++) {            sbBuilder = sbBuilder.concat("<tr>");            if (parameter.toolbar.length > 0) {                sbBuilder = sbBuilder.concat("<td style='width:" + toolbar_width + "px'>");                for (var j = 0; j < parameter.toolbar.length; j++) {                    var barf_width = 100;                    var barf_height = 100;                    if (parameter.toolbar[j].width && parameter.toolbar[j].height) {                        barf_width = parameter.toolbar[j].width;                        barf_height = parameter.toolbar[j].height;                    }                    if (parameter.toolbar[j].text) {                        if (parameter.toolbar[j].icon) {                            sbBuilder = sbBuilder.concat("<div style='width:" + barf_width + "px;height:" + barf_height + "px;float:left;'>");                            sbBuilder = sbBuilder.concat("<a href='javascript:void(0)' class='" + parameter.toolbar[j].icon + "' title='" + parameter.toolbar[j].text + "'>");                            sbBuilder = sbBuilder.concat("</a> ");                            sbBuilder = sbBuilder.concat("<span>");                            sbBuilder = sbBuilder.concat(parameter.toolbar[j].text);                            sbBuilder = sbBuilder.concat("</span>");                            sbBuilder = sbBuilder.concat("</div>");                        } else {                            sbBuilder = sbBuilder.concat("<div style='width:" + barf_width + "px;height:" + barf_height + "px;float:left;'>");                            sbBuilder = sbBuilder.concat("<span>");                            sbBuilder = sbBuilder.concat(parameter.toolbar[j].text);                            sbBuilder = sbBuilder.concat("</span>");                            sbBuilder = sbBuilder.concat("</div>");                        }                    } else {                        if (parameter.toolbar[j].icon) {                            sbBuilder = sbBuilder.concat("<div style='width:" + barf_width + "px;height:" + barf_height + "px;float:left;'>");                            sbBuilder = sbBuilder.concat("<a href='javascript:void(0)' class='" + parameter.toolbar[j].icon + "' title='" + parameter.toolbar[j].text + "'>");                            sbBuilder = sbBuilder.concat("</a> ");                            sbBuilder = sbBuilder.concat("</div>");                        }                    }                }                sbBuilder = sbBuilder.concat("</td>");            }            for (var j = 0; j < parameter.columns.length; j++) {                sbBuilder = sbBuilder.concat("<td>");                var field = parameter.columns[j].field;                var text = eval("data[" + i + "]." + field);                sbBuilder = sbBuilder.concat(text);                sbBuilder = sbBuilder.concat("</td>");            }            sbBuilder = sbBuilder.concat("</tr>");        }        sbBuilder = sbBuilder.concat("</table>");        $(this).html("");        $(this).append(sbBuilder.join(""));        $(this).find("tr").each(function (i) {            $(this).eq(0).find("div").each(function (j) {                $(this).click(function () {                    parameter.toolbar[j].handler(data[i - 1]);                });            });        });    }})(jQuery);</span>

调用方法:

<span style="font-family:Comic Sans MS;font-size:12px;"><!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head>    <title></title>    <script src="script/jquery-2.1.0.js"></script>    <link href="style/pagination.css" rel="stylesheet" />    <script src="script/jquery.pagination.js"></script>    <script src="script/datagrid.js"></script>    <link href="style/datagrid.css" rel="stylesheet" />    <script type="text/javascript">        $(function () {            var data = [              { "id": 1, "Name": "小吴", "Sex": "male", "Age": 20 },              { "id": 2, "Name": "小王", "Sex": "female", "Age": 22 },              { "id": 4, "Name": "李芳", "Sex": "male", "Age": 23 },              { "id": 8, "Name": "张芳", "Sex": "female", "Age": 18 },              { "id": 10, "Name": "张波", "Sex": "male", "Age": 22 },              { "id": 11, "Name": "王辉", "Sex": "male", "Age": 21 },              { "id": 12, "Name": "张一", "Sex": "female", "Age": 24 },              { "id": 14, "Name": "郭伟", "Sex": "male", "Age": 26 },              { "id": 18, "Name": "张伟", "Sex": "female", "Age": 13 },              { "id": 110, "Name": "宁伟", "Sex": "male", "Age": 24 },              { "id": 21, "Name": "张宁", "Sex": "male", "Age": 24 },              { "id": 22, "Name": "李宁", "Sex": "female", "Age": 23 },              { "id": 24, "Name": "王宁", "Sex": "male", "Age": 27 },              { "id": 28, "Name": "王晓宁", "Sex": "female", "Age": 19 },              { "id": 210, "Name": "王宇", "Sex": "male", "Age": 20 },              { "id": 182, "Name": "张晓伟", "Sex": "female", "Age": 13 },              { "id": 1120, "Name": "宁晓伟", "Sex": "male", "Age": 24 },              { "id": 212, "Name": "张晓宁", "Sex": "male", "Age": 24 },              { "id": 222, "Name": "李晓宁", "Sex": "female", "Age": 23 },              { "id": 224, "Name": "王宁宇", "Sex": "male", "Age": 27 },              { "id": 228, "Name": "王晓宁", "Sex": "female", "Age": 19 },              { "id": 2210, "Name": "张雨", "Sex": "male", "Age": 20 }            ];            var parameters = {                columns: [                        { field: "id", title: "编号", width: 80 },                        { field: "Name", title: "姓名", width: 180 },                        { field: "Age", title: "年龄", width: 180 }                ],                toolbar: [                    {                        text: "zoom to", width: 100, height: 30, icon: "icon-0-0", handler: function (rowData) {                        }                    },                    {                        text: "parcel print", width: 150, height: 30, icon: "icon-1-0", handler: function (rowData) {                        }                    },                    {                        text: "detail info", width: 150, height: 30, icon: "icon-2-0", handler: function (rowData) {                        }                    }                ]            };            var pageSelectCallback = function (pageindex) {                var data_detail = new Array(data[pageindex]);                $("#content").datagrid(data_detail, parameters);//第一个参数是数据,第二个参数是配置            }//jQuery.pagination.js的分页            $("#paging").pagination(data.length, {                callback: pageSelectCallback,//点击                prev_text: "上一页",                next_text: "下一页",                items_per_page: 1,                load_first_page: true,                ellipse_text: "...",                num_edge_entries: 2,                num_display_entries:4            });        });    </script></head><body>     <div style="border: 0px solid blue;" id="content">    </div>    <div id="paging" style="margin-top:10px;">    </div></body></html></span>
运行效果如下图:


Query.pagination.js不是本文主要说明的,这里只列出其参数使用说明,参数说明如下图:




jQuery.pagination.js参照文章:http://www.zhangxinxu.com/wordpress/?p=616
jquery.pagination.js官网:http://plugins.jquery.com/project/pagination


Demo下载:http://download.csdn.net/detail/u011872945/7511095

0 0
原创粉丝点击