一个可编辑列的isRequired值设置为默认值(null)会导致一个现象
本帖最后由 阿Zzzz 于 2023-10-16 14:27 编辑可编辑列的isRequired值设置为默认值(null)
现象一:
第一行数据的改列值为null,该列的其他行即使有值也删不掉
现象二:
第一行数据的改列值不为null,该列的其他行如果有值可以删掉
想知道最初的预想现象是什么~~isRequired默认值的应场景应该是什么
※country为例
现象一代码:
<template>
<div class="container-fluid">
<!-- the grid -->
<wj-flex-grid
:itemsSource="data"
:initialized="initializeGrid">
<wj-flex-grid-column binding="id" header="ID" :width=50 :isReadOnly=true></wj-flex-grid-column>
<wj-flex-grid-column binding="country" header="Country"></wj-flex-grid-column>
<wj-flex-grid-column binding="sales" header="Sales" :isRequired=false></wj-flex-grid-column>
<wj-flex-grid-column binding="expenses" header="Expenses" :isRequired=false></wj-flex-grid-column>
<wj-flex-grid-column binding="overdue" header="Overdue"></wj-flex-grid-column>
</wj-flex-grid>
</div>
</template>
<script>
import "@grapecity/wijmo.styles/wijmo.css";
import "bootstrap.css";
import Vue from "vue";
import { WjGridModule } from '@grapecity/wijmo.vue2.grid';
import * as wjcGrid from '@grapecity/wijmo.grid';
new Vue({
el: "#app",
data: {
data: null
},
methods:{
initializeGrid(flex){
this.data = this._getData();
flex.beginningEdit.addHandler((s, e) => {
let item = s.rows.dataItem;
if (item.overdue) { // prevent editing overdue items
e.cancel = true;
}
});
},
_getData() {
// create some random data
let countries = 'US,Germany,UK,Japan,Italy,Greece'.split(','),
data = [];
data.push({
id: '-1',
country: null,
sales: Math.random() * 10000,
expenses: Math.random() * 5000,
});
for (let i = 0; i < countries.length; i++) {
data.push({
id: i,
country: countries,
sales: Math.random() * 10000,
expenses: Math.random() * 5000,
overdue: i % 4 == 0
});
}
return data;
}
}
});
</script>
<style>
.wj-flexgrid {
max-height: 200px;
margin-bottom: 12px;
}
body {
margin-bottom: 24px;
}
</style>
现象二代码:
<template>
<div class="container-fluid">
<!-- the grid -->
<wj-flex-grid
:itemsSource="data"
:initialized="initializeGrid">
<wj-flex-grid-column binding="id" header="ID" :width=50 :isReadOnly=true></wj-flex-grid-column>
<wj-flex-grid-column binding="country" header="Country"></wj-flex-grid-column>
<wj-flex-grid-column binding="sales" header="Sales" :isRequired=false></wj-flex-grid-column>
<wj-flex-grid-column binding="expenses" header="Expenses" :isRequired=false></wj-flex-grid-column>
<wj-flex-grid-column binding="overdue" header="Overdue"></wj-flex-grid-column>
</wj-flex-grid>
</div>
</template>
<script>
import "@grapecity/wijmo.styles/wijmo.css";
import "bootstrap.css";
import Vue from "vue";
import { WjGridModule } from '@grapecity/wijmo.vue2.grid';
import * as wjcGrid from '@grapecity/wijmo.grid';
new Vue({
el: "#app",
data: {
data: null
},
methods:{
initializeGrid(flex){
this.data = this._getData();
flex.beginningEdit.addHandler((s, e) => {
let item = s.rows.dataItem;
if (item.overdue) { // prevent editing overdue items
e.cancel = true;
}
});
},
_getData() {
// create some random data
let countries = 'US,Germany,UK,Japan,Italy,Greece'.split(','),
data = [];
for (let i = 0; i < countries.length; i++) {
data.push({
id: i,
country: countries,
sales: Math.random() * 10000,
expenses: Math.random() * 5000,
overdue: i % 4 == 0
});
}
return data;
}
}
});
</script>
<style>
.wj-flexgrid {
max-height: 200px;
margin-bottom: 12px;
}
body {
margin-bottom: 24px;
}
</style>
和研发确认的情况如下
默认情况下,Wijmo FlexGrid 不允许空单元格值,并且它不允许您删除单元格值,除非您将该列的 :isRequired 属性显式设置为 false。
因此,如果删除 :isRequired=false,则将应用不允许空值的默认行为。 isRequired默认值是null,但是等同于false,也就是不对列数据做限制,只有true的时候,该单元格有值的时候才不能删除
请 上传一个完成的demo上来重现你说的问题
本帖最后由 阿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的数据
部分代码如下:
// create some random data
let countries = 'US,Germany,UK,Japan,Italy,Greece'.split(','),
data = [];
//在第一行插入一条country为null的数据
data.push({
id: '-1',
country: null,
sales: Math.random() * 10000,
expenses: Math.random() * 5000
});
这个时候即使其他country列有值。也删除不了。
我们项目就是产生了一个类似的bug,所以想知道设置为默认值时的应用场景是什么 这个问题已经重现了,原因得和研发确认,看看是否是bug,还是设计如此
另外,如果你那边要暂时解决问题的话,可以将文本字段设置为空字符串“”来替代null,是可以解决这个问题的。 Richard.Ma 发表于 2023-10-17 17:35
这个问题已经重现了,原因得和研发确认,看看是否是bug,还是设计如此
另外,如果你那边要暂时解决问题 ...
好的,谢谢,确认好麻烦告知下,需和客户解释 好的,会在帖子中回复
页:
[1]