界面组件Kendo UI for Angular——让网格数据信息显示更全面

news2024/11/25 22:38:25

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的其余部分集成在一起。

Kendo UI R1 2023正式版下载(Q技术交流:726377843)

显示其他详细信息

使用Kendo UI Angular Grid实现数据卡很简单——只需要三个步骤:

  1. 在kendo-grid元素内部,添加一个ng-template元素,它引用kendoGridDetailTemplate。

  1. 通过在ng-template元素中添加let-dataItem微语法来访问行中显示的对象。

  1. 在模板中插入HTML。

开发者可以将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元素:

  • expandedDetailKeys:必须指向标识展开行的键数组。

  • kendoGridExpandDetailsBy:这必须指向一个返回行对象的键属性的函数。

每当展开一行时,网格将自动调用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的其余部分。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/365198.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

优秀的项目经理需要具备哪些品质呢?

要把项目的任务计划性地分配给各个负责人 1、要明确项目都有负责人&#xff0c;而且许多任务负责人有可能不止一个。用A代表负责人&#xff0c;B代表助手。每项任务都要有一个团队内部的负责人。 2、什么人承担什么责任都需由团队成员共同商讨来决定&#xff0c;这时候就需要…

大规模 IoT 边缘容器集群管理的几种架构-4-Kubeedge

前文回顾 大规模 IoT 边缘容器集群管理的几种架构-0-边缘容器及架构简介大规模 IoT 边缘容器集群管理的几种架构-1-RancherK3s大规模 IoT 边缘容器集群管理的几种架构-2-HashiCorp 解决方案 Nomad大规模 IoT 边缘容器集群管理的几种架构-3-Portainer &#x1f4da;️Reference…

C进阶:6.C语言文件操作

目录 1.为什么使用文件 2.什么是文件 2.1程序文件 2.2数据文件 2.3文件名 3.文件的打开和关闭 3.1文件指针 4.文件的顺序读写 fputc()写入文件 fgetc()从文件中读取 fgets()读取一段字符串 fprintf格式化写入文件、fscanf格式化读出文件 4.1对比一组函数 5.文件…

stm32f103封装 入门教学(一)LED程序CubeMX

本文代码使用 HAL 库。 文章目录前言一、LED 原理图二、CubeMX创建工程三、LED 相关函数1. 输出电平函数&#xff1a;2. 延时函数&#xff1a;3. 翻转电平函数&#xff1a;四、详细代码实验现象 &#xff1a;总结代码 源码&#xff1a;前言 从这篇文章开始&#xff0c;我们讲解…

Springboot 为了偷懒,我封装了一个自适配的数据单位转换工具类

前言 平时做一些统计数据&#xff0c;经常从数据库或者是从接口获取出来的数据&#xff0c;单位是跟业务需求不一致的。 比如&#xff0c; 我们拿出来的 分&#xff0c; 实际上要是元 又比如&#xff0c;我们拿到的数据需要 乘以100 返回给前端做 百分比展示 又比如&#xff…

如何通俗地理解原码、反码和补码

进制是什么&#xff1f;进制是人为设计的一套带进制计数方法&#xff0c;比如日常使用的十进制&#xff0c;就是0-9这10个数字&#xff0c;每逢十就会向高位进一。因为人类只有十根手指&#xff0c;所以天生地就会想到使用十进制--数到10发现手指头不够用了&#xff0c;就只能进…

JVM20浅堆深堆与内存泄露

浅堆深堆与内存泄露 1. 浅堆&#xff08;Shallow Heap&#xff09; 浅堆是指一个对象所消耗的内存。在 32 位系统中&#xff0c;一个对象引用会占据 4 个字节&#xff0c;一个 int 类型会占据 4 个字节&#xff0c;long 型变量会占据 8 个字节&#xff0c;每个对象头需要占用…

synchronized和ReentrantLock有什么区别呢?

第15讲 | synchronized和ReentrantLock有什么区别呢&#xff1f; 从今天开始&#xff0c;我们将进入 Java 并发学习阶段。软件并发已经成为现代软件开发的基础能力&#xff0c;而 Java 精心设计的高效并发机制&#xff0c;正是构建大规模应用的基础之一&#xff0c;所以考察并发…

(考研湖科大教书匠计算机网络)第六章应用层-第五节:文件传送协议FTP

获取pdf&#xff1a;密码7281专栏目录首页&#xff1a;【专栏必读】考研湖科大教书匠计算机网络笔记导航 文章目录一&#xff1a;概述二&#xff1a;工作原理三&#xff1a;控制连接与数据连接本节对应视频如下 【计算机网络微课堂&#xff08;有字幕无背景音乐版&#xff09;】…

