首页 > 其他分享 >ExtJS 4中自定义Grid列标题的对齐方式

ExtJS 4中自定义Grid列标题的对齐方式

时间:2023-05-21 14:03:01浏览次数:47  
标签:me 代码 自定义 titleAlign align Ext Grid el ExtJS


        从ExtJS 2.0到目前的4.0,Grid的列标题对齐方式都是和数据的对齐方式一致的,这不太符合中国人的习惯。解决办法是,自己重写一下Ext.grid.column.Column对象中渲染列标题的对齐方式的代码。代码只有一句,在afterRender方法中,因而重写afterRender方法就行了,具体做法如下。

       首先在本地化文件中添加以下代码:

      

if(Ext.grid.Column){
	Ext.grid.Column.override({
		//要重写的方法
	});
}



      这里要注意,不要使用习惯的Ext.apply来重写,因为在afterRender方法中要调用callParent方法调用父类的afterRender方法,而这需要用到方法内的”$owner“和”$name“属性,使用apply方法,会丢失这两个属性,导致调用callParent方法失败,因而必须使用override方法重写,这样才可以保留这两个属性。


      接着将afterRender方法的定义代码全部复制到注释中的位置(注意将最后的逗号去掉),然后修改下面代码:


el.addCls(Ext.baseCSSPrefix + 'column-header-align-' + me.align).addClsOnOver(me.overCls);


     

      这句代码是为列标题添加对齐的样式的,其默认是使用配置项align的值的,因而我们只要添加一个配置项,然后使用该配置项就行了,修改代码如下:

me.titleAlign = me.titleAlign || me.align;

el.addCls(Ext.baseCSSPrefix + 'column-header-align-' + me.titleAlign).addClsOnOver(me.overCls);



       代码中添加了一个titleAlign的配置项,如果定义了该配置项,则使用该配置项的值,否则使用align的值,注意一定要修改粗体代码,不然添加的titleAlign就是多余的。

       这样,就可以在列的配置对象中添加titleAlign配置项来设置列标题的对齐方式了。


       最终在本地化文件加入的代码如下:

if(Ext.grid.Column){
	Ext.grid.Column.override({
		//要重写的方法
	    afterRender: function() {
	        var me = this,
	            el = me.el;
	        me.callParent(arguments);
	
	        me.titleAlign = me.titleAlign || me.align;
	        el.addCls(Ext.baseCSSPrefix + 'column-header-align-' + me.titleAlign).addClsOnOver(me.overCls);
	
	        me.mon(el, {
	            click:     me.onElClick,
	            dblclick:  me.onElDblClick,
	            scope:     me
	        });
	        if (!Ext.isIE8 || !Ext.isStrict) {
	            me.mon(me.getFocusEl(), {
	                focus: me.onTitleMouseOver,
	                blur: me.onTitleMouseOut,
	                scope: me
	            });
	        }
	
	        me.mon(me.titleContainer, {
	            mouseenter:  me.onTitleMouseOver,
	            mouseleave:  me.onTitleMouseOut,
	            scope:      me
	        });
	
	        me.keyNav = Ext.create('Ext.util.KeyNav', el, {
	            enter: me.onEnterKey,
	            down: me.onDownKey,
	            scope: me
	        });
	    }
	});
}


      粗体代码是修改过的代码。


      示例代码:

     

var store=Ext.create("Ext.data.ArrayStore",{
	fields:["id","name"],
	data:[["1","张三"],["2","李四"]]
});

Ext.create("Ext.grid.Panel",{
	renderTo:Ext.getBody(),
	store:store,	
	columns:[
		{text:"编号",dataIndex:"id",flex:1,titleAlign:"center"},
		{text:"姓名",dataIndex:"name",flex:1}
	]
})


示例结果:

ExtJS 4中自定义Grid列标题的对齐方式_extjs

第一列定义了titleAlign为center,因而列标题会居中对齐。

      

标签:me,代码,自定义,titleAlign,align,Ext,Grid,el,ExtJS
From: https://blog.51cto.com/dqhuang/6319213

相关文章

  • ExtJS 4 Grid组件
    我们正在努力为ExtJS4做准备,到目前为止,我们已经发布了3个开发者预览版,我们的目标是争取在4到6周内或争取更快的时间内发布最终版本。在最近的开发者预览版,我们首次发布了新的Grid组件。新的grid已经重写,而且比3.x版本的有更多功能。新的grid不但大幅提高了性能,而且更加灵活,因此......
  • ExtJS 4 Beta 2预览:Ext.Brew包
       我们还没有介绍过ExtJS4众多特性之一的新Ext.Brew包。这是独一无二的Javascript框架,Ext.Brew是采用Sencha独特技术酿造的的一杯完美的茶。   使用新数据包的强大功能,可在任何时候构建一个生成一致均衡的茶的应用程序。开始之前,首先定义一个部件之间用于交互的模型。Ex......
  • delphi cxgrid截图
    效果图: 点击GetImage,会在程序目录下生成一个表格截图的图片文件,打开后如下图:以下是代码:procedureTForm4.SpeedButton1Click(Sender:TObject);vargridView:TcxGridDBTableView;focusedItem:TcxCustomGridTableItem;focusedRect:TRect;aBitmap:TBitm......
  • 配置wordpress:自定义简码(wordpress 6.2)
    一,添加php代码的例子:1,代码://说明:得到当前时间functionlhdGetNowTime(){ $now=date("Y-m-dH:i:s");return$now;}//注册成简码,名字myNowadd_shortcode('myNow','lhdGetNowTime');//说明:获取完整URLfunctioncurPageURL(){ $pageURL='h......
  • 数据列表管理-底部的自定义代码参考
    <!--做数据的流转状态操作001--><divclass="div_bottom_control_location_area"id="div_rejected_or_approved"><buttononclick="submit_or_reject_for_review(0)"type="button"class="am-btnam-btn-dangerbtn_......
  • 数据列表管理-顶部查询条件的自定义代码参考
     银行:<selectid="sl_bank"class="fsbpmserachcontrolsearch_select"myts="sl"></select>状态:<selectid="sl_status_filter"class="fsbpmserachcontrolsearch_select"myts="sl"><......
  • CxGrid合计相关
    1.OnSummaryAfterSummary事件,CxGrid合计计算后触发此事件可以在事件里获取其值,做相关处理//实售价if(cxGrid1DBTableView1.DataController.Summary.FooterSummaryValues[0]<>null)thenbegin//ThisTimeAccount.Caption:=FloatToStr(cxGridDBTableView1.DataContro......
  • el-table自定义表头
    实现效果<!--*@Descripttion:el-table自定义表头*@version:*@Author:zhangfan*@email:[email protected]*@Date:2020-05-1409:08:01*@LastEditors:zhangfan*@LastEditTime:2020-06-2918:53:17--><template><divclass="topCon......
  • el-tree实现自定义节点内容
    <!--*@Descripttion:el-tree实现自定义节点内容*@version:*@Author:zhangfan*@email:[email protected]*@Date:2020-07-0309:10:28*@LastEditors:zhangfan*@LastEditTime:2020-07-1611:21:20--><template><divclass="treeBo......
  • Qt之格栅布局(QGridLayout)
    QGridLayout是Qt框架中的一个布局管理器类,用于将子部件按照网格方式排列。它是QLayout类的子类,可在水平和垂直方向上自动调整和布局子部件的位置和大小。以下是QGridLayout的一些特点和用法:1.网格布局:QGridLayout将子部件按照网格形式排列,每个子部件占据一个单元格。可以根据需......