在 UI-Grid 标题中实现多列分组有更好的方法吗?

2024-03-20

我尝试使用以下方法在 UI-Grid 的列标题级别实现多列分组。

我遵循的步骤:

  1. 包括 UI 网格的以下标题单元格模板以及另一个“UI 网格行”:

    <div class="ui-grid-header custom-ui-grid-header">
        <div class="ui-grid-top-panel">
            <div class="ui-grid-header-viewport">
                <div class="ui-grid-header-canvas">
                    <div class="ui-grid-header-cell-wrapper" ng-style="colContainer.headerCellWrapperStyle()">
                        <div class="ui-grid-header-cell-row">
                            <div class="ui-grid-header-cell" ng-repeat="superCol in grid.options.superColDefs track by $index" col-name="{{superCol.name}}">
                                <div class="ui-grid-cell-contents" data-ng-bind="superCol.displayName">
                                </div>
                            </div>
                        </div>
                        <div class="ui-grid-header-cell-row">
                            <div class="ui-grid-header-cell ui-grid-clearfix" ng-repeat="col in colContainer.renderedColumns track by col.colDef.name" ui-grid-header-cell super-col-width-update col="col" render-index="$index">
                            </div>
                        </div>
                    </div>
                </div>
            </div>
            <div ui-grid-menu></div>
        </div>
    </div>
    
  2. 使用超级列数据添加对网格的列定义对象的引用:

    $scope.gridOptions = {
        headerTemplate: 'views/header-template.html',
        superColDefs: [{
            name: 'group1',
            displayName: 'Group 1'
        }, {
            name: 'group2',
            displayName: 'Group 2'
        }],
        columnDefs: [{
            name: 'name',
            displayName: 'Name',
            superCol: 'group1'
        }, {
            name: 'title',
            displayName: 'Title',
            superCol: 'group1'
        }, {
            name: 'age',
            displayName: 'Age',
            superCol: 'group2'
        }],
        data: [{
            name: 'Bob',
            title: 'CEO',
            age: '31'
        }, {
            name: 'Frank',
            title: 'Lowly Developer',
            age: '33'
        }]
    };
    
  3. 计算每个标题列的宽度,并将其添加到其超级列的宽度,以使每个相关的超级单元格跨越其子单元格。这可以通过放置在每个子标题单元格上的指令来实现。

指示:

.directive('superColWidthUpdate', ['$timeout', function ($timeout) {
    return {
        'restrict': 'A',
            'link': function (scope, element) {
            var _colId = scope.col.colDef.superCol,
                _el = jQuery(element);
            _el.on('resize', function () {
                _updateSuperColWidth();
            });
            var _updateSuperColWidth = function () {
                $timeout(function () {
                    var _parentCol = jQuery('.ui-grid-header-cell[col-name="' + _colId + '"]');
                    var _parentWidth = _parentCol.outerWidth(),
                        _width = _el.outerWidth();
                    _parentWidth = ((_parentWidth === 1) ? 0 : _parentWidth) + _width + 'px';
                    _parentCol.css({
                        'min-width': _parentWidth,
                        'max-width': _parentWidth
                    });
                }, 0);
            };
            _updateSuperColWidth();
        }
    };
}]);

在上述方法中,解决方案是通过操作 DOM 来呈现新的标题行和新的标题单元格来实现的,这些标题行和新的标题单元格位于通常标题行的顶部,但位于标题视口内。

但是,我正在寻找更好的方法,可能是使用 UI-Grid 的内部服务或指令。非常感谢这里的任何帮助!


多列分组不是网格当前所做的事情,障碍之一是与列移动和调整大小的交互。

话虽如此,我们希望拥有它,并且看看您所做的事情,我认为您可以帮助在 ui-grid 中编写该功能。

我不完全确定列分组如何与列移动一起工作 - 也许它总是会迫使整个组移动,而不仅仅是单个列。基本上,调整大小时,组列的宽度需要等于子列的总宽度。

这基本上就是您已经完成的操作,唯一的技巧是将其适应功能结构。

