首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

Ext2.0代码追踪:GridPanel只有一行记录时,字段修改也触发select事件

2012-10-25 
Ext2.0代码跟踪:GridPanel只有一行记录时,字段修改也触发select事件背景:界面有两个GridPanel,分别为发票

Ext2.0代码跟踪:GridPanel只有一行记录时,字段修改也触发select事件

背景:

界面有两个GridPanel,分别为发票列表、费用列表。一个必要对应多个费用进行核销。

应用上,选择一个发票记录时,自动加载对应的同一业务下的费用,并计算出总费用金额。将费用总金额回写到选择的发票核销金额字段。

当发票有多行记录时,一切正常。当发票只有一条时,发生死循环。

?

调试:初步调试发现,如果只有一条发票时,费用加载完自己又清除掉,然后再加载。

?? ? ? ?查看Ext源代码,发现为Ext2.0的一个bug。在Ext2.2以后都已经解决。

?

过程:

1,回写发票的核销金额时,调用了Record的set方法。

?

/** * 解决Grid只有一条数据时,对该记录调用set方法时,会造成刷新/选择事件 *20101125.1 By  Simon */Ext.grid.GridView.prototype.insertRows = function(dm, firstRow, lastRow, isUpdate) {if (!isUpdate && firstRow === 0 && lastRow >= dm.getCount() - 1) {//加入判断是否只是updatethis.refresh();} else {if (!isUpdate) {this.fireEvent("beforerowsinserted", this, firstRow, lastRow);}var html = this.renderRows(firstRow, lastRow);var before = this.getRow(firstRow);if (before) {Ext.DomHelper.insertHtml('beforeBegin', before, html);} else {Ext.DomHelper.insertHtml('beforeEnd', this.mainBody.dom, html);}if (!isUpdate) {this.fireEvent("rowsinserted", this, firstRow, lastRow);this.processRows(firstRow);}}this.syncFocusEl(firstRow);};
?

?

?

?

?

?

热点排行