ASP.NET-FineUI开发实践-9(四)

简介: 现在是这么个问题,在开发中表格是动态出来的,就是标准板是全部字段列出,客户要根据情况列出自己想要的,在增加操作页面的同时要是能用前台自带的功能直接保存到后台就好了,现在的列显示和隐藏是不回发的。 1.

现在是这么个问题,在开发中表格是动态出来的,就是标准板是全部字段列出,客户要根据情况列出自己想要的,在增加操作页面的同时要是能用前台自带的功能直接保存到后台就好了,现在的列显示和隐藏是不回发的。

1.FineUI引用的extjs是ext-part1.js,这就不说了,以前截过图,这个文件是压缩的,参数也是简化的不好看,其实这个就是ext-all.js, ext-all哪来的呢,就是extjs官方实例里下的,下来之后也是压缩的,旁边还有个不压缩的, ext-all-debug.js ,完全可以看,那我直接看它就等于看 ext-part1.js了,下面我要找到生成grid表头的类,搜Ext.grid.一个一个找看到有Ext.grid.header,header就是头的意思,再在这里找,找到getColumnMenu,恩,字面意思就能看出得到列菜单,怎么确定呢,看到个属性是checkHandler 选择的意思,就是选择事件,触发的是onColumnCheckChange,
  1. onColumnCheckChange:function(checkItem, checked){
    var header =Ext.getCmp(checkItem.headerId);
    header[checked ?'show':'hide']();
    },
    

      

