• FlexiGrid 使用 全选、自动绑定


    1、介绍

        Flexigrid是一个类似于Ext Gird,但基于jQuery开发的Grid。它具有的功能包括:可以调整列宽,合并列标题,分页,排序,显示/隐藏表格等。Flexigrid显示的数据能够通过Ajax获取或者从一个普通的表格转换。

    2、相关参数

        

    height: 200, //flexigrid插件的高度,单位为px
     'auto', //宽度值,auto表示根据每列的宽度自动计算,在IE6下建议设置具体值否则会有问题
    striped: true, //是否显示斑纹效果,默认是奇偶交互的形式
    novstripe: false,//没用过这个属性
    min 30, //列的最小宽度
    minheight: 80, //列的最小高度
    resizable: false, //resizable table是否可伸缩
    url: false, //ajax url,ajax方式对应的url地址
    method: 'POST', // data sending method,数据发送方式
    dataType: 'json', // type of data loaded,数据加载的类型,xml,json
    errormsg: '发生错误', //错误提升信息
    usepager: false, //是否分页
    nowrap: true, //是否不换行
    page: 1, //current page,默认当前页
    total: 1, //total pages,总页面数
    useRp: true, //use the results per page select box,是否可以动态设置每页显示的结果数
    rp: 25, // results per page,每页默认的结果数
    rpOptions: [10, 15, 20, 25, 40, 100], //可选择设定的每页结果数
    title: false, //是否包含标题
    pagestat: '显示记录从{from}到{to},总数 {total} 条', //显示当前页和总页面的样式
    procmsg: '正在处理数据,请稍候 ...', //正在处理的提示信息
    query: '', //搜索查询的条件
    qtype: '', //搜索查询的类别
    qop: "Eq", //搜索的操作符
    nomsg: '没有符合条件的记录存在', //无结果的提示信息
    minColToggle: 1, //允许显示的最小列数
    showToggleBtn: true, //是否允许显示隐藏列,该属性有bug设置成false点击头脚本报错。
    hideOnSubmit: true, //是否在回调时显示遮盖
    showTableToggleBtn: false, //是否显示【显示隐藏Grid】的按钮 
    autoload: true, //自动加载,即第一次发起ajax请求
    blockOpacity: 0.5, //透明度设置
    onToggleCol: false, //当在行之间转换时,可在此方法中重写默认实现,基本无用
    onChangeSort: false, //当改变排序时,可在此方法中重写默认实现,自行实现客户端排序
    onSuccess: false, //成功后执行
    onSubmit: false, // 调用自定义的计算函数,基本没用        
    

    3、插件源码

      http://files.cnblogs.com/files/youngerliu/Flexigrid.rar,这个版本做了点小改动,增加了checkbox的支持,全选,反选轻松搞定。

      主要增加了flexigrid.js的930-936行

    1  //add by 
    2                     if (cm.thtype) {
    3                         if (cm.thtype == "checkbox") {
    4                             checkboxIndex = i;
    5                             $(th).html("<input type="checkbox" class='checkAll' name='checkAll' />").find(":checkbox").live("click", function () {
    6                                 $("#" + t.id + " tr  td:nth-child(" + (checkboxIndex + 1) + ") :checkbox ").attr("checked", $(this).is(":checked"));
    7                             });
    8                         }
    9                     }
    View Code

      使用方式如下:

    {
                display: '全选',
                name: 'opnion_id',
                 50,
                align: 'center',
                thtype: "checkbox",
                process: function (celDiv, id) {
                    $(celDiv).html("<input type="checkbox" value="" + id + ""/>").click(function () {
                        var index = $(this).closest("td").index() + 1;
                        var checked = ($("#flexme4 tr  td:nth-child(" + index + ") :checkbox:checked ").size() === $("#flexme4 tr  td:nth-child(" + index + ") :checkbox ").size());
                        $(".checkAll").attr("checked", checked);
                    });
                }
            }
    1 //获取所选记录
    2 function getAllChecked() {
    3 var index = $(".checkAll:eq(1)").closest("th").index() + 1;
    4 var arr = [];
    5 $("#flexme4 tr td:nth-child(" + index + ") :checkbox:checked ").each(function (a, n) {
    6 arr.push($(n).val());
    7 })
    8 return arr;
    9 }
    View Code

    4、自动绑定列

        这里根据插件绑定的数据模型,创建了实体:

     1   public class FlexiGridModel<T>
     2     {
     3         private int _page = 1;
     4 
     5         public int page
     6         {
     7             get { return _page; }
     8             set { _page = value; }
     9         }
    10 
    11         public int total { get; set; }
    12         public List<Rows<T>> rows { get; set; }
    13     }
    14     public class Rows<T>
    15     {
    16         public string id { get; set; }
    17         public T cell { get; set; }
    18     }

      数据绑定

     1  FlexiGridModel<AdminOpnionList> pageData = new FlexiGridModel<AdminOpnionList>();
     2             pageData.total = data.total;
     3             pageData.page = page;
     4             pageData.rows = new List<Rows<AdminOpnionList>>();
     5             if (data.opnion_list != null)
     6                 foreach (AdminOpnionList item in data.opnion_list)
     7                 {
     8                     Rows<AdminOpnionList> rows = new Rows<AdminOpnionList>();
     9                     rows.id = item.opnion_id.HasValue ? item.opnion_id.Value.ToString() : "";
    10                     rows.cell = item;
    11                     pageData.rows.Add(rows);
    12                 }
    13 
    14             ReturnJsonMsg<AdminOpnionList>(pageData);
    15 
    16 
    17  public void ReturnJsonMsg<T>(FlexiGridModel<T> data)
    18         {
    19             Response.Clear();
    20             if (data == null)
    21                 Response.Write("{"page": 1,"total": 0,"rows": []}");
    22 
    23             else
    24                 Response.Write(Newtonsoft.Json.JsonConvert.SerializeObject(data));
    25             Response.Flush();
    26             Response.End();
    27             Response.Close();
    28             return;
    29         }
    View Code

      

  • 相关阅读:
    【HTML5】元素<script>与<noscript>的使用
    【HTML5】元素<head>的使用
    【HTML5】交互元素menu&command元素
    【HTML5】summary交互元素
    【HTML5】用脚本控制交互元素details元素的使用
    【BIEE】页面跳转以及跳转后返回
    (C语言版)链表(三)——实现双向链表创建、删除、插入、释放内存等简单操作
    哪些年是闰年
    工程师职称评定条件
    linux 网络编程-基础篇01
  • 原文地址:https://www.cnblogs.com/youngerliu/p/4747289.html
Copyright © 2020-2023  润新知