extjs4.2 grid编辑验证问题
extjs4.2 grid编辑完后,点击保存按钮调用saveOrUpdateRecord方法,想在该方法内部做校验,record对象跟踪了下,打印出三个record对象,内部属性值也是a,b,c,但是getValue那里打印出来三行都是c,有知道是什么原因吗?实际我想获取指定行的单元格对象
 

 

 
0
navynju
navynju 原因: 在同一个column中,每一行的editor实际上是复用的,你在编辑完之后,这个editor中实际上还是最后一次的值,所以你对每一行进行遍历,然后取到这个列的editor,取到的值始终是一样的 解决方案: 不要从column的editor中取值,而应该从这个grid的model/store中取值
大约 5 年之前 回复

6个回答

原因: 在同一个column中,每一行的editor实际上是复用的,你在编辑完之后,这个editor中实际上还是最后一次的值,所以你对每一行进行遍历,然后取到这个列的editor,取到的值始终是一样的

解决方案:
不要从column的editor中取值,而应该从这个grid的model/store中取值

0

不知道是否是getEditor的默认值造成的
你可以简单测试下

还有你看下每个record值是否正确
col.getEditor(record);

0
luogx
luogx col.getEditor(record);返回的不对
大约 5 年之前 回复
luogx
luogx 我看了下,record是正确的,返回的field内部的值不对
大约 5 年之前 回复
leehuat
leehuat 如果record不正确, 那你要检查下 grid.store.getModifiRecords(); 返回的是否是修改的记录
大约 5 年之前 回复
luogx
luogx 不正确,和提问的是一样结果
大约 5 年之前 回复

我不知道,就看着你自己分数还不够5分

0

这会是什么原因呢,真神奇啊

0

只有一段合并单元格的,不知道能不能给你点启发
[code="java"]
//合并单元格
com.xxx.xxx.xxx.xxx.mergeCells = function(grid,cols){
var arrayTr=document.getElementById(grid.getId()+"-body").firstChild.firstChild.firstChild.getElementsByTagName('tr');

var trCount = arrayTr.length;
var arrayTd;
var td;
var merge = function(rowspanObj,removeObjs){ //定义合并函数
if(rowspanObj.rowspan != 1){
arrayTd =arrayTr[rowspanObj.tr].getElementsByTagName("td"); //合并行
td=arrayTd[rowspanObj.td-1];
arrayTd[rowspanObj.td-1].style.backgroundColor='#B0E0E6';
td.rowSpan=rowspanObj.rowspan;
td.vAlign="middle";
Ext.each(removeObjs,function(obj){ //隐身被合并的单元格
arrayTd =arrayTr[obj.tr].getElementsByTagName("td");
arrayTd[obj.td-1].style.display='none';

});
}

};

var rowspanObj = {}; //要进行跨列操作的td对象{tr:1,td:2,rowspan:5}

var removeObjs = []; //要进行删除的td对象[{tr:2,td:2},{tr:3,td:2}]
var col;
Ext.each(cols,function(colIndex){ //逐列去操作tr
var rowspan = 1;
var divHtml = null;//单元格内的数值

for(var i=1;i<trCount;i++){ //i=0表示表头等没用的行
arrayTd = arrayTr[i].getElementsByTagName("td");
var cold=0;
// Ext.each(arrayTd,function(Td){ //获取RowNumber列和check列
// if(Td.getAttribute("class").indexOf("x-grid-cell-special") != -1)
// cold++;

// });
col=colIndex+cold;//跳过RowNumber列和check列
if(!divHtml){
divHtml = arrayTd[col-1].innerHTML;
rowspanObj = {tr:i,td:col,rowspan:rowspan}
}else{
var cellText = arrayTd[col-1].innerHTML;
var addf=function(){
rowspanObj["rowspan"] = rowspanObj["rowspan"]+1;
removeObjs.push({tr:i,td:col});
if(i==trCount-1)
merge(rowspanObj,removeObjs);//执行合并函数
};
var mergef=function(){
merge(rowspanObj,removeObjs);//执行合并函数
divHtml = cellText;
rowspanObj = {tr:i,td:col,rowspan:rowspan}
removeObjs = [];
};
if(cellText == divHtml){
if(colIndex!=cols[0]){
var leftDisplay=arrayTd[col-2].style.display;//判断左边单元格值是否已display
if(leftDisplay=='none')
addf();
else
mergef();

}else
addf();

}else
mergef();

}
}
});
};
[/code]

0