Linux NOR 开发指南

Linux NOR 开发指南 1 简介 编写目的 此文档描述Sunxi NOR 模块的使用方法&#xff0c;为相关人员调试提供指导 适用范围 boot0: 适用于brandy-2.0u-boot: 适用于u-boot-2018kernel: 适用于linux-4.9/linux-5.4 内核 BSP 的开发人员、测试人员 2 模块介绍 2.1 模块功能…

量化免费行情源最强对比分析--看这篇就够了

序言 很多想做量化的用户一直苦于没有稳定的行情源&#xff0c;我也是一个&#xff0c;但是其实市面上有很多免费好用的行情源&#xff0c;在这边给大家推荐几个我用过的&#xff0c;给大家做个参考 先做一下对比&#xff1a; INSIGHTTushare聚宽米筐支持语言java&#xff0c…

Python:try except 异常处理整理

目录 一、try except异常处理的语句格式 二、获取相关异常信息 &#xff08;1&#xff09;sys.exec_info() 三、traceback模块的常用方式 &#xff08;1&#xff09;traceback.print_tb(tb, limitNone, fileNone) 打印指定堆栈异常信息 &#xff08;2&#xff09;tracebac…

python自动化测试学习笔记-6redis应用

上次我们学到了redis的一些操作&#xff0c;下面来实际运用以下。 这里我们先来学习一下什么是cookie和session。 什么是Cookie 其实简单的说就是当用户通过http协议访问一个服务器的时候&#xff0c;这个服务器会将一些Name/Value键值对返回给客户端浏览器&#xff0c;并将…

ArcGIS土地利用变化出图

一、数据说明 1. lt51190382010144bjc00文件夹&#xff1a;2010年的影像数据存放在此文件夹中。 2. class2015.tif&#xff1a;2015年的土地利用结果数据。 3. 训练样本2010.shp&#xff1a;对2010年影像执行最大似然分类法所使用的训练样本数据。 4. 点位置.txt&#xff1…

剑指 Offer 47. 礼物的最大价值

剑指 Offer 47. 礼物的最大价值 难度&#xff1a;middle\color{orange}{middle}middle 题目描述 在一个 m*n 的棋盘的每一格都放有一个礼物&#xff0c;每个礼物都有一定的价值&#xff08;价值大于 0&#xff09;。你可以从棋盘的左上角开始拿格子里的礼物&#xff0c;并每次…

深度剖析数据在内存中的存储(上)

目录 1. 数据类型介绍 1.1 类型的基本归类 2. 整形在内存中的存储 2.1 原码、反码、补码 2.2 大小端介绍 2.3 一道小题 本章重点 1. 数据类型详细介绍 2. 整形在内存中的存储&#xff1a;原码、反码、补码 3. 大小端字节序介绍及判断 4. 浮点型在内存中的存储解析 正文…

【手把手一起学习】(三) Altium Designer 20 原理图库添加元件

1 添加元件 元件符号是元件在原理图上的表现形式&#xff0c;主要由边框、管脚、名称等组成&#xff0c;原理图库中的元件管脚(顺序&#xff0c;间距等)与电子元件实物的引脚严格对应&#xff0c;绘制原理图库时&#xff0c;一定参考元件规格书和芯片数据手册中的说明&#xf…

狂飙吧,Lifecycle与协程、Flow的化学反应

前言 协程系列文章&#xff1a; 一个小故事讲明白进程、线程、Kotlin 协程到底啥关系&#xff1f;少年&#xff0c;你可知 Kotlin 协程最初的样子&#xff1f;讲真&#xff0c;Kotlin 协程的挂起/恢复没那么神秘(故事篇)讲真&#xff0c;Kotlin 协程的挂起/恢复没那么神秘(原理…

Elasticsearch:使用 pipelines 路由文档到想要的 Elasticsearch 索引中去

路由文件 当应用程序需要向 Elasticsearch 添加文档时&#xff0c;它们首先要知道目标索引是什么。在很多的应用案例中&#xff0c;特别是针对时序数据&#xff0c;我们想把每个月的数据写入到一个特定的索引中。一方面便于管理索引&#xff0c;另外一方面在将来搜索的时候可以…

从0开始学python -37

Python3 错误和异常 作为 Python 初学者&#xff0c;在刚学习 Python 编程时&#xff0c;经常会看到一些报错信息&#xff0c;在前面我们没有提及&#xff0c;这章节我们会专门介绍。 Python 有两种错误很容易辨认&#xff1a;语法错误和异常。 Python assert&#xff08;断…