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

【Operamasks-UI】可编辑表格insertRow和deleteRow遇到空表格时的问题

 
阅读更多

问题描述:在OMUI的一个可编辑的表格omGrid中,如果没有对组件设置dataSource,在执行insertRow操作时,表格中不会插入新记录,而通过自行扩展该组件为其配置dataSource之后(参见【Operamasks-UI】omGrid直接设置json数据给dataSource),执行deleteRow时会出现js报错的问题。

问题分析:

首先对于表格未设置dataSource时,直接执行insertRow操作,表格中未插入新记录的问题,是因为官方在开发该可编辑插件时,认为dataSource一定是会配置的,即使该返回一个空的数据集合也可以,如{rows:[],total:0}。通过om-gridom-grid-roweditor的源代码的分析得知,roweditor插件是通过_onRefresh()函数对数据进行初始化的,代码的执行顺序图如下:



从图中可以看到,如果dataSource未设置或者加载数据失败的话,是不会调用_onRefreshCallbacks的,也就是说roweditor没有被初始化,所以在insertRow时不会成功。

再来研究一下这个执行顺序,会发现在_init()执行时,已经完成了对_onRefreshCallbacks的调用,而在init()执行之后,om-grid-roweditor插件才为om-grid注入了一个_onRefresh函数,从理论上来说,roweditor初始化是不会被完成的,但是为什么设置过dataSourceomGrid就没有问题了呢?了解了jqueryajax调用机制之后,应该就会知道jquery加载数据是异步加载的,所以在omGrid加载数据时,roweditor已经初始化过了。而前面提到的自行扩展omGrid设置dataSource方式中,直接通过json数据作为数据源进行初始化时,代码执行是顺序执行的,同样会出现roweditor未被初始化的情况,导致在deleteRow时报js错误。如果尝试将om-grid中加载数据的ajax请求改为同步请求,也同样会出现deleteRowjs错误的情况。这算是om-grid-roweditor深藏的一个bug??

解决方案:

有了前面的分析,得出的解决方案是在组件初始化完成之后再为组件设置值,如下:

var data={"rows":[{}],"total":0};
$('#grid').omGrid({
	title : '表格',
	limit:15,
	//dataSource:data,
	editMode:"all",
	colModel : [ {header : 'ID', name : 'id', width : 100, align : 'center'}, 
				 {header : '地区', name : 'city', width : 120, align : 'left',editor:{editable:true}}, 
				 {header : '地址', name : 'address', align : 'left', width : 'autoExpand'
				 ,renderer:function(value,rowData,rowIndex){
					return value + "<img src='tool_tip.gif'/>";
				 }
				 } ]
});
$("#grid").omGrid("setData",data);
以上内容转自:http://dinguangx.iteye.com/blog/1900652

需要更正一点,到目前为止官方发布的最新版本为2.0,GitHub上有个2.1的好像还不如2.0稳定,2.0版本的“setData”方法是不支持直接设置JSON格式数据的,所以解决这个问题的方法应该是添加一个文件或者添加一个后台方法,返回数据“

{"rows":[{}],"total":0}
分享到:
评论