这是浏览器控制台输出的问题,
你的代码没错,实际上你已经获得指定行的单元格对象,

只不过console.log(field.getValue()),打印这句日志时,
浏览器控制台是动态关联js对象,找的是当前最新的"field",所以看起来都是一个值,实际在代码执行过程中是不同值

0
luogx
luogx 不是浏览器的问题,grid中那三行,假设中文名称那列a没有填写的话,代码中验证startEdit会定位到那个单元格上的,实际上没有启作用
大约 5 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
extjs4可编辑表格优化
用过extjs4的同学应该都是奔着其好用的可编辑啊表格去的吧,虽然看着好用,但是用起来却伤痕累累啊。今天针对其最大的一个问题,大量数据(800以上)的表格进行编辑时,特别是在ie下,编辑单元格时,要4,,5秒才能编辑完成,这客户能接受?欲哭无泪吧。我下断点调试,从源码看,冒泡时间太多,最后发现是一个store的set方法占了很多时间。最后就是从extjs的可编辑表格编辑完成的先后事件来进行优化的。
ext4.2 Grid刷新后滚动条位置保持不变
注意:EXT4.2版本 方法是记录滚动条的位置。所以要在grid的viewConfig属性里面添加如下参数 viewConfig:{onLoad:Ext.emptyFn, listeners:{ beforerefresh:function(v){ v.scrollTop=v.el.dom.scrollTop; v....
Extjs4.2 Grid单元格编辑
Extjs4.2 Grid单元格编辑,包含日期控件,下拉框控件,同时可控制单元格是否有编辑权限。
ExtJS4.2 双击Grid单元格事件处理
ExtJS4.2 双击Grid单元格事件处理
ext-4.2之grid的高级应用:增删改查!
ext-4.2之grid的高级应用:增删改查!
Extjs4.2 gridPanel中的Store数据远程获取
var modelName = 'model'; Ext.define(modelName,{ extend : "Ext.data.Model", fields : ["id","code", "name"] }); var store = Ext.create("Ext.data.Store", { autoLoad : false, model : modelName, data : [],
DevExpress实现GridControl单元格编辑验证的方法
/// /// 自定义单元格验证 /// /// GridView /// BaseContainerValidateEditorEventArgs /// 委托 /// 委托 /// 当验证不通过对时候,错误提示信息文字 public static void CustomValidatingEdit
Ext4.2入门教程(表格开发例子)
本次教程针对于Ext4.2版本,请下载4.2版本,其他版本目前不是很稳定,或多或少有bug。本人使用eclipseEE版本,以下有些截图是eclipseEE下的截图。关于Extjs4.2下载地址为: 链接:http://pan.baidu.com/s/1bnMo3N5 密码:vbjp 。本次教程为eclipse环境下的开发教程。 1.关于初次下载安装示例。 初次下载好的文件截图目录:
Ext GridPanel 设置点击次数打开可编辑单元格
Ext GridPanel 设置点击次数打开可编辑单元格        在页面中使用GridPanel显示表格,其中有单元格需要点击后变成可编辑状态。GridPanel默认是双击打开可编辑单元格,但是有时又需要单击来打开。这时可以在GridPanel的标签中添加ClicksToEdit属性来控制点击次数,默认参数值是2,将其参数值修改为1即可修改为单击打开单元格可编辑状态。
ExtJS-EditorGridPanel内ComboBox下拉取值的影响处理
(适用于Ext3, 其他版本未做测试) Ext表格中使用ComboBox时,需要进行必要的render. 但点击下拉框加载数据(远程取值)后,会造成其他行的render的数据丢失,在选择行(record)之前进行必要的renderRows,可规避此问题. 代码如下:/* * 重写handleMouseDown,避免下拉框store重新加载影响其他行 */ Ext.grid.CellSelect...
ExtJS4.2 Grid 单元格鼠标悬停提示
ExtJS4.2的FormPanel中TextField的鼠标悬浮提示
Ext.grid.Panel 正确显示日期
Ext.grid.Panel 正确显示日期
EXTJS4种的grid的列编辑
就这个grid的列编辑这东西调试了好久好久,网上的方法几乎试了一遍,最后还是自己一点一点调出来的,有必要记录一下!代码如下:items:[{ xtype:'grid', id:'grid', autoHeight:true, width:500, store:store11,//functionss_upa_store id:...
Extjs4.2 布局详解—Card布局
您可以使用卡布局来创建自己的自定义向导式屏幕。布局是一个标准的CardLayout,底部有一个工具栏,开发者必须提供实现向导业务逻辑的导航功能(请参阅basic.js中的代码以获取详细信息)。 此布局管理多个子组件, 每个都完全填满父容器, 而每次仅显示一个. 此布局样式多用于向导, 实现标签页布局等等. 此类应该通过`layout:'card' Ext.container.Contai
EXTJS 4.2 实现 gridpanel 鼠标悬停单元格以提示信息的方式显示单元格内容。
Ext4JS官方API中给出的Ext.tip.ToolTip的用法如下: grid.getView().on('render', function(view) { view.tip = Ext.create('Ext.tip.ToolTip', { // 所有的目标元素 target: view.el, // 每个网格行导致其自己...
Ext表格(Grid)上面的悬浮提示
NULL 博文链接:https://laodaobazi.iteye.com/blog/1064607
extjs4 grid 实现可以选择文本内容进行复制
给grid添加一个属性             viewConfig:{                   enableTextSelection:true               },
extjs4 grid 滚动条 联动
在做对比数据的时候,需要同步两张grid的滚动条 代码如下:Grid.view.on({ 'render': function(view, opts){ view.mon(view.el, 'scroll', function(){ Grid2.view.el.setScrollLeft(this.el.getScrollLeft());//同步左右
Ext Grid 实现批量添加或者修改
将ExtJS Grid 中的record逐一转化为Bean,实现批量的添加或者修改   package com.hwasun.utils; import java.lang.reflect.Field; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Iterator; ...
ExtJS4 grid合并单元格
Ext.define('V5.cxb.controller.Cxb', { extend : 'Ext.app.Controller', models : ['V5.cxb.model.Cxb'], stores : [], views : ['V5.cxb.view.Grid'], refs : [{ ref:'Grid', selector:'cxbGrid' }],
EXTJS4.2中单选框及多选框
EXTJS4.2中单选框及多选框。 单选框: var flag1 = 1; //控制事件执行一次的开关 var dataSource = ''; var myStore = ''; var page = ''; var grid = ''; var records = ''; $(function(){ $('#p').panel('close'); }) Ext.require([ '
Extjs4.2 为grid行中增加超链接的实现
{ header : "跟踪物流", align : "center", width : 100, menuDisabled : true, sortable : false, renderer : function (value, cellmeta, record, rowIndex, columnIndex, store) { //拿到当前物流单号 var id = record.data['i
Ext.grid.EditorGridPanel点击单元格改变数据,动态添加列
本文的重点1、NumberField的listeners事件并不是很有效的验证,那么我又重新写了它的监听事件 2、grid的动态添加列的方法思路 2-1:首先store是需要动态变化的 2-2:其次cm也是要动态变化的 2-3:grid 有个grid.reconfigure(store,cm);方法可以重新绑定cm和store js代码 var itemId = 0; /*根
一个extjs4.2插件的简单例子
quote: http://whatisextjs.com/extjs/extjs-4-2-plugin-example     I've enjoyed the 4.2 ExtJS release since it came out; especially the new theme and grids. I recently wanted to &quot;puff in&quot; a Panel f...
rac grid 集群验证问题解决
[grid@yn-db01 grid]$ ./runcluvfy.sh stage -pre crsinst -n yn-db01,yn-db02 -r 11gR2 -verbose 执行 集群服务设置 的预检查 正在检查节点的可访问性... 检查: 节点 "yn-db01" 的节点可访问性   目标节点                                  是否可
jqGrid 条件编辑、条件样式、自定义错误验证处理
本文讨论jqGrid如何实现表格行、单元格的条件编辑,表格行和单元格的条件样式显示,自定义编辑规则及自定义错误显示。利用isCellEditable函数实现表格行或单元格的条件编辑,利用colMode的formatter实现表格行或单元格的条件样式,重写info_dialog实现验证错误信息自定义显示。
EXTJS系列笔记————grid新增和修改数据与后台的快速交互
1、拿取grid的storevar store = obj.up(&quot;form&quot;).nextSibling(&quot;gridpanel&quot;).getStore();2、拿取新增记录和修改记录var addRecords = store.getNewRecords();var updateRecords = store.getUpdateRecords();3、将记录变成数组形式var addRecordAr...
ExtJS笔记---Grid实现后台分页
好记性不如烂笔头,现在每次碰见问题和觉得应该记录下来的东西都会保持写博客的习惯,今后再次碰见这种问题,就不用把时间浪费了。 这段时间用ExtJS用的多一点,前段时间碰见的分页问题,今天做个笔记吧。 [img]http://dl.iteye.com/upload/picture/pic/112453/fa19d82d-82ae-3248-9ca0-feb847d326e4.png[/img]...
extjs 数据渲染 枚举 性别 行 单元格
  (类的叫法可能不准确,但extjs就是这么写的) Class Ext.grid.Column类的属性renderer对应函数参数说明可以参考ColumnModel.setRenderer( Number col, Function fn ) setRenderer需要设置行号,参数说明也在此,record参数就是Ext.data.record   Ext.data.record说...
ExtJs4.2分页动态展示每页显示条数
ExtJs4.2分页动态展示每页显示条数引言具体代码如下引用方式(grid)Store中的写法其他 引言 此博文主要用于技术学习交流所用,如有不当之处,请多多指教! 此篇博文主要是学习写Extjs插件,原本的extjs分页插件中是没有这样的功能的,所以需要我们根据自己的需求,自定义自己的分页插件! 此插件的功能是在extjs原有的分页插件上扩增的用于动态显示每页显示条数的: 原本插件如下图所示: ...
DOCTYPE! HTML PUBLIC 声明规范: HTML 4.01 / XHTML 1.0 / XHTML 1.1 DTD
摘自:Fix Your Site With the Right DOCTYPE!: A List Apart DOCTYPE的常用声明:按照 HTML 4.01 XHTML 1.0 XHTML 1.1 列表...
Hap前端kendoui关于必输等校验的总结
HAP前端kendoui关于必输等校验的总结项目常用场景 表单:在项目中经常会有表单验证,比如说注册(新增),信息更改(编辑)等等。在HAP项目中也常见到这两种情况, 比如在模态框(kendoWindow)中的新增、编辑,页面表单信息输入、保存(更改操作)就会用到校验。 grid:在grid表格中也无外乎就新增和编辑保存操作时会触发验证行为。 表单验证表单验证包括了头部信息的验证和模态框中表
Extjs4.2 MVC 动态添加删除组件
例子 :将一个grid添加到一个panel中去 panelExt.define('MyApp.view.MyPanel', { extend: 'Ext.panel.Panel', alias: 'widget.myPanel',//与controller中ref的selector关联 height: 250, id: 'panel', width: 400
如何能够获得Extjs.grid.panel总的Columns的列数
var grid = Ext.create('Ext.grid.GridPanel',{}); var columns = grid.columns; var Length = columns.length
EditorGrid可编辑表格
上节讲到通过后台数据进行分页,分页工具条还可以放置在顶端,或者上下都有而不影响数据,因为它们都共用一个store JavaScript Code复制内容到剪贴板 //创建表格  var grid = new Ext.grid.GridPanel({          renderTo:'grid', //渲染位置          autoHeight:true,       
解决easyui-datagrid在行内编辑时,无法验证的问题
//扩展验证方法 .extend(.extend(.extend(.fn.validatebox.defaults.rules, { validDate: { validator: function(value) { var reg = /1[0-9][0-9][0-9]-([1][0-2]|0?[1-9])-([12][0-9]|3[01]|0?[1-9]) ([01][0-9]|[2][0-3...
Extjs4设置Ext.grid.Panel设置row颜色和高度
viewConfig : { forceFit : true, getRowClass : function(record, index) { if (index % 2 == 0) return &quot;red&quot;; else return &quot;green&quot;; } },   &amp;lt;style type=&quot;text/css&quot;&amp;gt; .re...
ExtJS4 grid单元格添加复选框
效果图: //添加复选框 var deal = function(grid){ //获取视图行数 var rows = grid[0].getView().getStore().totalCount; //获取视图列数 var cols = grid[0].getView().componentLayoutCounter; //遍历节点 for(var i = 0;
ExtJs打印插件
这是别人写的一个打印的小插件,非常好用,仅需在GridPanel(要有title)的构造参数中加上这么一行:   plugins: [Ext.ux.plugins.Print] 另外,在火狐中打印多页时有些不正常,把PrintPreview.htm中的css文件去掉就可以了。   我们来分析一下它的实现原理,首先我们在PrintFriendly.js找到这行代码:   o.too...
Ext-ActionTextColumn表格文字的操作列
/* * 表格actioncolumn扩展,用于显示文字的操作列,而不是图标 */Ext.define('onis.expand.ux.ActionTextColumn', {    extend: 'Ext.grid.column.Action',    alias: 'widget.actiontextcolumn',    constructor: function(config) {   ...