如果你想在某个时候加入 gitter 频道https://gitter.im/angular-ui/ng-grid https://gitter.im/angular-ui/ng-grid你可能会发现人们会在公关方面为你提供帮助(可能 @c0bra 最适合提供帮助)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 UI-Grid 标题中实现多列分组有更好的方法吗? 的相关文章

  • Angular js ng-view 渲染事件

    我如何知道 ng view 何时完全渲染 目前我尝试使用 scope on viewContentLoaded function scope on routeChangeSuccess function angular element do
  • 如何让 AngularJS 绑定到 A 标签的 title 属性?

    目的是让产品名称出现在缩略图的工具提示中 浏览器不会从 ng title 或 ng attr title 创建工具提示 我们使用 AngularJS 版本 1 0 7 您可以在任何属性前面添加 ng 或 ng attr Angular 将进
  • AngularUI Datepicker动态日期禁用

    我正在使用 AngularUI 日期选择器 我有两个相互影响的日期选择器 例如 一个是 开始日期 另一个是 结束日期 我不想为两个日期选择器创建验证 而是想消除无效日期的选项 即结束日期早于开始日期 反之亦然 有没有办法在选择日期时重新 触
  • AngularJS'无法读取未定义的'then'属性'

    我遇到这个问题 当我单击登录按钮时 chrome 控制台会记录以下内容 angular min js 117 TypeError 无法读取未定义的属性 then 在 m scope logIn loginModuleController j
  • 在 Protractor 测试中同步处理

    我正在尝试在量角器中编写一个我认为相当简单的测试 但似乎当您尝试同步执行任何操作时 量角器就会让您的生活变得困难 通常 处理定位器函数 返回 Promise 不是问题 因为任何 Expect 语句都会在测试断言之前自动解析传递给它的任何 P
  • 选项卡的 AngularJS 控制器

    我的页面中有三个选项卡 我在用着tabset and tab根据Angular 引导文档 https angular ui github io bootstrap tabs 我设置了一个控制器 div 其中有tabsetas div cla
  • Angularjs:排序在 Chrome 和 Firefox 浏览器中显示不同的结果

    您好 我在 chrome 和 firefox 浏览器中得到不同的数据排序结果 Firefox 显示正确的一个 HTML table class datatable thead tr th width 5 class Rank Rank nb
  • 离子动态列表分隔符

    我已经被这个问题困扰了一段时间 所以我希望你能让我朝正确的方向前进 我的角度工厂返回一个看起来像这样的对象 name Fall year 20xx id some id 这是一个学期列表 每个学期都有一个对象 其中包含名称 年份和学期 ID
  • 将输入字段中的逗号替换为点

    欧洲国家在输入十进制数字时使用逗号 而不是点 所以我想在用户输入时用逗号替换点号 我知道 input number 可以做到这一点 但我需要对 IE 的支持 我想指令是最好的选择 我用下面的代码尝试了一下 但它失败了 directive r
  • 如何在 JavaScript 中填充 Angularjs $scope 变量?

    mapApp controller myController function scope http scope namePlaceHolder Name scope name 我将范围变量绑定到 html 输入 如下所示
  • 什么是“更便宜”的性能明智的 $broadcast 或 $watch

    我的应用程序中有一种情况 每次用户的角色发生变化时 我都需要重新加载菜单 一个用户可以在多个公司中拥有角色 我想知道解决这个问题的最佳方法是什么 目前我正在做以下事情 app controller menuLoadingCtrl funct
  • 如何在 Angular JS 中显示以字节数组形式接收的图像

    我有一个将返回图像的服务器端应用程序 这些是响应标头 Content Disposition attachment filename 8822a009 944e 43f4 999b d297198d302a 1 0 low res Cont
  • 如何更新状态变更指令

    我有一个根状态 它定义了 Angular 模板的整体结构 在根状态下 我包含侧边栏 其中通过根据状态更改的指令具有动态菜单 像这样 state root abstract true url root templateUrl views ro
  • Angularjs 在生产中禁用调试数据

    我正在尝试按照角度文档中的建议禁用生产服务器中的调试数据here https docs angularjs org guide production 补充一点 我并没有真正看到性能和加载时间有任何改进 这是我的代码在 app js 中的样子
  • AngularUI Router:在调用子状态时将 url 参数传递给“抽象”状态

    我想在调用子状态时访问抽象状态内的 url 参数 stateParam 我很想知道如何做到这一点 代码在笨蛋也 http plnkr co edit L0TXx3DCBOJmh4XydXbV p preview stateProvider
  • 条件顺序仅在 init AngularJS 上执行

    如何在视图初始化时仅运行 orderBy 过滤器一次 我不希望我的列表在运行时被重新排序 li li 使用 orderBy 作为控制器中的过滤器 app controller DemoCtrl scope filter function s
  • 角度观察周期或摘要周期完成时如何调用函数

    在 Angular 完成所有监视周期后 有什么方法可以调用 Angular 中的自定义函数 要求 我的控制器内有多种手表功能 现在我只想在所有手表函数都由角度执行后才执行函数 摘要完成后 有几种方法可以注册回调 Using postDige
  • 角度模拟“模块”导致“[对象对象]不是函数”

    我正在尝试使用通过 Teaspoon 运行的 Jasmine 在 Angular 中创建一些单元测试 测试正在运行 但是我有一个简单的测试只是为了测试失败的控制器是否存在 我有以下测试设置 require spec helper requi
  • Angular JS - 提交到 $http 时日期发生变化 - 时区问题

    我遇到一个奇怪的问题Date当它通过 http put 传递到 API 时发生变化 我怀疑时区问题 Datepicker 触发 ng change 事件 console log Tue Jun 10 2014 00 00 00 GMT 01
  • Angular 2 变更检测是如何工作的?

    在 Angular 1 中 更改检测是通过对 scope 层次结构进行脏检查来进行的 我们会在模板 控制器或组件中隐式或显式创建观察者 在 Angular 2 中 我们不再有 scope 但我们确实重写了 setInterval setTi

