FineUI 官方论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

本论坛已关闭(禁止注册、发帖和回复)
请移步 三石和他的朋友们

FineUI首页 WebForms - MVC & Core - JavaScript 常见问题 - QQ群 - 十周年征文活动

FineUI(开源版) 下载源代码 - 下载空项目 - 获取ExtJS - 文档 在线示例 - 版本更新 - 捐赠作者 - 教程

升级到 ASP.NET Core 3.1,快、快、快! 全新ASP.NET Core,比WebForms还简单! 欢迎加入【三石和他的朋友们】(基础版下载)

搜索
查看: 16138|回复: 13
打印 上一主题 下一主题

Grid如何实时比较两个模板列文本框的值是否一致?

[复制链接]
楼主
发表于 2013-1-21 21:51:40 | 显示全部楼层
这道题目还比较有意思,主要是考察Javascript和Extjs的使用,我就来解答一下。最终效果如下所示:


关键代码:
  1. function registerCompareEvent() {
  2.             var grid = X(gridClientID);
  3.             grid.el.select('.x-grid-tpl input').on("keydown", function (evt, el) {

  4.                 window.setTimeout(function () {

  5.                     var rowNum = 0, idPattern = /^Grid1_c\dr(\d)_.+$/.exec(el.id);
  6.                     if (idPattern && idPattern.length == 2) {
  7.                         rowNum = rowNum[1];
  8.                     }
  9.                     var row = Ext.get(el).parent('.x-grid3-row');
  10.                     var num1 = row.query('.x-grid3-col-ct6 input')[0].value;
  11.                     var num2 = row.query('.x-grid3-col-ct7 input')[0].value;
  12.                     var resultNode = row.query('.x-grid3-col-ct8 span.result')[0];
  13.                     if (num1 == num2) {
  14.                         resultNode.className = 'success';
  15.                         resultNode.innerHTML = '两组录入一致';
  16.                     } else {
  17.                         resultNode.className = 'error';
  18.                         resultNode.innerHTML = '两组录入不一致!';
  19.                     }

  20.                 }, 500);
  21.             });
  22.             
  23.         }
复制代码


我已经写了个例子,感兴趣的网友可以自行下载源代码编译。



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
沙发
发表于 2013-1-22 08:15:39 | 显示全部楼层
Mr.Wu 发表于 2013-1-22 01:19
三石兄能解释一下idPattern = /^Grid1_c(\d)r\d_.+$/.exec(el.id)这句是什么意思么?
为什么我把回车和比较 ...

是和列数相关,需要查看页面的html结构。

那句话的意思是使用正则表达式从文本输入框的id获取当前列数•••
板凳
发表于 2013-1-22 12:26:25 | 显示全部楼层
Mr.Wu 发表于 2013-1-22 13:23
刚才把codeplex上的示例代码下载运行了一下,发现了一个问题:第一次输入回车时,是可以比较两者不是相同; ...

Sorry,原来的代码有点问题。第一个更新className时就把原来的CSS类名result给清掉了,所以下次就找不到resultNode节点了。

更新后的关键代码:
  1. function registerCompareEvent() {
  2.             var grid = X(gridClientID);
  3.             grid.el.select('.x-grid-tpl input').on("keydown", function (evt, el) {

  4.                 window.setTimeout(function () {

  5.                     var row = Ext.get(el).parent('.x-grid3-row');
  6.                     var num1 = row.query('.x-grid3-col-ct6 input')[0].value;
  7.                     var num2 = row.query('.x-grid3-col-ct7 input')[0].value;
  8.                     var resultNode = Ext.get(row.query('.x-grid3-col-ct8 span.result'));
  9.                     resultNode.removeClass(['success', 'error']);
  10.                     if (num1 == num2) {
  11.                         resultNode.addClass('success');
  12.                         resultNode.update('两组录入一致');
  13.                     } else {
  14.                         resultNode.addClass('error');
  15.                         resultNode.update('两组录入不一致!');
  16.                     }

  17.                 }, 500);
  18.             });
  19.             
  20.         }
复制代码
已经Checkin代码到服务器。
地板
发表于 2013-1-23 02:14:58 | 显示全部楼层
Mr.Wu 发表于 2013-1-22 18:27
首先衷心感谢三石兄和FineUI团队!这帖子希望能实时比较Grid表格内模板列两文本框的值是否一致,现已经 ...

是的哦,原来的确没考虑到这一点
5#
发表于 2013-1-23 02:16:10 | 显示全部楼层
yygy 发表于 2013-1-23 01:59
在哪下载?

http://fineui.codeplex.com/SourceControl/BrowseLatest
6#
发表于 2013-1-24 03:55:12 | 显示全部楼层
Mr.Wu 发表于 2013-1-24 03:49
为了感谢三石和FineUI团队对本贴的支持和帮助,特为本贴捐助50元表示一下心意!!!

...

多谢。技术支持本来就是我们的份内事,只不过有时慢了点....
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|FineUI 官方论坛 ( 皖ICP备2021006167号-1 )

GMT+8, 2024-5-14 11:04 , Processed in 0.060105 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表