jQuery表格插件bs_grid

所属分类:UI-图表

 138411  405  查看评论 (16)
分享到微信朋友圈
X
jQuery表格插件bs_grid ie兼容8

特点

        引导创建(bootstrap 2支持)

        响应的网页设计

        完全可配置的

        获得JSON格式的数据(使用Ajax的任何服务器端技术)

        一个PHP类设置为服务器端操作

        更改列顺序

        显示/隐藏列

        列式

        简单的点击排序的列

        灵活的数据排序(多栏)

        单个或多个行选择

        强大的分页

        定位


使用方法

Demo实例代码


html-head引用

<!--  It is a good idea to bundle all CSS in one file. The same with JS -->
<!--  JQUERY -->
<script type="text/javascript" src="/path/to/jquery.min.js"></script>
 
<!--  BOOTSTRAP -->
<link rel="stylesheet" type="text/css" href="/path/to/bootstrap.min.css">
<script type="text/javascript" src="/path/to/bootstrap.min.js"></script>
 
<!--  JQUERY-UI (only sortable and datepicker is needed) -->
<link rel="stylesheet" type="text/css" href="/path/to/jquery-ui.min.css">
<script type="text/javascript" src="/path/to/jquery-ui.min.js"></script>
<!--  if timepicker is used in filters -->
<link rel="stylesheet" type="text/css" href="/path/to/jquery-ui-timepicker-addon.min.css"/>
<script type="text/javascript" src="/path/to/jquery-ui-timepicker-addon.min.js"></script>
<!--  if touch event support is needed (mobile devices) -->
<script type="text/javascript" src="/path/to/jquery.ui.touch-punch.min.js"></script>
  
<!--  PAGINATION plugin -->
<link rel="stylesheet" type="text/css" href="/path/to/jquery.bs_pagination.min.css">
<script type="text/javascript" src="/path/to/jquery.bs_pagination.min.js"></script>
<script type="text/javascript" src="/path/to/bs_pagination/localization/en.min.js"></script>
 
<!--  FILTERS plugin --> 
<link rel="stylesheet" type="text/css" href="/path/to/jquery.jui_filter_rules.css">
<script type="text/javascript" src="/path/to/jquery.jui_filter_rules.min.js"></script>
<script type="text/javascript" src="/path/to/jui_filter_rules/localization/en.js"></script>
<!--  required from filters plugin -->
<script type="text/javascript" src="/path/to/bowser.js"></script>
<script type="text/javascript" src="/path/to/moment.js"></script>
 
<!--  DATAGRID plugin -->
<link rel="stylesheet" type="text/css" href="/path/to/jquery.bs_grid.min.css">
<script type="text/javascript" src="/path/to/jquery.bs_grid.min.js"></script>
<script type="text/javascript" src="/path/to/bs_grid/localization/en.min.js"></script>

html body

<!--  Just create a div and give it an ID -->
<div id="demo_grid1"></div>


javsscript

