`
tomorrow009
  • 浏览: 45750 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

基于jQuery的表格插件flexigrid 扩展:为列增加checkbox

阅读更多
关于flexigrid: 基于jQuery的datagrid插件。http://www.flexigrid.info/

基本使用就不说了,看官网。这篇文章主要总结一下自己在使用中的一些心得,首先是对flexigrid进行简单的扩展,比如将某个数据列显示为一个checkbox.
要点,也就是主要修改的地方如下:

1.colModel -- flexigrid用来表头的模型,我们将在为之新增一个checkbox属性作为标识,若为true,则将这一列显示为checkbox。 用ctrl+f找到这段代码(为什么用Ctrl+F? 很明显写这插件的哥们儿很喜欢超长的函数,以至于这种独立的功能他都仅仅是加了一个注释而已):
//create model if any
if (p.colModel)
{
    thead = document.createElement('thead');
    tr = document.createElement('tr');
			
    for (i=0;i<p.colModel.length;i++)
    {
     //此处即对colModel的处理。省略代码若干....
     //Modified by me.
     if (cm.checkbox){
	$(th).attr('checkbox',cm.checkbox);
     }
     $(tr).append(th);
    }

}

注释//Modified by me下面的if段,即是我们要做的修改,很明了,我们将为th添加一个'checkbox'属性,如果用户在colModel中设置了这一属性的话。


2.找到创建每个单元格的代码,稍作修改,判断单元格所在列的表头是否有checkbox属性,若有,则在单元格内创建一个checkbox。

继续Ctrl+F找到下面这段代码
//add cell
$('thead tr:first th',g.hDiv).each
(
   function (){
     //继续省略代码
     if($(this).attr('checkbox')){												              
        td.innerHTML = "<input type='checkbox' />";											    
     }else{											  
        td.innerHTML = row.cell[idx];										        
     }
   }

循环体中的代码就是对每一列的单元格进行渲染了。代码依旧很简单,对应的表头有'checkbox',就显示成checkbox,否则就显示对应的数据值。

到此为止呢,如果你手头有测试数据的话,就可以看到我们的checkbox已经出来了,接下来还有一点小问题,请继续往下看。

3.需要某一行被选中时,该行内的checkbox也应该被打上勾,同样的,勾选checkbox时,应当所在行的样式变为选中。

继续Ctrl+F($(this).toggleClass('trSelected')),找到下面这段
$('tbody tr',g.bDiv).each
					(
						function ()
							{
							$(this)
							.click(
								function (e) 
									{ 

										var obj = (e.target || e.srcElement); if (obj.href /*这里的判断条件修改了一下,使得checkbox的点击事件不被拦截掉*/) return true; 
										
										$(this).toggleClass('trSelected');
										//这里的修改使checkbox的选中状态与行的trSelected css保持同步.
										var isSelected = $(this).hasClass("trSelected");
										$(this).find("input[type='checkbox']").each(function() {
											isSelected ? $(this).attr("checked","checked") : $(this).removeAttr("checked");
										});
										if (p.singleSelect) {
											$(this).siblings().removeClass('trSelected')
															  .find("input[type='checkbox']").removeAttr("checked");											
										}
									}
							)


OK,到此为止,完成任务。
使用方法呢,就是这个样子
$("#customer_flexigrid").flexigrid({
        colModel: [
         	{ display: 'Select', name: 'id', width: 40, align: 'center', checkbox:true},
         ],
         //其他配置省略

这只是一个简单的例子,事实上用同样的思路,我们可以把单元格表现成任意的形式。

最后吐槽一下JE的代码插入功能,太难使了。
1
2
分享到:
评论
1 楼 yanyanquan 2012-12-28  
有案例吗???弄个案例放在附件分享一下吧啊!

相关推荐

    jquery表格插件Flexigrid

    Flexigrid是一款基于jQuery的强大的表格插件,它允许开发者将数据以美观、可操作的表格形式呈现出来,类似于知名的JavaScript框架ExtJS的表格组件。这个插件的主要优点在于其灵活性和可定制性,能够满足各种复杂的...

    jQuery表格插件 Flexigrid的例子

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

    jquery 表格插件 Flexigrid

    Flexigrid是一款基于jQuery的开源表格插件,它为网页开发者提供了一种高效、灵活的方式来展示数据,并且具有丰富的功能和自定义选项。这个插件的设计目标是使数据的显示和操作变得更加简单,同时保持良好的性能和...

    jquery表格插件flexigrid-1.1.zip

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

    JQuery_插件FlexiGrid_之完全配置与使用

    FlexiGrid是一款基于jQuery的轻量级表格插件,它为开发者提供了简单易用的方式来展示和操作数据表格。FlexiGrid支持多种功能,如排序、分页、筛选等,非常适合用于展示动态数据或对数据进行交互式操作的场景。本文将...

    jquery插件之flexigrid篇

    Flexigrid是一款基于jQuery的轻量级数据网格插件,专为实现强大的表格展示和操作功能而设计。在Web开发中,特别是在构建数据密集型应用时,它提供了一种高效且用户友好的方式来显示、排序、筛选和操作数据。这款插件...

    强大的jQuery表格插件

    jQuery表格插件则是基于这个库的扩展,专门用于增强HTML表格功能。 ### 2. jQuery表格插件的优势 - **高灵活性**:jQuery表格插件允许开发者自定义各种样式、布局和功能,适应不同的项目需求。 - **高可定制性**:...

    jquery插件之flexigrid学习实例

    Flexigrid是一款基于jQuery的表格插件,它提供了丰富的功能,如数据分页、排序、搜索和自定义列显示,适用于构建数据密集型Web应用。在这个"jquery插件之flexigrid学习实例"中,我们将深入探讨如何在Struts2框架下...

    37款开源jQuery表格插件

    ### 37款开源jQuery表格插件概览 在网页应用开发中,表格常常被用于展示数据,使得信息更加清晰直观。随着Web前端技术的发展,尤其是JavaScript库的日益完善,开发者们有了更多选择来实现这一功能。其中,jQuery...

    jquery插件之flexigrid学习实例-jar包

    Flexigrid是一款基于jQuery的表格插件,它提供了丰富的功能,如数据分页、排序、搜索和自定义列宽等,极大地增强了网页中表格的展示效果和交互性。在"jquery插件之flexigrid学习实例-jar包"中,我们主要关注的是如何...

    jQuery插件flexigrid使用总结--进一步优化

    jQuery插件flexigrid是一款轻量级、功能强大的表格插件,能够帮助开发者快速构建具有分页、排序、搜索等功能的动态表格。本文将对flexigrid的使用进行总结,并探讨其进一步优化的方法。 一、flexigrid基本用法 1. ...

    jquery grid插件 Flexigrid + servlet

    Flexigrid是一款基于jQuery的网格插件,它提供了一种灵活、强大的方式来展示和操作数据,常用于创建数据密集型的Web应用。这个插件以其丰富的功能、自定义选项和用户友好的界面而受到开发者的青睐。在与servlet结合...

    Jquery仿Ext表格flexigrid

    Flexigrid是一款基于jQuery的开源表格插件,它在功能和用户体验上模仿了Ext JS的Grid组件。这款插件以其轻量级、高效和丰富的特性,深受Web开发者喜爱,尤其适用于需要展示大量数据并进行排序、分页等操作的场景。 ...

    jquery插件FlexiGrid的使用(已更新)

    FlexiGrid是一款基于jQuery的表格插件,它提供了丰富的功能,包括数据分页、排序、过滤、编辑等,使得在Web应用中展示和操作大量数据变得更加便捷。在本篇文章中,我们将深入探讨FlexiGrid的使用方法,以及如何将其...

    jquery flexigrid 支持前台排序

    jQuery Flexigrid是一款功能强大的表格插件,它提供了丰富的自定义选项和操作,使得前端表格的呈现更加灵活。本文将详细介绍如何利用jQuery Flexigrid配合jQuery Tablesorter来实现前端的客户端排序功能,无需依赖...

    Jquery flexigrid插件 添加checkbox,(双击事件)onRowDblclick

    Flexigrid是一款基于jQuery的强大的数据网格插件,它提供了丰富的功能,如分页、排序、搜索和自定义列。在开发web应用时,我们经常需要处理大量的表格数据,这时Flexigrid就能派上用场,它使得数据显示更加灵活且...

    基于jQuery的FlexiGrid的插件使用和改造

    6. 插件扩展:利用jQuery插件机制,编写自己的扩展插件,实现更高级的功能,如拖拽列宽、列隐藏、列排序方式切换等。 通过以上介绍,我们可以了解到FlexiGrid的基本使用、功能扩展以及可能的改造方向。在实际开发中...

    JQuery_插件FlexiGrid_之完全配置与使用.doc

    JQuery FlexiGrid 插件是一款强大的数据网格组件,用于在网页中展示和管理结构化的数据。它提供了丰富的功能,包括排序、分页、搜索、编辑和自定义操作按钮等。下面将详细介绍FlexiGrid的配置和使用方法。 首先,你...

    jquery flexigrid插件

    Flexigrid-Web2.0 jQuery表格插件 Flexigrid 是一个轻量级的Web2.0 jQuery插件。它包含很多非常Cool的特性,如主题定制、分页、工具栏、搜索、排序、ajax读取数据源、调整列宽高尺寸等。 一个中文实例教程: ...

Global site tag (gtag.js) - Google Analytics