随机推荐

  • cocos2d中忽略精灵的透明区域

    我已经被困了好几个星期了 现在试图找出如何忽略对精灵透明区域的触摸 我一直在尝试使用本教程来跟踪像素完美碰撞 http www learn cocos2d com 2011 12 fast pixelperfect collision de
  • Python 单元测试 - 如何修补我正在测试的方法内部的异步调用

    我使用 unittest mock 为我的 python 代码构建测试 我有一个正在尝试测试的方法 其中包含对另一个函数的异步调用 我想修补该异步调用 以便我可以让 Mock 返回一个测试值asset id 而不是实际调用异步方法 我尝试了
  • std::memory_order_seq_cst 的工作原理

    我从以下位置获取了有关 std memory order seq cst 的示例 http en cppreference com w cpp atomic memory order http en cppreference com w c
  • HTML 输入换行文本而不是水平溢出

    我有一个input字段 用户将在其中输入文本 当文本变得太长时 输入字段会水平延伸 而不是垂直下降 我尝试添加这个CSS overflow hidden word wrap break word 但我没有运气 关于如何实现这一目标还有其他建
  • 在 VBA (Excel) 中获取时区信息

    我想在 VBA 中确定不同国家 地区在特定日期的 GMT UTC 时间偏移 包括夏令时 有任何想法吗 编辑 来自自我回答 谢谢 0xA3 我快速浏览了链接页面 我假设您只能获取 Windows 运行所在本地的 GMT 偏移量 Convert
  • 如何构建一个 GUI 以在 jupyter 笔记本中使用?

    这个想法是能够在笔记本中构建和使用 GUI 因此使用具有大量参数的长函数比仅在笔记本中键入字符更有效 显然不是具体细节 但如果有人可以指出一些可能有帮助的库 项目 链接或任何资源 我查遍了互联网 到目前为止什么也没有 PyData 中有一个
  • git clone 不签出活动分支

    我有一个远程裸存储库 有两个分支 master 和 testing 其中 HEAD 指 testing 克隆此存储库时 git 检查 master 如果 master 和 testing 位于同一修订版上 即 HEAD test maste
  • Eclipse 任务为空

    我正在使用 Eclipse Helios 并在我的 java 类中添加了一些任务 使用 TODO blah blah 在行计数附近 我有一个小图标 表明任务已被识别 但我在任务视图中看不到它们 我尝试了任务视图和任务列表视图 它们是空的 但
  • 如何在量角器中调用另一个函数中的函数

    第一个功能 describe Shortlisting page function it Click on candidate status Screened function element by css i flaticon lefta
  • 以编程方式将下拉列表添加到特定单元格

    我想知道如何使用 VBA 以编程方式将下拉列表添加到 Excel 工作表的特定单元格 例如 我希望能够向单元格 i j 添加下拉列表并定义列表的元素 以编程方式执行此操作 With Selection Validation Delete A
  • 使用 dapper 查询空间数据

    我找到了一些相关的问题 https stackoverflow com questions 18088169 dapper spatial geography type 但作者放弃了 继续使用存储过程来进行 映射 这实际上是一个延续问题he
  • 如何使用 Laravel Passport 生成短令牌?

    我使用 Laravel Passport 和密码授予模式 我发现它生成的访问令牌很长 如下所示 token type Bearer expires in 31536000 access token eyJ0eXAiOiJKV1QiLCJhb
  • 没有 元素的 selenium 文件上传

    我正在尝试使用 selenium python 上传我的简历here https boards greenhouse io robinhood jobs 996796 app 在简历 简历附件部分下 当我检查 Attach 元素时 它显示为
  • java.lang.OutOfMemoryError:为 ChunkPool::allocate 请求 32756 字节。交换空间不足?

    我正在使用通过 WebLogic 10 3 部署在 HP 服务器上的 java 应用程序 版本信息 WebLogic Version 10 3 OS Version B 11 23 java version java version 1 6
  • 为什么这个工厂返回 $$state 对象而不是 response.data?

    所以我在服务器中有一个对象集合 我想在页面加载时填充 ng repeat 我创建了一个工厂 它从服务器上的资源中获取列表 如下所示 app factory objectArray http function http This is ret
  • 在 Elasticsearch 中搜索所有嵌套子级与给定查询匹配的对象

    给定一个具有以下映射的对象 a properties id type string b type nested properties key type string 我想检索该对象的所有实例 其中所有嵌套子对象都与给定查询匹配 例如 假设我
  • 如何使用 MATLAB 从 WEKA 检索类值

    我正在尝试使用 MATLAB 和 WEKA API 从 WEKA 检索类 一切看起来都很好 但类始终为 0 有什么想法吗 我的数据集有 241 个属性 将 WEKA 应用于该数据集我得到了正确的结果 创建第一个训练和测试对象 然后构建分类器
  • 是/否 - 有没有办法用纯 SVG 工具改进鼠标拖动?

    所以我花了一些时间尝试纯 无外部库 SVG 元素拖动 一般来说 一切正常 但是对于快速移动的鼠标来说存在一个令人讨厌的问题 当用户将可拖动的 SVG 元素靠近其边缘时 然后拖动 鼠标移动 这样的可拖动速度太快 鼠标 失去 可拖动 这里更详细
  • 带有 Picturebox 的 MouseWheel 事件?

    我想将鼠标悬停在图片框 或所有图片和主窗体 上并使用鼠标滚轮滚动 然而我没有运气 我编写了 pictureBox1 MouseWheel 并检查了增量 我在它 0 时设置了一个断点 到目前为止 无论我做什么 我都无法发生任何事情 我也尝试过
  • 在 UI-Grid 标题中实现多列分组有更好的方法吗?

    我尝试使用以下方法在 UI Grid 的列标题级别实现多列分组 我遵循的步骤 包括 UI 网格的以下标题单元格模板以及另一个 UI 网格行 div class ui grid header custom ui grid header div