找回密码
 立即注册

QQ登录

只需一步,快速开始

xiaolong

金牌服务用户

96

主题

376

帖子

1022

积分

金牌服务用户

积分
1022
xiaolong
金牌服务用户   /  发表于:2023-8-4 10:07  /   查看:1201  /  回复:3
1金币

https://demo.grapecity.com.cn/wijmo/demos/Grid/Overview/vue,替换代码在附件
1,加载完默认除edit列外其余列背景色为灰色

2,复选框选中的行指定列可编辑,指定列背景色变为白色,取消选中变为灰色
3,复选框取消选中校验所在行,校验不通过不能取消选中
附件: 您需要 登录 才可以下载或查看,没有帐号?立即注册

最佳答案

查看完整内容

测试了一下,目前可以用过wijmo的CollectionView来封装你的数据,作为grid 的数据源,这样就可以对数据进行追踪 在CollectionView的collectionChanged事件中,可以进行判断。 还是早上的这个demo链接 https://demo.grapecity.com.cn/wijmo/demos/Grid/Events/Editing/vue 替换script这一部分的代码即可验证,sales为1的时候,才允许不选中

3 个回复

倒序浏览
最佳答案
最佳答案
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-8-4 10:07:37
来自 2#
本帖最后由 Richard.Ma 于 2023-8-4 17:01 编辑

测试了一下,目前可以用过wijmo的CollectionView来封装你的数据,作为grid 的数据源,这样就可以对数据进行追踪

在CollectionView的collectionChanged事件中,可以进行判断。

还是早上的这个demo链接
https://demo.grapecity.com.cn/wijmo/demos/Grid/Events/Editing/vue

替换script这一部分的代码即可验证,sales为1的时候,才允许不选中



  1. <script>
  2.     import "@grapecity/wijmo.styles/wijmo.css";
  3.     import 'bootstrap.css';
  4.     import Vue from 'vue';
  5.     import '@grapecity/wijmo.vue2.core';
  6.     import '@grapecity/wijmo.vue2.grid';
  7.     import { getData } from "./data";

  8.     let App = Vue.extend({
  9.         name: "app",
  10.         data: function() {
  11.             return {
  12.                 data: getData(),
  13.                 view: new wijmo.CollectionView(getData(), {
  14.                     
  15.                     trackChanges: true
  16.                 }),
  17.                 logText: "please select a range on the grid",
  18.                 countries: [
  19.                     "US",
  20.                     "Germany",
  21.                     "UK",
  22.                     "Japan",
  23.                     "Sweden",
  24.                     "Norway",
  25.                     "Denmark"
  26.                 ]
  27.             };
  28.         },
  29.         methods: {
  30.             flexInitialized: function(flexgrid) {
  31.                 this.logText = "";
  32.                 flexgrid.beginningEdit.addHandler((s, e) => {
  33.                     let col = s.columns[e.col];
  34.                     if (col.binding != "overdue"&&col.binding != "id") {
  35.                         let item = s.rows[e.row].dataItem;
  36.                         if (!item.overdue) {
  37.                             // prevent editing overdue items
  38.                             e.cancel = true;
  39.                             this.logText = "Overdue items cannot be edited";
  40.                         }
  41.                     }
  42.                 });
  43.                 flexgrid.cellEditEnding.addHandler((s, e) => {
  44.                     this.logText = "";
  45.                     let col = s.columns[e.col];
  46.                     let item = s.rows[e.row].dataItem;
  47.                     if (col.binding == "sales" || col.binding == "expenses") {
  48.                     }
  49.                 });
  50.                 flexgrid.formatItem.addHandler((s, e) => {
  51.                     if (e.panel == s.cells) {
  52.                         var col = s.columns[e.col], item = s.rows[e.row].dataItem;
  53.                         e.cell.style.backgroundColor="lightgray";
  54.                         if(col.binding != "overdue"&&col.binding != "id"){
  55.                             if(item.overdue){
  56.                                 e.cell.style.backgroundColor="lightgreen";
  57.                             }
  58.                         }
  59.                         else if(col.binding != "overdue"){

  60.                         }
  61.                         
  62.                     }
  63.                 });
  64.                 this.view.collectionChanged.addHandler((s,e)=>{
  65.                     //在这里就可以判断,当值变化后,sales如果不是1,那么该行失去焦点时,会进行设置
  66.                     if(e.item.sales!=1){
  67.                         e.item.overdue=true;
  68.                     }
  69.                 });
  70.             },

  71.         }
  72.     });

  73.     new Vue({ render: h => h(App) }).$mount("#app");
  74. </script>
复制代码

本帖子中包含更多资源

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

x
回复 使用道具 举报
xiaolong
金牌服务用户   /  发表于:2023-8-15 16:42:28
3#
Richard.Ma 发表于 2023-8-4 16:59
测试了一下,目前可以用过wijmo的CollectionView来封装你的数据,作为grid 的数据源,这样就可以对数据进行 ...

好的,谢谢
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-8-15 16:58:01
4#
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部