前段时间,公司里做个新玩意儿,我们开发组选用ExtJs4.2.1Mvc模式,开发过程中遇到了很多问题(避免不了不专业的需求人员提出各种一拍脑瓜子就决定的需求),经过查看api都一一解决,现在把开发过程中遇到的且已解决的问题,记录下来,供以后查看,也供新接触ExtJs的网友借鉴,描述不到位或有错误的地方,望指正!(注:下文中提到的方法均为ExtJs库中的方法,并非js原生)
因为整个项目都是运用的ExtJs的MVC,所以项目中基本都是js文件(自定义的js文件接近100个,更不用说ExtJs的库了),导致页面加载很慢,性能问题就不提了,这是个老大难问题!
问题1:
关于Grid页面滚动的问题,现在有一个Ext.grid.Panel,在这个grid中有两类数据,一类是可用数据,另一类是禁用数据,可用数据正常显示,禁用的则灰色显示(灰色显示利用grid的viewConfig的getRowClass属性可以做到,seems like this:
getRowClass : function(record,rowIndex,rowParams,store){
return (record.get('youxiao1') == 0 || record.get('isedit') == 0) ? 'row-valid' :' ';
}
);
在这个grid中的两类数据是可以编辑的,当编辑后,为了实现两类数据不混乱显示,于是就用到了store.sort()方法,这个方法会导致grid内容出现滚动,用户不希望在编辑grid时总是滚来滚去,于是叫我们想想办法,于是我用了两天时间来完善这个需求(这过程中,使用了3中方式来实现,第三种方式最完美):
方式一:直接使用focusRow( row, [delay] ),让某一行聚焦;
方式二:获得当前编辑行和grid中第一行的record,然后通过getOffsetsTo()方法计算这两行记录在grid的垂直距离是多少,然后让滚动条滚动到这个距离值的位置,that's all!这个逻辑都在grid的viewConfig配置中实现,然后在编辑行后通过grid.getView().XXX()调用。在viewConfig中添加以下两个方法:
//滚动Grid到指定的Record
scrollToRecord:function(record){
var index = this.ownerCt.getStore().indexOf(record);
this.scrollToRow(index);
},
//滚动Grid到指定的行
scrollToRow:function(rowIndex){
var firstRow = Ext.get(this.getNode(0)); //grid中第一行
var row = Ext.get(this.getNode(rowIndex)); //当前编辑行
var distance = row.getOffsetsTo(firstRow)[1]; //获取垂直距离
//this.scroller.dom.scrollTop = distance; this.scroller在Ext4.x中似乎没有这个属性,它只存在于3.x?
this.getEl().setScrollTop(distance); //设置滚动条
}
方式三:虽然前两种方式也能满足需求,但是不完美,现在说说最完美的解决方案,也是最简单的。
在编辑行之前,先获得当前滚动条的位置:var scrollTop = grid.getView().getEl().getScrollTop(); //排序之前,grid滚动条的scrollTop
在编辑结束之后,再将滚动条滚回最开始的位置:grid.getView().getEl().setScrollTop(scrollTop);
如果我们的Grid中有固定列,就是有些column设置了locked:true这个属性的话,就不能用上面的方法,将会无效,因为有locked的grid的view不能直接获取到,它分为lockedView、normalView,在进行滚动时,要两个view都进行滚动,否则会出现表格错位的现象哦~~,知道这点以后,其他设置就和上面的一直了!
问题1完毕!

HTML代码可以通过在线验证器、集成工具和自动化流程来确保其清洁度。1)使用W3CMarkupValidationService在线验证HTML代码。2)在VisualStudioCode中安装并配置HTMLHint扩展进行实时验证。3)利用HTMLTidy在构建流程中自动验证和清理HTML文件。

HTML、CSS和JavaScript是构建现代网页的核心技术:1.HTML定义网页结构,2.CSS负责网页外观,3.JavaScript提供网页动态和交互性,它们共同作用,打造出用户体验良好的网站。

HTML的功能是定义网页的结构和内容,其目的在于提供一种标准化的方式来展示信息。1)HTML通过标签和属性组织网页的各个部分,如标题和段落。2)它支持内容与表现分离,提升维护效率。3)HTML具有可扩展性,允许自定义标签增强SEO。

HTML的未来趋势是语义化和Web组件,CSS的未来趋势是CSS-in-JS和CSSHoudini,JavaScript的未来趋势是WebAssembly和Serverless。1.HTML的语义化提高可访问性和SEO效果,Web组件提升开发效率但需注意浏览器兼容性。2.CSS-in-JS增强样式管理灵活性但可能增大文件体积,CSSHoudini允许直接操作CSS渲染。3.WebAssembly优化浏览器应用性能但学习曲线陡,Serverless简化开发但需优化冷启动问题。

HTML、CSS和JavaScript在Web开发中的作用分别是:1.HTML定义网页结构,2.CSS控制网页样式,3.JavaScript添加动态行为。它们共同构建了现代网站的框架、美观和交互性。

HTML的未来充满了无限可能。1)新功能和标准将包括更多的语义化标签和WebComponents的普及。2)网页设计趋势将继续向响应式和无障碍设计发展。3)性能优化将通过响应式图片加载和延迟加载技术提升用户体验。

HTML、CSS和JavaScript在网页开发中的角色分别是:HTML负责内容结构,CSS负责样式,JavaScript负责动态行为。1.HTML通过标签定义网页结构和内容,确保语义化。2.CSS通过选择器和属性控制网页样式,使其美观易读。3.JavaScript通过脚本控制网页行为,实现动态和交互功能。

HTMLISNOTAPROGRAMMENGUAGE; ITISAMARKUMARKUPLAGUAGE.1)htmlStructures andFormatSwebContentusingtags.2)itworkswithcsssforstylingandjavascript for Interactivity,增强WebevebDevelopment。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

安全考试浏览器
Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

Atom编辑器mac版下载
最流行的的开源编辑器

适用于 Eclipse 的 SAP NetWeaver 服务器适配器
将Eclipse与SAP NetWeaver应用服务器集成。

SublimeText3汉化版
中文版,非常好用

SecLists
SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。