找回密码
 立即注册

QQ登录

只需一步,快速开始

ladohp

注册会员

2

主题

8

帖子

126

积分

注册会员

积分
126

微信认证勋章

最新发帖
ladohp
注册会员   /  发表于:2018-5-29 09:45  /   查看:4141  /  回复:9
我们正在使用 Column Layout 后,发现当我们读取 Column Layout 的值后,无法更新 binding 值。
相关的演示见:http://demos.wijmo.com/5/Angular ... #/grid/columnLayout

重现 Bug 步骤:

1. 将 Country Id 移动到某一栏
2. 点击 Save Column Layout
3. 再点击 Load Column Layout

结果:Country Id 显示为 0,1,2,3,4,5

这次 Bug 对于我们来说优先级比较高,请告之我们如何修改 Wijmo 代码来实现。

9 个回复

倒序浏览
JeffryLI
葡萄城公司职员   /  发表于:2018-5-29 10:03:13
沙发
您好,问题我重现了,我尽快帮您处理,由于与研发沟通有时差,具体结果需要等到明天,请知悉,谢谢您。
请点击评分,对我5分评价,谢谢!

葡萄城控件服务团队
官方网站: https://www.grapecity.com.cn/developer
回复 使用道具 举报
ladohp
注册会员   /  发表于:2018-5-30 08:56:21
板凳
JeffryLI 发表于 2018-5-29 10:03
您好,问题我重现了,我尽快帮您处理,由于与研发沟通有时差,具体结果需要等到明天,请知悉,谢谢您。

这边有什么 update 吗?
回复 使用道具 举报
JeffryLI
葡萄城公司职员   /  发表于:2018-5-30 09:40:32
地板
您好,在您重新loadlayout的时候我们需要重新对数据进行映射,请参考代码
  1. $scope.loadColumnLayout = function () {
  2.                 debugger
  3.         if (localStorage) {
  4.             if (!localStorage['columns']) {
  5.                 alert('Please save a layout first...');
  6.                         } else {
  7.                                 debugger
  8.                 var flex = $scope.ctx.flex;
  9.                                 flex.columnLayout = localStorage['columns'];
  10.                                 var colCountry = flex.columns.getColumn('countryId');
  11.                                 var colProduct = flex.columns.getColumn('productId');
  12.                                 var colColor = flex.columns.getColumn('colorId');
  13.                                 if (colCountry && colProduct && colColor) {
  14.                                         if ($scope.ctx.dataMaps == true) {
  15.                                                 colCountry.showDropDown = true; // show drop-down for countries
  16.                                                 colProduct.showDropDown = false; // don't show it for products
  17.                                                 colColor.showDropDown = false; // or colors (just to show how)
  18.                                                 colCountry.dataMap = buildDataMap(dataSvc.getCountries());
  19.                                                 colProduct.dataMap = buildDataMap(dataSvc.getProducts());
  20.                                                 colColor.dataMap = buildDataMap(dataSvc.getColors());
  21.                                         } else {
  22.                                                 colCountry.dataMap = null;
  23.                                                 colProduct.dataMap = null;
  24.                                                 colColor.dataMap = null;
  25.                                         }
  26.                                 }
  27.                 console.log('** Loaded layout: ' + flex.columnLayout);
  28.             }
  29.         }
  30.     }
复制代码

希望能帮到您。
请点击评分,对我5分评价,谢谢!

葡萄城控件服务团队
官方网站: https://www.grapecity.com.cn/developer
回复 使用道具 举报
ladohp
注册会员   /  发表于:2018-5-30 09:54:50
5#
本帖最后由 ladohp 于 2018-5-30 09:55 编辑
JeffryLI 发表于 2018-5-30 09:40
您好,在您重新loadlayout的时候我们需要重新对数据进行映射,请参考代码

希望能帮到您。

Hi,

我们这使用的是 Angular 2,代码上也是相似的吗?
我们的表格是通用的,不能重新触发原先的更新 binding 的方法吗?
回复 使用道具 举报
JeffryLI
葡萄城公司职员   /  发表于:2018-5-30 10:06:34
6#
您好,这块不会触发双向绑定的,所以需要重新绑定一次,希望能帮到您。
请点击评分,对我5分评价,谢谢!

葡萄城控件服务团队
官方网站: https://www.grapecity.com.cn/developer
回复 使用道具 举报
ladohp
注册会员   /  发表于:2018-5-30 10:09:22
7#
JeffryLI 发表于 2018-5-30 10:06
您好,这块不会触发双向绑定的,所以需要重新绑定一次,希望能帮到您。

那,能提供一个 Angular 2 的相关更新示例吗?我发现 Angular.js 里面的方法和 Angular 2 是不一样的。比如 buildDataMap 是没有的。
回复 使用道具 举报
JeffryLI
葡萄城公司职员   /  发表于:2018-5-30 11:22:26
8#
您好,请参照
  1. loadColumnLayout() {
  2.         if (localStorage) {
  3.             if (!localStorage['columns']) {
  4.                 alert('Please save a layout first...');
  5.             } else {
  6.                                 this.flex.columnLayout = localStorage['columns'];
  7.                                 var colCountry = this.flex.columns.getColumn('countryId');
  8.                                 var colProduct = this.flex.columns.getColumn('productId');
  9.                                 var colColor = this.flex.columns.getColumn('colorId');
  10.                                 if (colCountry && colProduct && colColor) {
  11.                                         if (this.dataMaps == true) {
  12.                                                 colCountry.showDropDown = true; // show drop-down for countries
  13.                                                 colProduct.showDropDown = false; // don't show it for products
  14.                                                 colColor.showDropDown = false; // or colors (just to show how)
  15.                                                 colCountry.dataMap = this._buildDataMap(this.dataSvc.getSomeCountries());
  16.                                                 colProduct.dataMap = this._buildDataMap(this.dataSvc.getProducts());
  17.                                                 colColor.dataMap = this._buildDataMap(this.dataSvc.getColors());
  18.                                         } else {
  19.                                                 colCountry.dataMap = null;
  20.                                                 colProduct.dataMap = null;
  21.                                                 colColor.dataMap = null;
  22.                                         }
  23.                                 }
  24.                 console.log('** Loaded layout: ' + this.flex.columnLayout);
  25.             }
  26.         }
  27.         }
复制代码
  1.     public _buildDataMap(items): wjcGrid.DataMap {
  2.         var map = [];
  3.         for (var i = 0; i < items.length; i++) {
  4.             map.push({ key: i, value: items[i] });
  5.         }
  6.         return new wjcGrid.DataMap(map, 'key', 'value');
  7.     }
复制代码

该例子是基于ts写的,js请参照,您说的buildDataMap是自己写的。
具体在您的安装下面的sample 有相应的示例。
请点击评分,对我5分评价,谢谢!

葡萄城控件服务团队
官方网站: https://www.grapecity.com.cn/developer
回复 使用道具 举报
ladohp
注册会员   /  发表于:2018-5-30 11:39:21
9#

感谢,已经解决了~
回复 使用道具 举报
JeffryLI
葡萄城公司职员   /  发表于:2018-5-30 11:54:28
10#
不客气,应该的 。
请点击评分,对我5分评价,谢谢!

葡萄城控件服务团队
官方网站: https://www.grapecity.com.cn/developer
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部