没有找到合适的产品?
联系客服协助选型:023-68661681
提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
翻译|行业资讯|编辑:龚雪|2023-02-22 11:20:54.320|阅读 67 次
概述:Kendo UI for Angular的网格(Grid)组件能让开发者超越单行,让用户能够更好地显示额外的网格信息,欢迎下载相关组件体验!
# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>
Kendo UI致力于新的开发,来满足不断变化的需求,通过React框架的Kendo UI JavaScript封装来支持React Javascript框架。Kendo UI for Angular是专用于Angular开发的专业级Angular组件,telerik致力于提供纯粹的高性能Angular UI组件,无需任何jQuery依赖关系。
网格是显示一些可重复数据行的极好工具,但只有当你提供上下文时,“数据”才会变成“信息”。
Kendo UI for Angular Grid允许开发者将“data card”(数据卡)与网格中的行关联起来,您可以用它来保存“额外的”或“相关的”信息。用户可以选择展开或折叠感兴趣的行,但也可以控制显示哪些行的数据卡,以便将网格与UI的其余部分集成在一起。
Telerik_KendoUI产品技术交流群:726377843 欢迎一起进群讨论
使用Kendo UI Angular Grid实现数据卡很简单——只需要三个步骤:
开发者可以将ng-template元素放在kendo-grid元素中的任何位置,但是将它放在最后一个kendo-grid-column元素之后可能更有意义。
作为案例研究,对于显示Department对象列表的网格,您可以在行中显示部门的名称和id(对象的deptName和id属性),然后可以使用ng-template数据卡来显示Department对象中的其他属性。
例如,这个标记显示了部门的区域和部门经理的员工id:
<kendo-grid-column title="Name" field="deptName" …></kendo-grid-column> <ng-template kendoGridDetailTemplate let-dataItem> <strong>Region:</strong> {{ dataItem.region }} <br/> <strong>Manager:</strong> {{ dataItem.id }} </ng-template> </kendo-grid>
结果网格(其中一行展开)看起来像这样:
默认情况下,开发者只能访问与正在展开的行绑定的对象的属性,但是没有什么可以阻止开发者调用模板中的方法来检索额外的或相关的数据,由“row object’s”属性驱动。
例如,在之前的数据卡中,只显示经理的员工id并不是一个非常令人满意的解决方案,相反这个例子使用了一个名为getManagerName的方法,当传递给经理的id时,返回经理的名称:
<ng-template kendoGridDetailTemplate let-dataItem> <p><strong>Region:</strong> {{ dataItem.region }} <br/> <strong>Manager:</strong> {{ getManagerName(dataItem.id }} </ng-template>
如果想检索一个完整的相关对象,这样就可以在模板中显示多个属性,开发者可以利用ng-if指令调用一个方法来检索想要的对象。虽然不能将ng-if指令放在ng-template元素上(与展开行的关联的dataItem对象对于ng-template元素是不可用的),但这并不是真正的问题:只需添加一个元素,将所有想要使用返回对象的数据卡标记括起来,并将ng-if指令放在元素上。
这个示例将数据卡的一部分包含在一个section元素中,该元素使用ng-if调用一个名为getManagerInfo的方法。该示例还使用as关键字为方法返回的对象分配名称“manager”,然后card显示该对象的属性(作为奖励,如果该方法没有找到管理器对象并返回null,则使用ng-if也会抑制显示管理器信息):
<ng-template kendoGridDetailTemplate let-dataItem> <strong>Region:</strong> {{ dataItem.region }} <br/> <section *ngIf="getManagerInfo(dataItem.id) as manager" > <strong>Manager:</strong><br/> Id: {{manager.id}} <br/> Name: {{manager.empName}} </section> </ng-template>
有了这个改变,显示效果会更好:
当然当用户展开一行时,也可以使用相同的技术从模板中调用函数来更新UI的其他部分。
如果希望支持用户选择展开哪些行,也可以这样做,第一步是添加两个指令到kendo-grid元素:
每当展开一行时,网格将自动调用kendoGridExpandDetailsBy函数,并将返回的key属性添加到expandedDetailKeys数组(并在行折叠时删除键)。
将指令添加到网格中,并将它们绑定到函数(expandDepartments)和数组(expedddepartments),得到如下内容:
<kendo-grid [kendoGridExpandDetailsBy]="this.expandDepartments" [(expandedDetailKeys)]="this.expandedDepartments" …
对应函数和数组的基本实现如下所示:
expandDepartments = (dataItem: Department): string => { return dataItem.id; }; expandedDepartments:string[] = [];
到目前为止,添加这些指令并没有为网格添加任何功能。然而,有了这些指令,例如您可以让用户保存一个展开的行列表,展开/折叠其他行,然后返回到原来保存的列表。这两个方法将当前展开项数组保存到组件的属性中,然后通过从保存的数组中重置网格数组来恢复该列表:
savedExpandedList:string[] = []; saveExpandedList() { this.savedExpandedList = this.expandedDepartments; } restoreExpandedList() { this.expandedDepartments = []; this.savedExpandedList.forEach(d => this.expandedDepartments.push(d)); }
使用这些指令还允许您扩展所选择的行,以将网格的显示与UI中发生的任何其他事情集成在一起。例如,下面的函数将传递给它的部门id添加到展开行的数组中,从而导致网格中相应的行被展开。
这个实现假设您想要保留任何已展开的行,为了维护现有的展开行,代码将所有现有项从expandedDepartments数组复制到一个新数组,将传递的键添加到新数组,然后重置expandedDepartments数组:
expandSpecifiedDepartment(deptId:string) { let depts:string[] = []; this.expandedDepartments.forEach(d => depts.push(d)); depts.push(deptId); this.expandedDepartments = depts; }
如果您希望关闭所有现有的展开项,而只显示传递的项,则只需省略函数中的第二行。
当然,您可以自行决定如何使用此功能。但是现在您不仅可以显示任何网格项的附加信息,还可以将该功能集成到UI的其余部分。
了解最新Kendo UI最新资讯,请关注Telerik中文网!
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com
文章转载自:慧都网Parasoft dotTEST凭借其即插即用的内置安全标准和直观的规则映射能力,为C#/VB.NET 开发者提供了强大的支持。它有效消除了理解复杂标准与配置规则的障碍,让开发者能够专注于编写高质量代码,而非耗费精力在标准解读与工具映射上。这不仅显著提升了开发效率,缩短了交付周期,更从源头系统性地降低了安全风险,确保了软件符合严苛的行业合规要求。
Parasoft Virtualize以智能复用和轻量存储为核心,不仅解决了传统测试数据管理的冗余与性能瓶颈,更通过技术创新释放了团队的生产力。它让开发者摆脱重复劳动的束缚,将精力聚焦于更复杂的业务逻辑与质量验证,从而在快节奏的开发周期中保持敏捷与精准。无论是应对高并发的性能挑战,还是满足数据合规的严苛要求,Virtualize都以优秀的解决方案为技术团队提供了坚实的支撑。
imScale近期与 西门子PLM软件公司 和Tech Soft 3D达成技术合作,将行业领先的几何建模内核Parasolid及多格式CAD数据解析引擎HOOPS Exchange深度集成至平台中,全面增强CAD数据处理与互操作能力。
今天为大家介绍Kotlin 开发者如何在 Android Studio 中使用 JetBrains AI Assistant ,欢迎下载工具体验!
全新升级的Kendo UI,是创建数据丰富的Web应用程序的最完整UI库。
Kendo UI for Angular完整的Angular UI组件库,助力构建高性能的现代Angular应用。
Kendo UI for jQuery完整的jQuery UI组件库,可快速构建出色的高性能响应式Web应用程序。
Kendo UI Support for React支持React Javascript框架,更快地构建更好的应用程序。
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@evget.com
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢
慧都科技 版权所有 Copyright 2003-
2025 渝ICP备12000582号-13 渝公网安备
50010702500608号