`
newlethe
  • 浏览: 83783 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

EXTjs grid双层表头的实现 (源代码和示例)

    博客分类:
  • Ext
 
阅读更多


源代码:
加载到页面中的js文件
GridDoubleHeader.js

 

/*******************************************************************************
* @author 
* @since 
* @description 双层表头
* @param{}
*             mtext 表头名 
* @param{}
*             mcol 向后跨越子表头个数
* @param{}
*              mwidth 上至下第一层表头的宽度,即父表头的宽度 
* @class MyGridView
* @extends Ext.grid.GridView
*/

MyGridView = Ext.extend(Ext.grid.GridView, {
            renderHeaders : function() {
                var cm = this.cm, ts = this.templates;
                var ct = ts.hcell, ct2 = ts.mhcell;
                var cb = [], sb = [], p = {}, mcb = [];
                for (var i = 0, len = cm.getColumnCount(); i < len; i++) {
                    p.id = cm.getColumnId(i);
                    p.value = cm.getColumnHeader(i) || "";
                    p.style = this.getColumnStyle(i, true);
                    if (cm.config[i].align == 'right') {
                        p.istyle = 'padding-right:16px';
                    }
                    cb[cb.length] = ct.apply(p);
                    if (cm.config[i].mtext)
                        mcb[mcb.length] = ct2.apply({
                                    value : cm.config[i].mtext,
                                    mcols : cm.config[i].mcol,
                                    mwidth : cm.config[i].mwidth
                                });
                }
                var s = ts.header.apply({
                            cells : cb.join(""),
                            tstyle : 'width:' + this.getTotalWidth() + ';',
                            mergecells : mcb.join("")
                        });
                return s;
            }
        });
viewConfig = {
    templates : {
        header : new Ext.Template(
                ' <table border="0" cellspacing="0" cellpadding="0" style="{tstyle}">',
                ' <thead> <tr class="x-grid3-hd-row">{mergecells} </tr>'
                        + ' <tr class="x-grid3-hd-row">{cells} </tr> </thead>',
                " </table>"),
        mhcell : new Ext.Template(
                ' <td class="x-grid3-header" colspan="{mcols}" style="width:{mwidth}px;"> <div align="center">{value}</div>',
                " </td>")
    }
};

 

修改grid的cm配置

var ldrk_cm = new Ext.grid.ColumnModel([new Ext.grid.RowNumberer({
					mtext : " ",// 给父表头取的名字
					mcol : 1,// 包含了几列
					mwidth : 20,// 子表头宽度
					width : 20,// 被包含子表头的宽度,最好填写一下
					header : "No."
				}), {
			mtext : "本地住址<br>或",
			mcol : 1,
			mwidth : 190,
			width : 200,
			header : "<div align='center'>管理单位</div>",
			dataIndex : "address"
		}, {
			mtext : " ",
			mcol : 1,
			mwidth : 80,
			width : 80,
			header : "<div align='center'>姓名</div>",
			sortable : true,
			dataIndex : "name"
		}, {
			mtext : "<br>性",
			mcol : 1,
			mwidth : 30,
			width : 30,
			header : "<div align='center'>别</div>",
			sortable : true,
			dataIndex : "sex"
		}, {
			mtext : " ",
			mcol : 1,
			mwidth : 80,
			width : 80,
			header : "<div align='center'>出生年月</div>",
			dataIndex : "birthday"
		}, {
			mtext : " ",
			mcol : 1,
			mwidth : 80,
			width : 90,
			header : "<div align='center'>结婚年月</div>",
			dataIndex : "marryDate"
		}, {
			mtext : " ",
			mcol : 1,
			mwidth : 100,
			width : 110,
			header : "<div align='center'>流动方向</div>",
			dataIndex : "moveAspect"
		}, {
			mtext : "流入人口填户籍地名<br>流出人口填流向地名",
			mcol : 1,
			mwidth : 200,
			width : 200,
			header : "<div align='center'>流入(出)地名</div>",
			dataIndex : "placename"
		}, {
			mtext : "流入<br>(出)",
			mcol : 1,
			mwidth : 80,
			width : 80,
			header : "<div align='center'>年月</div>",
			dataIndex : "moveDate"
		}, {
			mtext : "离开<br>或返回",
			mcol : 1,
			mwidth : 80,
			width : 80,
			header : "<div align='center'>年月</div>",
			dataIndex : "comeDate"
		}, {
			mtext : "流入(出)<br>初期子女",
			mcol : 2,
			mwidth : 100,
			width : 50,
			header : "<div align='center'>男</div>",
			dataIndex : "man"
		}, {
			width : 50,
			header : "<div align='center'>女</div>",
			dataIndex : "woman"
		}, {
			mtext : "流入(出)<br>初期避孕情况",
			mcol : 2,
			mwidth : 160,
			width : 80,
			header : "<div align='center'>采取措施名称</div>",
			dataIndex : "measureName"
		}, {
			width : 80,
			header : "<div align='center'>起始年月</div>",
			dataIndex : "startDate"
		}, {
			mtext : "流动人口<br>婚育证明发验情况</div>",
			mcol : 4,
			mwidth : 320,
			width : 80,
			header : "<div align='center'>发证年月</div>",
			dataIndex : "certificateDate"
		}, {
			width : 80,
			header : "<div align='center'>查验年月</div>",
			dataIndex : "checkDate"
		}, {
			width : 80,
			header : "<div align='center'>查验结果</div>",
			dataIndex : "checkResult"
		}, {
			width : 80,
			header : "<div align='center'>证件编号</div>",
			dataIndex : "certificateNo"
		}]);

 

cm中设置完成后 还要在grid中调用之前提到的插件

其实很简单,只需要在grid中调用这句话话就可以了

view : new MyGridView(viewConfig)

  • 大小: 38.2 KB
分享到:
评论
1 楼 package 2013-03-06  
不知楼主 是否试过火狐下面报错.....b.firstChild.style is undefied 怎么解决了

相关推荐

    extjs grid 多表头插件

    在"groupheader"这个文件中,可能包含了实现多表头功能的示例代码、配置文件或样式资源。开发者可以研究这些文件来学习如何在自己的ExtJS Grid中应用多表头插件,或者进行进一步的定制和优化。 总结来说,ExtJS ...

    extjs 实现动态表头

    在IT领域,特别是Web开发中,ExtJS是一个广泛使用的JavaScript框架,它提供了丰富的用户界面组件,包括表格(Grid)等。动态表头是ExtJS中一个高级特性,它允许开发者根据需要在运行时动态地创建和修改表格的列结构...

    extjs grid示例代码

    以下是对`ExtJS Grid`示例代码的详细解析: 1. **Grid的基本结构** - `Ext.grid.Panel`:这是Grid组件的基础类,它包含了一个可配置的列模型(column model)、数据源(store)以及视图配置。 - `store`:存储...

    ExtJS grid过滤操作

    在myapp4项目中,你可能会找到相关的代码示例,展示了如何在实际应用中配置和使用ExtJS Grid的过滤功能。通过阅读和理解这些代码,你可以更好地理解和应用上述理论知识。 总结来说,ExtJS Grid的过滤操作提供了...

    extjs 双层表头

    使用extjs生成双层表头,父表头包括子表头

    extjs3多表头

    多表头的实现基于Ext.grid.ColumnModel,它定义了表格列的配置和行为。在ExtJS 3中,你可以通过嵌套ColumnModel来创建多层表头。下面将详细介绍如何使用ExtJS 3创建多表头,以及相关的配置项和方法。 1. **创建多...

    extjs3合并表头 rowspan

    10. **Examples and Tutorials**: ExtJS社区提供了一些示例和教程,可以帮助你理解和实现表头的合并功能。通过参考这些资源,你可以更好地了解如何在实际项目中应用这些技术。 理解并掌握以上知识点,将有助于你在...

    ExtJs4 进销存 源代码

    这个进销存源代码示例展示了如何利用ExtJs4实现库存管理、销售管理和采购管理的核心功能,帮助开发者更好地理解和应用ExtJs4在实际项目中的实践。 进销存系统是企业管理中不可或缺的一部分,它涵盖了采购...

    EXTJS grid导出EXCEL文件

    4. **源码使用**:提到“源码可以直接导入MYECLIPSE使用”,这意味着提供的是一个实际的代码示例,你可以直接在MyEclipse(一个流行的Java集成开发环境)中打开并运行,以便学习和理解如何实现EXTJS Grid到Excel的...

    开发extjs程序可查看页面源代码

    ExtJS是一种基于JavaScript的前端框架,用于构建富客户端应用程序。...掌握查看源代码的方法,结合使用开发者工具和专用的ExtJS工具,能够提高问题定位的准确性和开发效率,从而打造更加健壮和高效的Web应用。

    EXTJS2.2.1中Grid表头的下拉菜单很难看

    4. **JavaScript 错误或冲突**:如果页面上的其他JavaScript代码与EXTJS的实现有冲突,也可能导致表头下拉菜单的显示异常。检查并排除潜在的JavaScript错误是解决问题的关键步骤。 解决这个问题的方法包括: 1. **...

    ExtJs Grid选择行

    ExtJs Grid支持多种选择模式,如单一选择(Single Selection)、多重选择(Multiple Selection)和区间选择(Range Selection)。选择模型决定了用户如何以及何时能够选择Grid中的行。默认情况下,Grid使用`Ext....

    ExtJS4中Desktop独立源代码+功能扩充

    "ExtJS4中Desktop独立源代码+功能扩充"是指提供了一个包含额外功能和改进的Desktop实现,比如增加了主题切换功能。 1. **ExtJS核心库**:ExtJS的核心库包括一系列基础组件,如窗口(Window)、面板(Panel)、表单...

    ExtJs3.1目前所有例子源代码

    这个压缩包包含了ExtJs 3.1的所有示例源代码,对于初学者来说,是一个宝贵的资源,可以用来学习和理解这个框架的工作原理。 首先,让我们深入了解一下ExtJs 3.1中的核心概念和主要特性: 1. **组件化**:ExtJs的...

    extjs grid

    在EXT4.2.1这个压缩包中,可能包含了EXTJS 4.2.1的完整库文件、示例代码、文档和其他资源,可以帮助开发者快速上手EXTJS Grid的开发。通过学习和实践这些资源,开发者能够熟练掌握EXTJS Grid的使用,构建出功能强大...

    extjs 双表头

    双表头在ExtJS中可以通过`Ext.grid.header.Container`和`Ext.grid.column.Column`组件的组合来实现。首先,创建一个`headerContainer`,然后在这个容器中添加两个或多个`column`,这些`column`可以设置不同的标题和...

    ExtJS笔记---Grid实现后台分页

    以上是ExtJS Grid实现后台分页的基础步骤和关键概念。实际应用中,可能还需要处理更多的细节,如错误处理、动态加载列等。对于初学者来说,理解这些核心概念并结合具体的代码示例进行实践,能有效提升ExtJS开发能力...

    Extjs Tree + JSON + Struts2 示例源代码

    ExtJS Tree + JSON + Struts2 示例源代码是结合了三种技术来实现一个动态的、交互式的树形数据展示的应用。这个示例中,ExtJS用于前端UI的构建,JSON作为数据交换格式,而Struts2则作为后端MVC框架处理请求和返回...

    EXTJS产品级别管理后台源代码

    EXTJS产品级别管理后台源代码则是一个使用EXTJS开发的后端管理系统,主要用于处理产品的分级和管理任务。 在EXTJS中,产品级别的管理可能涉及到以下几个核心概念和技术: 1. **EXTJS组件系统**:EXTJS的核心是其...

Global site tag (gtag.js) - Google Analytics