相关推荐

    operamasks-ui 帮助文档

    只是我在网上找的 operamasks-ui api 文档 , 希望对你们有帮助

    operamasks-ui-2.0

    operamasks-ui-2.0 这个帮助文档很难才找到的,感谢CSDN,其中的说明真的是很详细了,维护旧代码用到的这个框架,相比easyui和bootstrap这个框架简单一些,不过用起来还是不错的,除了文档太少,不过有这个就基本...

    operamasks-ui-2.0-demo.zip

    "Operamasks UI 2.0 Demo"是一个与JavaScript相关的压缩包,包含了对Opera Masks用户...实际使用时,开发者需要按照readme.txt的指示进行操作,并通过operamasks-ui.war文件了解和体验Opera Masks UI 2.0的全部功能。

    operamasks-ui_demo

    operamasks-ui的demo程序,能够直接部署,运行。查看om-ui上优秀的标签。

    operamasks-ui

    "Operamasks-UI" 是一个专为Opera浏览器设计的用户界面增强插件的源代码包,其版本为1.2,存储在一个名为"operamasks-ui-1.2.zip"的压缩文件中。这个插件的目标是提供更加个性化、高效且易用的浏览体验。在了解这个...

    金蝶operamasks-ui(API)

    1、将operamasks-ui.war部署到符合Servlet 2.5/JSP2.1的所有Web容器或J2EE应用服务器(如:Tomcat) 2、war包部署成功后访问:http://127.0.0.1:8080/operamasks-ui/

    operamasks-ui 最新.

    operamasks-ui 最新.完成的,下载下来直接可以点击查看,跟官网一模一样

    operamasks-ui-2.0.zip

    总的来说,"operamasks-ui-2.0.zip" 提供了一个基于JavaScript的用户界面解决方案,包含丰富的组件和工具,适用于需要交互性界面的Web项目。其开源许可证使得开发者可以在遵守相应条款的情况下自由使用和定制,而...

    operamasks-ui-2.1-demo

    总之,“operamasks-ui-2.1-demo”提供了一个实践OperaMasks UI框架的平台,对于想要提升浏览器扩展开发技能的开发者和设计师来说,这是一个宝贵的资源。通过阅读readme.txt和运行war文件,我们可以深入学习这个框架...

    operamasks-ui-2.0-demo--.zip

    这个压缩包文件 "operamasks-ui-2.0-demo--.zip" 包含了用于演示和实践如何使用Opera Masks UI 2.0版本的资源和代码示例。 Opera Masks UI 是一个强大的工具,它允许开发者通过自定义界面元素和交互方式来增强...

    operamasks-ui-2.1.zip

    6. **swf** 文件夹:SWF文件通常是Adobe Flash的内容,这可能意味着"Operamasks UI 2.1"在设计时考虑到了对Flash的支持,尽管现在Flash已经逐渐被淘汰,但在一些老旧的应用或特定场景中仍可能使用。 总结来说,...

    operamasks-ui-master.zip

    【标题】"operamasks-ui-master.zip" 是一个包含了 OperaMasks UI 2.0 框架的源代码压缩包。这个框架是基于前端开发的,尤其适用于构建企业级的 Web 应用程序,其设计目标是提高开发效率,提供良好的用户体验。...

    operamasks-ui和struts2、springMVC框架整合实践

    springMVC框架开发 博文链接:https://lyg8266.iteye.com/blog/1404821

    OperaMasks-UI-Guide帮助文档

    OperaMasks-UI-Guide帮助文档

    operamasks-ui-2.0-doc

    通过深入学习这份"operamasks-ui-2.0-doc",开发者不仅可以掌握Operamasks的集成和自定义方法,还能了解到区块链技术在Web应用中的实际应用,这对于构建基于以太坊或其他区块链平台的DApp至关重要。同时,了解这些...

    Operamasks-UI

    OM-UI简介 OM-UI是一个基于jQuery的前端组件库。它提供了丰富的组件,包括各种表单组件、布局组件、功能性组件等。它旨在帮助用户快速构建企业应用。它是简单易用的,并配有丰富的文档、示例和详实的开发手册。最...

    OperaMasks-UI-Guide.rar

    《OperaMasks UI指南》是针对OperaMasks用户界面的一份详细参考资料,旨在帮助用户更好地理解和操作这款浏览器扩展。这份指南以`.chm`( Compiled Help Manual)格式封装,是一种常见的Windows帮助文档格式,通常...

    扩展OperamasksUI的grid的排序和显示detail属性

    这篇博客“扩展OperamasksUI的grid的排序和显示detail属性”显然聚焦于如何增强Operamasks UI框架的功能,特别是其grid组件。Operamasks UI可能是一个用于构建Web应用的开源库,提供了丰富的组件和功能,便于开发者...

Global site tag (gtag.js) - Google Analytics