找回密码
 立即注册

QQ登录

只需一步,快速开始

阿Zzzz

注册会员

5

主题

9

帖子

64

积分

注册会员

积分
64
  • 196

    金币

  • 5

    主题

  • 9

    帖子

阿Zzzz
注册会员   /  发表于:2023-10-16 14:13  /   查看:1545  /  回复:6
1金币
本帖最后由 阿Zzzz 于 2023-10-16 14:27 编辑

可编辑列的isRequired值设置为默认值(null)

现象一:
第一行数据的改列值为null,该列的其他行即使有值也删不掉
现象二:
第一行数据的改列值不为null,该列的其他行如果有值可以删掉

想知道最初的预想现象是什么~~isRequired默认值的应场景应该是什么

country为例
现象一代码:
  1. <template>
  2.     <div class="container-fluid">
  3.         <!-- the grid -->
  4.         <wj-flex-grid
  5.             :itemsSource="data"
  6.             :initialized="initializeGrid">
  7.             <wj-flex-grid-column binding="id" header="ID" :width=50 :isReadOnly=true></wj-flex-grid-column>
  8.             <wj-flex-grid-column binding="country" header="Country"></wj-flex-grid-column>
  9.             <wj-flex-grid-column binding="sales" header="Sales" :isRequired=false></wj-flex-grid-column>
  10.             <wj-flex-grid-column binding="expenses" header="Expenses" :isRequired=false></wj-flex-grid-column>
  11.             <wj-flex-grid-column binding="overdue" header="Overdue"></wj-flex-grid-column>
  12.         </wj-flex-grid>
  13.     </div>
  14. </template>

  15. <script>
  16. import "@grapecity/wijmo.styles/wijmo.css";
  17. import "bootstrap.css";
  18. import Vue from "vue";
  19. import { WjGridModule } from '@grapecity/wijmo.vue2.grid';
  20. import * as wjcGrid from '@grapecity/wijmo.grid';


  21. new Vue({
  22.           el: "#app",
  23.           data: {
  24.         data: null
  25.     },
  26.     methods:{
  27.         initializeGrid(flex){
  28.             this.data = this._getData();
  29.             flex.beginningEdit.addHandler((s, e) => {
  30.                 let item = s.rows[e.row].dataItem;
  31.                 if (item.overdue) { // prevent editing overdue items
  32.                     e.cancel = true;      
  33.                 }
  34.             });
  35.         },
  36.         _getData() {
  37.             // create some random data
  38.             let countries = 'US,Germany,UK,Japan,Italy,Greece'.split(','),
  39.                 data = [];
  40.                 data.push({
  41.                     id: '-1',
  42.                     country: null,
  43.                     sales: Math.random() * 10000,
  44.                     expenses: Math.random() * 5000,

  45.                 });               
  46.             for (let i = 0; i < countries.length; i++) {
  47.                 data.push({
  48.                     id: i,
  49.                     country: countries[i],
  50.                     sales: Math.random() * 10000,
  51.                     expenses: Math.random() * 5000,
  52.                     overdue: i % 4 == 0
  53.                 });
  54.             }
  55.             return data;
  56.         }
  57.     }
  58. });
  59. </script>

  60. <style>
  61.     .wj-flexgrid {
  62.         max-height: 200px;
  63.         margin-bottom: 12px;
  64.     }

  65.     body {
  66.         margin-bottom: 24px;
  67.     }
  68. </style>

