extjs4.2 grid编辑验证问题

问题描述

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

解决方案

原因: 在同一个column中,每一行的editor实际上是复用的,你在编辑完之后,这个editor中实际上还是最后一次的值,所以你对每一行进行遍历,然后取到这个列的editor,取到的值始终是一样的解决方案:不要从column的editor中取值,而应该从这个grid的model/store中取值
解决方案二:
这是浏览器控制台输出的问题,你的代码没错,实际上你已经获得指定行的单元格对象,只不过console.log(field.getValue()),打印这句日志时,浏览器控制台是动态关联js对象,找的是当前最新的"field",所以看起来都是一个值,实际在代码执行过程中是不同值
解决方案三:
只有一段合并单元格的,不知道能不能给你点启发//合并单元格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){ //逐列去操作trvar 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;//判断左边单元格值是否已displayif(leftDisplay=='none')addf();elsemergef();}elseaddf();}elsemergef();}}});};
解决方案四:
这会是什么原因呢,真神奇啊
解决方案五:
我不知道,就看着你自己分数还不够5分
解决方案六:
不知道是否是getEditor的默认值造成的你可以简单测试下 还有你看下每个record值是否正确col.getEditor(record);

时间: 2024-09-10 16:55:32

extjs4.2 grid编辑验证问题的相关文章

extjs4.2 grid 分页排序问题

问题描述 extjs4.2 grid 分页排序问题 action拿到sort了,然后怎么做,拿到的格式[{"property":"","direction":"ASC"}].接下要怎么传值给SQL.我试着把它拆分出来传给sql但是没效果.sql:select * from table order by ? ? limit ?,? 解决方案 http://www.shuyangyang.com.cn/jishuliangongf

extjs4-extjs中的grid编辑某一行某一列的字段更新到数据库

问题描述 extjs中的grid编辑某一行某一列的字段更新到数据库 因为初学extjs,我想在grid中编辑某一列,编辑结束后保存到数据库,就相当于结束编辑事件! 比如说个人信息列表,修改编辑年龄字段,编辑结束自就更新到数据库中,!谢谢各位了 解决方案 http://zhidao.baidu.com/link?url=RRO6R1TxtiSiWSyB-p-OkCGkYQMhuIitrS9colwLPCtpYCJoOzkFzPKiobwRxJM3NlXeZISLQQfOxCwdITfCipn4PM

extjs4.2 grid里怎么格式化IP地址,目前只显示3个数字

问题描述 extjs4.2 grid里怎么格式化IP地址,目前只显示3个数字 extjs4.2 grid里怎么格式化IP地址,目前只显示3个数字 解决方案 renderer:function(v){var arr=v.split('.');return arr[0]+'.'+arr[1]+'.'+arr[2]}

extjs4 editor grid 问题

问题描述 ext4.0grid.getView().getCell(record,column).dom.style.backgroundColor="red"grid编辑之后 点击其他的格子编辑的格子背景色会变红. 但是按回车之后背景色不会变成红色,编辑之后直接点击toolbar上得按钮也不会变红色,哪位高手能给哥解决方案,另外不想让整个背景变红.只想让编辑的格子边框变成红色应该怎么实现.请各位大侠高手们指点一二.谢谢. 问题补充:clue 写道 解决方案 renderer是Grid

ExtJS4.1 Grid读取数据复选框打钩

问题描述 ExtJS4.1 需求是这样的,有个带复选框的Grid,里面固定存放20个信息数据(数据库存放一张表中),第一次编辑的时候选了3条数据保存在了另一张表中现在想知道我在加载的时候还是显示这20个信息数据,但是也读取另一张表的3条数据,这20条信息里的三个数据前面复选框需要打上对勾,应该如何操作呢? 解决方案 两种实现第一种:先读另一张表的3条数据,然后保存成页面临时变量,然后加载列表的20条数据.然后在store.load方法里面写回调函数,根据id或者其他字段相等把这3条数据对应的数据

extjs4.0, grid表格,修改单元格数据.

问题描述 // 代码如下,当点击元格时,修改,然后就会发送url请求.(这个是grid自动完成的.)// 现在需要的是,不要自动发送请求,因为我修改不止一个单元格,如果每次修改一单元格都发送请求,效率太低.// 所以想实现,修改完全后,统一提交整个grid数据(点击按钮). plugins: Ext.create('Ext.grid.plugin.CellEditing', {clicksToEdit : 1,});columns : [ Ext.create('Ext.grid.RowNumb

js验证fck编辑验证与常用操作

fckeditor 验证内容是否为空 fckeditor js验证表单 原来的代码代码如下 复制代码 代码如下: <script language = "网页特效"> <!-- function checkform(){ if (document.form1.content.value==""){ alert("请输入内容!"); return false; } return true; } //--> </scri

请大家帮忙看一下:extjs4.0 grid后台取json数据不显示

问题描述 纠结了很久的问题.前台页面就是不显示数据,麻烦大家帮忙看一下.js代码Ext.onReady(function(){Ext.define('Ecwuum04',{extend:'Ext.data.Model',fields:[{name:'id',mapping:'id'},'organization','name','homepage']});varacdata=newExt.create('Ext.data.Store',{model:'Ecwuum04',proxy:{type:

extjs4-Extjs4.1可编辑的grid如何对输入数据进行验证?就像Form表单vtype那种验证。

问题描述 Extjs4.1可编辑的grid如何对输入数据进行验证?就像Form表单vtype那种验证. 使用的是CellEditing插件, 可编辑的grid在编辑的时候,通常希望能够对用户的输入进行控制而不是任由用户随心所欲的输入,如果输入非法内容则给予友好提示,这个怎么实现?