找回密码
 立即注册

QQ登录

只需一步,快速开始

Java框架

注册会员

2

主题

8

帖子

56

积分

注册会员

积分
56

微信认证勋章

最新发帖
Java框架
注册会员   /  发表于:2017-7-11 12:55  /   查看:5142  /  回复:6
本帖最后由 Java框架 于 2017-7-13 14:28 编辑

FlexGrid如果不出现滚动条,复选框获取数据正常。如果FlexGrid出现滚动条,全选的复选框不能全部勾上,而且只能获取眼睛看到的复选框状态数据,获取不了滚动条下面的复选框状态数据。


出现滚动条,上下左右拉动滚动条,FlexGrid复选框跳动,部分复选框自动切换勾选状态,获取的复选框状态不对:


html代码:
  1. <wj-flex-grid item-formatter="ctx.itemFormatter" headers-visibility="Column" control="ctx.flexGrid" items-source="roleData" align="center" is-read-only="true" allow-add-new="false" allow-delete="true">
  2.                         <wj-flex-grid-column header="" width="50" name="selectAllCheckbox">
  3.                                 <input type="checkbox" id="{{$item.roleId}}" name="selectedCheckbox" ng-click="updateSelection($event,$item.roleKey)" />
  4.                         </wj-flex-grid-column>
  5.                         <wj-flex-grid-column header="序号" width="80">
  6.                                 {{$row.index + 1}}
  7.                         </wj-flex-grid-column>
  8.                     <wj-flex-grid-column header="ID" width="0" binding="roleId" is-read-only="true"></wj-flex-grid-column>
  9.                     <wj-flex-grid-column header="编码" binding="roleKey" is-required="true" width="*"></wj-flex-grid-column>
  10.                     <wj-flex-grid-column header="名称" binding="roleValue" is-required="true" width="*"></wj-flex-grid-column>
  11.                     <wj-flex-grid-column header="描述" binding="description" width="*"></wj-flex-grid-column>
  12.                     <wj-flex-grid-column header="操作" is-read-only="true" width="*">
  13.                             <span ng-click="removeItem($item.roleId)" class="glyphicon glyphicon-remove" style="color:#D14836" title="删除"></span>
  14.                             <span ng-click="authorize($item.roleKey)" class="fa fa-cog" style="color:green" title="授权"></span>
  15.                     </wj-flex-grid-column>
  16.                 </wj-flex-grid>
复制代码
js代码:
  1. // 全选复选框
  2.         $scope.selectedArray = [];
  3.         $scope.selectedCheckbox = true;
  4.         function itemFormatter(panel, r, c, cell) {
  5.                 if (panel.cellType == wijmo.grid.CellType.ColumnHeader) {
  6.                         var flex = panel.grid;
  7.             var col = flex.columns[c];
  8.                         if (col.name == "selectAllCheckbox") {
  9.                 col.allowSorting = false;
  10.                 cell.innerHTML = '<input type="checkbox" /> ' + cell.innerHTML;
  11.                 var cb = cell.firstChild;
  12.                                 cb.addEventListener('click', function(e) {
  13.                                         if (cb.checked) {
  14.                                                 for (var i = 0; i < $(':checkbox[name="selectedCheckbox"]').not("input:checked").length; i++) {
  15.                                                         $(':checkbox[name="selectedCheckbox"]').not("input:checked").trigger('click');
  16.                                                 }
  17.                                         } else {
  18.                                                 for (var i = 0; i < $(':checkbox[name="selectedCheckbox"]:checked').length; i++) {
  19.                                                         $(':checkbox[name="selectedCheckbox"]:checked').trigger('click');
  20.                                                 }
  21.                                         }
  22.                                         // console.log("--->" + $scope.selectedArray);
  23.                                 });
  24.                         }
  25.                 }
  26.         }
  27.         // 勾选行的复选框,弹出明细窗口
  28.         $scope.sysUserData = [];
  29.         var updateSelected = function(action, id) {
  30.                 if (action == 'add' && $scope.selectedArray.indexOf(id) == -1) {
  31.                         $scope.selectedArray.push(id);
  32.                 }
  33.                 if (action == 'remove' && $scope.selectedArray.indexOf(id) != -1) {
  34.                         var idx = $scope.selectedArray.indexOf(id);
  35.                         $scope.selectedArray.splice(idx, 1);
  36.                 }
  37.         }
  38.         $scope.updateSelection = function($event, id) {
  39.                 var checkbox = $event.target;
  40.                 var action = (checkbox.checked ? 'add' : 'remove');
  41.                 updateSelected(action, id);
  42.         }
复制代码


恳请帮忙解决,万分感谢!

本帖子中包含更多资源

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

x

6 个回复

倒序浏览
JeffryLI
葡萄城公司职员   /  发表于:2017-7-13 14:46:04
推荐
Java框架 发表于 2017-7-13 14:28
按照您给的例子,成功解决困扰我很久的技术难题。谢谢JeffryLI,谢谢葡萄城!

不客气的,能帮到你,我才是高兴的。

评分

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

查看全部评分

请点击评分,对我5分评价,谢谢!

葡萄城控件服务团队
官方网站: https://www.grapecity.com.cn/developer
回复 使用道具 举报
JeffryLI
葡萄城公司职员   /  发表于:2017-7-11 14:14:54
沙发
本帖最后由 JeffryLI 于 2017-7-11 14:48 编辑

您好,通过您的贴出来的代码,看不出问题,能不能将您这个页面做成一个独立运行的demo,发给我们,方便我们查找原因。谢谢,另外我也做了一个demo,仅供参考

本帖子中包含更多资源

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

x
请点击评分,对我5分评价,谢谢!

葡萄城控件服务团队
官方网站: https://www.grapecity.com.cn/developer
回复 使用道具 举报
Java框架
注册会员   /  发表于:2017-7-11 14:58:12
板凳
JeffryLI 发表于 2017-7-11 14:14
您好,通过您的贴出来的代码,看不出问题,能不能将您这个页面做成一个独立运行的demo,发给我们,方便我们 ...

您好,附件是例子,您全选或者随意勾选复选框,上下或者左右拉动滚动条,部分复选框就会跳动不能保持现有状态。



本帖子中包含更多资源

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

x
回复 使用道具 举报
Java框架
注册会员   /  发表于:2017-7-11 15:20:43
地板
JeffryLI 发表于 2017-7-11 14:14
您好,通过您的贴出来的代码,看不出问题,能不能将您这个页面做成一个独立运行的demo,发给我们,方便我们 ...

您的例子,如果数据量更多,出现上下左右滚动条,拉动时部分复选框也是跳动不能保持现有状态。
回复 使用道具 举报
JeffryLI
葡萄城公司职员   /  发表于:2017-7-11 16:46:23
5#
Java框架 发表于 2017-7-11 14:58
您好,附件是例子,您全选或者随意勾选复选框,上下或者左右拉动滚动条,部分复选框就会跳动不能保持现有 ...

您好:您的demo写法不是很正确,具体还在研究,但是,按照您的需求做了一个新的,请查收

本帖子中包含更多资源

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

x
请点击评分,对我5分评价,谢谢!

葡萄城控件服务团队
官方网站: https://www.grapecity.com.cn/developer
回复 使用道具 举报
Java框架
注册会员   /  发表于:2017-7-13 14:28:05
6#
JeffryLI 发表于 2017-7-11 16:46
您好:您的demo写法不是很正确,具体还在研究,但是,按照您的需求做了一个新的,请查收

按照您给的例子,成功解决困扰我很久的技术难题。谢谢JeffryLI,谢谢葡萄城!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部