看到show,hide ,显示和隐藏的意思。进一步测试,找到 ext-part1.js下onColumnCheckChange,改了它,加个alert('1'),保存,刷新,当我勾选列隐藏和显示时弹出1,触发成功,就是改它。
2.位置找到了就是改,直接改 ext-part1.js?那 ext-part2就失去意义了, ext-part2是干嘛的,FineUI自己重写替换了好多方法,也新增了好多方法方便交互或修补bug,我直接找到了Ext.grid.Panel,就照着这个重写就行,看到
  1. if(Ext.grid.Panel){
    Ext.override(Ext.grid.Panel,{
    

      

分析下,如果是 Ext.grid.Panel就是引用的是 Ext.grid.Panel类, override搜了下API就是覆盖重写的意思,那好,直接重写 onColumnCheckChange, onColumnCheckChange上面的列是Ext.grid.header.Container,那么在Ext.gird.Panel上面写:
  1. if(Ext.grid.header.Container){
    Ext.override(Ext.grid.header.Container,{
    onColumnCheckChange:function(checkItem, checked){
    var header =Ext.getCmp(checkItem.headerId);
    header[checked ?'show':'hide']();
    F.customEvent("触发后台操作");
    }
    });
    }
    

      

又用到customEvent,咋用就不写了功能是Alert.Show(),编译,保存,刷新,成功触发后台方法。
3.干触发了没参数我保存啥,看见接受了两个参数,checkItem和checkd,意思是项和选择状态, checkItem可定就是选择的项,他都有什么属性呢,还是找到 ext-all-debug.js下这个方法,
  1. for(; i < itemsLn; i++){
    item = items[i];
    menuItem =newExt.menu.CheckItem({
    text: item.text,
    checked:!item.hidden,
    hideOnClick:false,
    headerId: item.id,
    menu: item.isGroupHeader ?this.getColumnMenu(item):undefined,
    checkHandler:this.onColumnCheckChange,
    scope:this
    });
    

      

首先循环项,就是循环的列头总数,一个一个来,创建一个菜单选择元素,然后就是属性,那 checkItem的属性就是 menuItem的属性,那么有
  1. if(Ext.grid.header.Container){
    Ext.override(Ext.grid.header.Container,{
    onColumnCheckChange:function(checkItem, checked){
    var header =Ext.getCmp(checkItem.headerId);
    header[checked ?'show':'hide']();
    F.customEvent("触发后台操作保存该列隐藏显示状态,列名:"+checkItem.text+" 列ID :"+checkItem.headerId+" 选择状态:"+checked+";gridID:"+this.grid.id);
    }
    });
    }
    

      

 
在试试,触发后台方法,输出结果为预期。
 
更改了 ext-part2.js就要保存好,如果项目里用了,升级的时候覆盖掉就没有了,另外还要介绍自己修改和添加FineUI控件的属性,好像以前提到过在 ASP.NET-FineUI开发实践-6(三) 7 里,处理了 TriggerBox的回车触发,怎么找到的就是转到定义找到FineUI项目的文件再搜索就可以了,用到的不是特别多,可以结合 ext-part2.js再次做一些改进,就不细谈了。
 

 

目录
相关文章
|
9天前
|
设计模式 开发框架 JavaScript
基于.NET8 + Vue/UniApp前后端分离的快速开发框架,开箱即用!
基于.NET8 + Vue/UniApp前后端分离的快速开发框架,开箱即用!
|
1月前
|
XML JSON API
ServiceStack:不仅仅是一个高性能Web API和微服务框架,更是一站式解决方案——深入解析其多协议支持及简便开发流程,带您体验前所未有的.NET开发效率革命
【10月更文挑战第9天】ServiceStack 是一个高性能的 Web API 和微服务框架,支持 JSON、XML、CSV 等多种数据格式。它简化了 .NET 应用的开发流程,提供了直观的 RESTful 服务构建方式。ServiceStack 支持高并发请求和复杂业务逻辑,安装简单,通过 NuGet 包管理器即可快速集成。示例代码展示了如何创建一个返回当前日期的简单服务,包括定义请求和响应 DTO、实现服务逻辑、配置路由和宿主。ServiceStack 还支持 WebSocket、SignalR 等实时通信协议,具备自动验证、自动过滤器等丰富功能,适合快速搭建高性能、可扩展的服务端应用。
109 3
|
9天前
|
存储 缓存 NoSQL
2款使用.NET开发的数据库系统
2款使用.NET开发的数据库系统
|
9天前
|
开发框架 JavaScript 前端开发
2024年全面且功能强大的.NET快速开发框架推荐,效率提升利器!
2024年全面且功能强大的.NET快速开发框架推荐,效率提升利器!
|
1月前
|
JSON C# 开发者
C#语言新特性深度剖析:提升你的.NET开发效率
【10月更文挑战第15天】C#语言凭借其强大的功能和易用性深受开发者喜爱。随着.NET平台的演进,C#不断引入新特性,如C# 7.0的模式匹配和C# 8.0的异步流,显著提升了开发效率和代码可维护性。本文将深入探讨这些新特性,助力开发者在.NET开发中更高效地利用它们。
34 1
|
1月前
|
开发框架 NoSQL MongoDB
C#/.NET/.NET Core开发实战教程集合
C#/.NET/.NET Core开发实战教程集合
|
1月前
|
C# Windows
一款基于.NET开发的简易高效的文件转换器
一款基于.NET开发的简易高效的文件转换器
|
JavaScript API
ASP.NET-FineUI开发实践-9(二)
其实我也不会,老实教人学怕误人子弟,但是抱着毁人不倦的精神还是糊弄糊弄个别小白吧,最起码能加点原创。 下面以表单为例,打开官方项目,版本为FineUI_4.1.1,打开form_compare页,右键在浏览器中查看,右键查看源文件,这次要做的是前台通过按钮点击生成form及与后台的交互。
865 0
|
前端开发 API 数据库
ASP.NET-FineUI开发实践-9(三)
1. TextChanged事件前台触发回发后台,接上文,先给TextBox1加上事件,看看是怎么生成出来的, 注意AutoPostBack="true",找源代码,f4多出了个 listeners: { change: function () { ...
845 0
|
前端开发 JavaScript
ASP.NET-FineUI开发实践-8(二)
把上回的做一些改进 1.点击grid2的行改变TriggerBox1的值 var v = $(item).find('.x-grid-cell-Name div.
808 0

热门文章

最新文章

相关实验场景

更多
下一篇
无影云桌面