$(function() {
 
    $("#demo_grid1").bs_grid({
 
        ajaxFetchDataURL: "ajax_fetch_page_data.php",
        row_primary_key: "customer_id",
 
        columns: [
            {field: "customer_id", header: "Code", visible: "no"},
            {field: "lastname", header: "Lastname"},
            {field: "firstname", header: "Firstname"},
            {field: "email", header: "Email", visible: "no", "sortable": "no"},
            {field: "gender", header: "Gender"},
            {field: "date_updated", header: "Date updated"}
        ],
 
        sorting: [
            {sortingName: "Code", field: "customer_id", order: "none"},
            {sortingName: "Lastname", field: "lastname", order: "ascending"},
            {sortingName: "Firstname", field: "firstname", order: "ascending"},
            {sortingName: "Date updated", field: "date_updated", order: "none"}
        ],
 
        filterOptions: {
            filters: [
                {
                    filterName: "Lastname", "filterType": "text", field: "lastname", filterLabel: "Last name",
                    excluded_operators: ["in", "not_in"],
                    filter_interface: [
                        {
                            filter_element: "input",
                            filter_element_attributes: {"type": "text"}
                        }
                    ]
                },
                {
                    filterName: "Gender", "filterType": "number", "numberType": "integer", field: "lk_genders_id", filterLabel: "Gender",
                    excluded_operators: ["equal", "not_equal", "less", "less_or_equal", "greater", "greater_or_equal"],
                    filter_interface: [
                        {
                            filter_element: "input",
                            filter_element_attributes: {type: "checkbox"}
                        }
                    ],
                    lookup_values: [
                        {lk_option: "Male", lk_value: "1"},
                        {lk_option: "Female", lk_value: "2", lk_selected: "yes"}
                    ]
                },
                {
                    filterName: "DateUpdated", "filterType": "date", field: "date_updated", filterLabel: "Datetime updated",
                    excluded_operators: ["in", "not_in"],
                    filter_interface: [
                        {
                            filter_element: "input",
                            filter_element_attributes: {
                                type: "text",
                                title: "Set the date and time using format: dd/mm/yyyy hh:mm:ss"
                            },
                            filter_widget: "datetimepicker",
                            filter_widget_properties: {
                                dateFormat: "dd/mm/yy",
                                timeFormat: "HH:mm:ss",
                                changeMonth: true,
                                changeYear: true,
                                showSecond: true
                            }
                        }
                    ],
                    validate_dateformat: ["DD/MM/YYYY HH:mm:ss"],
                    filter_value_conversion: {
                        function_name: "local_datetime_to_UTC_timestamp",
                        args: [
                            {"filter_value": "yes"},
                            {"value": "DD/MM/YYYY HH:mm:ss"}
                        ]
                    }
                }
            ]
        }
    });
 
});


javascript-Demo functions

/**
 * Convert local timezone date string to UTC timestamp
 *
 * Alternative syntax using jquery (instead of moment.js):
 *     var date = $.datepicker.parseDateTime(dateformat, timeformat, date_str);
 *
 * @see http://stackoverflow.com/questions/948532/how-do-you-convert-a-javascript-date-to-utc
 * @param {String} date_str
 * @param {String} dateformat
 * @return {String}
 */
function local_datetime_to_UTC_timestamp(date_str, dateformat) {
 
    // avoid date overflow in user input (moment("14/14/2005", "DD/MM/YYYY") => Tue Feb 14 2006)
    if(moment(date_str, dateformat).isValid() == false) {
        throw new Error("Invalid date");
    }
 
    // parse date string using given dateformat and create a javascript date object
    var date = moment(date_str, dateformat).toDate();
 
    // use javascript getUTC* functions to conv ert to UTC
    return  date.getUTCFullYear() +
        PadDigits(date.getUTCMonth() + 1, 2) +
        PadDigits(date.getUTCDate(), 2) +
        PadDigits(date.getUTCHours(), 2) +
        PadDigits(date.getUTCMinutes(), 2) +
        PadDigits(date.getUTCSeconds(), 2);
 
}
 
/**
 * Add leading zeros
 * @param {Number} n
 * @param {Number} totalDigits
 * @return {String}
 */
function PadDigits(n, totalDigits) {
    n = n.toString();
    var pd = '';
    if(totalDigits > n.length) {
        for(i = 0; i < (totalDigits - n.length); i++) {
            pd += '0';
        }
    }
    return pd + n.toString();
}

php-ajax

<?php
require_once '/path/to/dacapo.class.php'; // simple database wrapper
require_once '/path/to/jui_filter_rules.php';
require_once '/path/to/bs_grid.php';
 
$db_settings = array(
  'rdbms' => 'MYSQLi',
  'db_server' => 'SERVER_NAME OR IP',
  'db_user' => 'DB USER',
  'db_passwd' => 'DB PASS',
  'db_name' => 'DB NAME',
  'db_port' => '3306',
  'charset' => 'utf8',
  'use_pst' => true, // use prepared statements
  'pst_placeholder' => 'question_mark'
);
 