复制代码
现象二代码:
  1. <template>
  2.     <div class="container-fluid">
  3.         <!-- the grid -->
  4.         <wj-flex-grid
  5.             :itemsSource="data"
  6.             :initialized="initializeGrid">
  7.             <wj-flex-grid-column binding="id" header="ID" :width=50 :isReadOnly=true></wj-flex-grid-column>
  8.             <wj-flex-grid-column binding="country" header="Country"></wj-flex-grid-column>
  9.             <wj-flex-grid-column binding="sales" header="Sales" :isRequired=false></wj-flex-grid-column>
  10.             <wj-flex-grid-column binding="expenses" header="Expenses" :isRequired=false></wj-flex-grid-column>
  11.             <wj-flex-grid-column binding="overdue" header="Overdue"></wj-flex-grid-column>
  12.         </wj-flex-grid>
  13.     </div>
  14. </template>

  15. <script>
  16. import "@grapecity/wijmo.styles/wijmo.css";
  17. import "bootstrap.css";
  18. import Vue from "vue";
  19. import { WjGridModule } from '@grapecity/wijmo.vue2.grid';
  20. import * as wjcGrid from '@grapecity/wijmo.grid';


  21. new Vue({
  22.           el: "#app",
  23.           data: {
  24.         data: null
  25.     },
  26.     methods:{
  27.         initializeGrid(flex){
  28.             this.data = this._getData();
  29.             flex.beginningEdit.addHandler((s, e) => {
  30.                 let item = s.rows[e.row].dataItem;
  31.                 if (item.overdue) { // prevent editing overdue items
  32.                     e.cancel = true;      
  33.                 }
  34.             });
  35.         },
  36.         _getData() {
  37.             // create some random data
  38.             let countries = 'US,Germany,UK,Japan,Italy,Greece'.split(','),
  39.                 data = [];            
  40.             for (let i = 0; i < countries.length; i++) {
  41.                 data.push({
  42.                     id: i,
  43.                     country: countries[i],
  44.                     sales: Math.random() * 10000,
  45.                     expenses: Math.random() * 5000,
  46.                     overdue: i % 4 == 0
  47.                 });
  48.             }
  49.             return data;
  50.         }
  51.     }
  52. });
  53. </script>

  54. <style>
  55.     .wj-flexgrid {
  56.         max-height: 200px;
  57.         margin-bottom: 12px;
  58.     }

  59.     body {
  60.         margin-bottom: 24px;
  61.     }
  62. </style>

复制代码


最佳答案

查看完整内容

和研发确认的情况如下 默认情况下,Wijmo FlexGrid 不允许空单元格值,并且它不允许您删除单元格值,除非您将该列的 :isRequired 属性显式设置为 false。 因此,如果删除 :isRequired=false,则将应用不允许空值的默认行为。

6 个回复

倒序浏览
最佳答案
最佳答案
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-10-16 14:13:58
来自 7#
和研发确认的情况如下

默认情况下,Wijmo FlexGrid 不允许空单元格值,并且它不允许您删除单元格值,除非您将该列的 :isRequired 属性显式设置为 false。

因此,如果删除 :isRequired=false,则将应用不允许空值的默认行为。
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-10-16 18:12:56
2#
isRequired默认值是null,但是等同于false,也就是不对列数据做限制,只有true的时候,该单元格有值的时候才不能删除

请 上传一个完成的demo上来重现你说的问题

回复 使用道具 举报
阿Zzzz
注册会员   /  发表于:2023-10-17 09:09:01
3#
本帖最后由 阿Zzzz 于 2023-10-17 09:10 编辑
Richard.Ma 发表于 2023-10-16 18:12
isRequired默认值是null,但是等同于false,也就是不对列数据做限制,只有true的时候,该单元格有值的时候 ...

https://demo.grapecity.com.cn/wijmo/demos/Grid/Editing/Read-only/vue

例如这个demo,把binding="country"的isRequired属性移除,使用其默认属性
在首行插入一条country为null的数据
部分代码如下:

  1.             // create some random data
  2.             let countries = 'US,Germany,UK,Japan,Italy,Greece'.split(','),
  3.                 data = [];
  4.             
  5.             //在第一行插入一条country为null的数据
  6.                 data.push({
  7.                     id: '-1',
  8.                     country: null,
  9.                     sales: Math.random() * 10000,
  10.                     expenses: Math.random() * 5000
  11.                 });
复制代码


这个时候即使其他country列有值。也删除不了。

我们项目就是产生了一个类似的bug,所以想知道设置为默认值时的应用场景是什么
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-10-17 17:35:36
4#
这个问题已经重现了,原因得和研发确认,看看是否是bug,还是设计如此

另外,如果你那边要暂时解决问题的话,可以将文本字段设置为空字符串“”来替代null,是可以解决这个问题的。
回复 使用道具 举报
阿Zzzz
注册会员   /  发表于:2023-10-18 09:19:19
5#
Richard.Ma 发表于 2023-10-17 17:35
这个问题已经重现了,原因得和研发确认,看看是否是bug,还是设计如此

另外,如果你那边要暂时解决问题 ...

好的,谢谢,确认好麻烦告知下,需和客户解释
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-10-18 13:39:19
6#
好的,会在帖子中回复
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部