找回密码
 立即注册

QQ登录

只需一步,快速开始

dllyzs

注册会员

11

主题

26

帖子

109

积分

注册会员

积分
109
dllyzs
注册会员   /  发表于:2020-11-20 16:28  /   查看:5200  /  回复:5
1金币
本帖最后由 dllyzs 于 2020-11-23 17:50 编辑

我想在画面上的按钮点击事件中获取FlexGrid和MultiRow的校验结果,如果存在数据错误的话,就不进行提交。该如何获取呢?



最佳答案

查看完整内容

您好,根据官方示例简单修改一下即可实现,我实现了一版,参考以下代码: 测试地址: https://www.grapecity.com/wijmo/demos/Core/CollectionView/EditingViews/Validation/purejs

5 个回复

倒序浏览
最佳答案
最佳答案
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2020-11-20 16:28:43
来自 4#
您好,根据官方示例简单修改一下即可实现,我实现了一版,参考以下代码:

  1. import 'bootstrap.css';
  2. import '@grapecity/wijmo.styles/wijmo.css';
  3. import './styles.css';
  4. //
  5. import * as wijmo from '@grapecity/wijmo';
  6. import * as grid from '@grapecity/wijmo.grid';
  7. import { countries, getData } from './data';
  8. //
  9. document.readyState === 'complete' ? init() : window.onload = init;
  10. //
  11. function init() {
  12.     // create a CollectionView
  13.     let view = new wijmo.CollectionView(getData(), {
  14.         sortDescriptions: ['country'],
  15.         getError,
  16.     });
  17.     //
  18.     // CollectionView validation function
  19.     function getError(item, propName) {
  20.         switch (propName) {
  21.             case 'country':
  22.                 return countries.indexOf(item.country) < 0 ? 'Invalid Country' : '';
  23.             case 'downloads':
  24.             case 'sales':
  25.             case 'expenses':
  26.                 return item[propName] < 0 ? 'Negative values not allowed!' : '';
  27.             case 'active':
  28.                 return item.active && item.country.match(/^(US|Germany)$/)
  29.                     ? 'Active items not allowed in the US or Germany!'
  30.                     : '';
  31.             case null:
  32.                 let errors = [];
  33.                 for (let key in item) {
  34.                     let err = getError(item, key);
  35.                     if (err)
  36.                         errors.push(err);
  37.                 }
  38.                 return errors.length > 1
  39.                     ? 'this item has ' + errors.length + ' errors'
  40.                     : (errors.length == 1 ? errors[0] : null);
  41.             case undefined:
  42.                 let errorsAll = [];
  43.                 for (let key in item) {
  44.                     let err = getError(item, key);
  45.                     if (err)
  46.                         errorsAll.push(err);
  47.                 }
  48.                 return errorsAll.length? errorsAll:null;
  49.         }
  50.         return null;
  51.     }
  52.     //
  53.     // create grid for editing with validation
  54.     let theGrid = new grid.FlexGrid('#theGrid', {
  55.         itemsSource: view
  56.     });
  57.     //
  58.     // use getError to provide form validation
  59.     let theItem = {};
  60.     //
  61.     document.getElementById('theForm').addEventListener('input', e => {
  62.     });
  63.     //
  64.     document.getElementById('theForm').addEventListener('submit', e => {
  65.         e.preventDefault()
  66.         // debugger
  67.         view.sourceCollection.forEach((item)=>{
  68.             console.log(view.getError(item));
  69.         });
  70.     });
  71. }
复制代码


测试地址:
https://www.grapecity.com/wijmo/ ... s/Validation/purejs

评分

参与人数 1满意度 +5 收起 理由
dllyzs + 5 很给力!

查看全部评分

回复 使用道具 举报
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2020-11-20 17:58:28
2#
您好,Wijmo的数据校验是在数据源对象 CollectionView中实现的,请参考这个实例:

https://demo.grapecity.com.cn/wi ... s/Validation/purejs
回复 使用道具 举报
dllyzs
注册会员   /  发表于:2020-11-23 10:14:24
3#
那能获得校验结果么?像附件那样点击submit后可以获得grid的校验结果,如果错误就不执行后续的操作?

本帖子中包含更多资源

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

x
回复 使用道具 举报
dllyzs
注册会员   /  发表于:2020-11-23 16:36:46
5#
非常感谢!
我以为会有一个函数可以直接取得。。
回复 使用道具 举报
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2020-11-23 16:53:00
6#
感谢反馈,这里暂时没有一个方法可以直接获取到结果,所以需要做一些扩展才能实现。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部