zoukankan      html  css  js  c++  java
  • 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

      

  • 相关阅读:
    第四章:Django模型——添加 Event发布会的表 报错
    第四章:Django模型——admin后台管理
    第四章:Django 模型 —— 设计系统表
    第三章:3.9 清除 Google 浏览器中的缓存
    第三章:3.9 关上窗户
    第三章:3.9 引用Django 认证登陆
    第三章:3.8 登陆 Django 默认后台
    降脂食物
    决定孩子人生高度的,不是知识而是这个!
    百万保险
  • 原文地址:https://www.cnblogs.com/youngerliu/p/4747289.html
Copyright © 2011-2022 走看看