$ds = new dacapo($db_settings, null);
 
$page_settings = array(
  "selectCountSQL" => "SELECT count(id) as totalrows FROM customers",
  "selectSQL" => "SELECT c.id as customer_id, c.lastname, c.firstname, c.email, g.gender, c.date_updated
                  FROM customers c INNER JOIN lk_genders g ON (c.lk_genders_id = g.id)",
  "page_num" => $_POST['page_num'],
  "rows_per_page" => $_POST['rows_per_page'],
  "columns" => $_POST['columns'],
  "sorting" => isset($_POST['sorting']) ? $_POST['sorting'] : array(),
  "filter_rules" => isset($_POST['filter_rules']) ? $_POST['filter_rules'] : array()
);
 
$jfr = new jui_filter_rules($ds);
$jdg = new bs_grid($ds, $jfr, $page_settings, $_POST['debug_mode'] == "yes" ? true : false);
 
$data = $jdg->get_page_data();
 
// data conversions (if necessary)
foreach($data['page_data'] as $key => $row) {
  // this will convert Lastname to a link
  $data['page_data'][$key]['lastname'] = "<a href="/test/{$row['customer_id']}">{$row['lastname']}</a>";
  // this will format date_updated (attention date_convert is a local function)
  $data['page_data'][$key]['date_updated'] = date_convert($row['date_updated'], 'UTC', 'YmdHis', 'UTC', 'd/m/Y H:i:s');
}
 
echo json_encode($data);
相关插件-图表

ets常用的数据统计图(原创)

利用ets,制作常用的数据统计图
  图表
 41149  402

jQuery表头固定

基于superTables做的改造,可以完美锁定表头和列,已经用于实际项目,还有很多改造的空间
  图表
 41233  456

jQuery响应式表格插件ReStable

jQuery restable是一个非常简单轻量级(~ 1KB)的jQuery插件,它可以将表格在指定的响应式断点时,使表格结构切换为无序列表结构,以适应在小屏幕设备中显示表格数据。
  图表
 32931  316

jquery 表行列固定

支持表格行列固定和排序兼容所有浏览器
  图表
 64380  497

讨论这个项目(16)回答他人问题或分享插件使用方法奖励jQ币 评论用户自律公约

    风居住的街道 0
    2017/8/10 12:18:13

    画个圈圈诅咒你,这效果和EXT一样,就是不能配置,搞什么鬼

    回复
    云之端 天之翼 0
    2017/3/29 11:44:12
    谁的表格是这样布局的喔!!这样搞没法遍历了 回复
    h1138289016 0
    2017/3/28 14:56:00
    差评,说的不清不楚 回复
    大红和小蓝 0
    2017/3/12 22:00:54

    能做出一个完成的demo吗,,效果不错

    回复
    大红和小蓝 0
    2017/3/12 21:09:55

    唉,,,能补全不,,看不懂

    回复
    蜗牛看海 0
    2017/3/10 14:21:18

    作者坑人啊,完整的文件也没有

    回复
    霓蓝裳 0
    2016/10/11 15:10:53
    理想太丰满,现实太骨感。我不会用 T_T,,,,, 回复
    无双炼 0
    2016/8/4 17:08:46
    奶酪 0
    2016/6/15 10:06:05
    demo 数据部分 能不能给静态json 或者 java的 例子, 不会 php 回复
    MillieZhang 0
    2016/4/13 17:04:44
    直接到该插件作者的github上逛了一圈,依然没有能够把需要引入的js全部找全。 回复
😃
  • 😀
  • 😉
  • 😥
  • 😵
  • 😫
  • 😘
  • 😡
  • 👍
  • 🌹
  • 👏
  • 🍺
  • 🍉
  • 🌙
  • 💖
  • 💔
😃
  • 😀
  • 😉
  • 😥
  • 😵
  • 😫
  • 😘
  • 😡
  • 👍
  • 🌹
  • 👏
  • 🍺
  • 🍉
  • 🌙
  • 💖
  • 💔
取消回复