界面控件Telerik UI for ASP. NET Core教程 - 如何為網格添加上下文菜單?

Telerik UI for ASP.NET Core是用于跨平臺響應式Web和云開發的最完整的UI工具集,擁有超過60個由Kendo UI支持的ASP.NET核心組件。它的響應式和自適應的HTML5網格,提供從過濾、排序數據到分頁和分層數據分組等100多項高級功能。

上下文菜單允許開發者為應用程序的最終用戶提供額外的功能和選項,本文將帶領大家看看如何在 ASP. NET Core 網格中使用它。

Telerik UI for ASP. NET Core Grid組件是一個非常受歡迎的功能,它使您可以自定義用戶體驗并創建對所呈現的數據有意義的選項。上下文菜單是應用程序很好的功能選擇,無論是桌面還是web端,都能直接從屏幕上顯示的數據為用戶添加額外的功能和選項,從而為您的產品增加價值!

Telerik UI for ASP. NET Core新版下載(Q技術交流:726377843)

您熟悉Telerik UI for ASP. NET Core Grid嗎?

Telerik UI for ASP. NET Core是一個健壯的UI組件庫,以其卓越的質量和性能而聞名,數據網格是該套件的突出特性之一。

嘗試網格上下文菜單

使用進度控制面板應用程序或從VS擴展安裝Telerik后,開始創建您的項目類型為Telerik UI for ASP. NET Core:

Telerik UI for ASP. NET Core中文教程

為項目選擇一個路徑:

Telerik UI for ASP. NET Core中文教程

選擇更適合您項目的技術:HTML 或 Tag Helpers,對于這個例子,我選擇了Grid and Menu模板。

Telerik UI for ASP. NET Core中文教程

為項目選擇一個主題。

Telerik UI for ASP. NET Core中文教程

確認下一個屏幕,項目看起來像這樣:

Telerik UI for ASP. NET Core中文教程

網格上下文菜單

Grid組件中的ContextMenu選項公開了許多復雜的特性,使開發人員能夠更有效、更直觀地與網格材料進行交互。

下面是一些網格的ContextMenu特性和功能的描述:

1. Header上下文菜單

排序:在標題上下文菜單中,用戶可以直接從上下文菜單中對網格列進行排序,從而改善用戶體驗。

導出:它支持將網格數據導出為多種格式,如PDF、Excel和其他格式,允許數據共享和報告。

2. Body上下文菜單

選擇:此功能允許您在網格中選擇單個行或單元格。

編輯:現在可以直接編輯網格內容,簡化了數據更新的用戶交互。

復制選擇:用戶可以復制選定的單元格或行,以便在其他地方更容易地使用數據。

不帶headers的復制選擇:它允許您在不帶標頭的情況下復制所選數據,從而在數據使用方面提供更大的靈活性。

重新排序行:重新排序工具允許用戶根據他們的選擇或需要重新排列行。

3. 數據驅動的自定義操作

條件操作:開發人員可以設置上下文菜單,根據網格中的數據顯示不同的選項。例如,可以根據行或單元格中的值顯示或隱藏特定的菜單選項。

動態菜單選項:上下文菜單的選項可以動態調整,允許對網格數據做出更靈敏和智能的反應。

4. 可擴展性

自定義菜單項:開發人員可以添加觸發特定操作的自定義菜單項,根據項目需求擴展網格的功能。

代碼是如何工作的?

在GridController上,更改了代碼以返回想要的數據:

1. using Kendo.Mvc.Extensions;
2. using Kendo.Mvc.UI;
3. using Microsoft.AspNetCore.Mvc;
4. using TelerikAspNetCoreApp1.Models;
5.
6. namespace TelerikAspNetCoreApp1.Controllers;
7. public class GridController : Controller
8. {
9. public ActionResult Orders_Read([DataSourceRequest] DataSourceRequest request)
10. {
11. var result = Enumerable.Range(2, 51).Select(i => new OrderViewModel
12. {
13. OrderID = i,
14. Freight = i * 10,
15. OrderDate = new DateTime(2023, 9, 15).AddDays(i % 7),
16. ShipName = "ShipName " + i,
17. ShipCity = "ShipCity " + i
18. });
19.
20. var customRet = result.ToList();
21.
22. customRet.Insert(0, new OrderViewModel
23. {
24. OrderID = 1,
25. Freight = 1 * 10,
26. OrderDate = new DateTime(2023, 9, 15).AddDays(1 % 7),
27. ShipName = "Brazil",
28. ShipCity = "Porto Alegre"
29. });
30.
31.
32. var dsResult = customRet.ToDataSourceResult(request);
33. return Json(dsResult);
34. }
35. }

現在,第一行包含上下文菜單中的選項將監視的特定數據。

在Index.cshtml中,添加了兩個通知:

1. @(Html.Kendo().Notification()
2. .Name("notification")
3. .Position(p => p.Pinned(true).Top(60).Left(30))
4. .AutoHideAfter(3000)
5. )
6.
7. @(Html.Kendo().Notification()
8. .Name("notificationOk")
9. .Position(p => p.Pinned(true).Top(30).Left(30))
10. .AutoHideAfter(2500)
11. )

將ContextMenu方法添加到Grid組件中:

1. @(Html.Kendo().Grid<TelerikAspNetCoreApp1.Models.OrderViewModel>()
2. .Name("grid")
3. .ContextMenu(

添加Head方法和需求的選項:

1. @(Html.Kendo().Grid<TelerikAspNetCoreApp1.Models.OrderViewModel>()
2. .Name("grid")
3. .ContextMenu(menu => menu
4. .Head(head =>
5. {
6. head.Create();
7. head.Separator();
8. head.SortAsc();
9. head.SortDesc();
10. head.Separator();
11. head.ExportPDF().Text("Generate Pdf File").Icon("file");
12. head.ExportExcel();
13. })

在這個示例中,向ExportPDF()添加了一個自定義文本。

在Body方法中添加需要的選項:

1. @(Html.Kendo().Grid<TelerikAspNetCoreApp1.Models.OrderViewModel>()
2. .Name("grid")
3. .ContextMenu(menu => menu
4. .Head(head =>
5. {
6. head.Create();
7. head.Separator();
8. head.SortAsc();
9. head.SortDesc();
10. head.Separator();
11. head.ExportPDF().Text("Generate Pdf File").Icon("file");
12. head.ExportExcel();
13. })
14. .Body(body =>
15. {
16. body.Edit();
17. body.Destroy();
18. body.Separator();
19. body.Select();
20. body.CopySelection();
21. body.CopySelectionNoHeaders();
22. body.Separator();
23. body.ReorderRow();
24. body.Custom("myTool").Text("Check status").Icon("gear");
25.
26. })
27. )

在Body方法上添加了一個自定義命令“Check status”,注意自定義名稱“myTool”。

在Index.cshtml上添加腳本:

1. <script>
2.
3. kendo.ui.grid.commands["myToolCommand"] = kendo.ui.grid.GridCommand.extend({
4. exec: function () {
5.
6. var selectedItems = $("#grid").data("kendoGrid").selectedKeyNames();
7. var actualItems = [];
8.
9. if (selectedItems.length > 0) {
10. selectedItems.forEach(function (key) {
11.
12. var item = grid.dataSource.get(key);
13. if (item.ShipCity == "Porto Alegre") {
14. var popupNotification = $("#notification").data("kendoNotification");
15. popupNotification.show(`This city ’${item.ShipCity}’ is temporary blocked!`, "error")
16. }
17. else {
18. actualItems.push(item);
19. }
20. });
21. }
22. if (actualItems.length > 0) {
23. var popupNotification = $("#notificationOk").data("kendoNotification");
24. popupNotification.show(`’${actualItems.length}’ cities available!`, "info")
25. }
26. }
27. });
28.
29. </script>

通過在網格命令的名稱中添加“command”,名稱“myTool”成為命令:

1. kendo.ui.grid.commands["myToolCommand"] = kendo.ui.grid.GridCommand.extend({
2. ...

下圖顯示了工作演示:

Telerik UI for ASP. NET Core中文教程

現在當點擊“Check status”時,它將執行如下驗證:

1. var selectedItems = $("#grid").data("kendoGrid").selectedKeyNames();
2. var actualItems = [];
3.
4. if (selectedItems.length > 0) {
5. selectedItems.forEach(function (key) {
6.
7. var item = grid.dataSource.get(key);
8. if (item.ShipCity == "Porto Alegre") {
9. var popupNotification = $("#notification").data("kendoNotification");
10. popupNotification.show(`This city ’${item.ShipCity}’ is temporary blocked!`, "error")
11. }
12. else {
13. actualItems.push(item);
14. }
15. });
16. }
17. if (actualItems.length > 0) {
18. var popupNotification = $("#notificationOk").data("kendoNotification");
19. popupNotification.show(`’${actualItems.length}’ cities available!`, "info")
20. }

下面一行接收所有選定的鍵值:

1. var selectedItems = $("#grid").data("kendoGrid").selectedKeyNames();

下面一行通過鍵獲取數據記錄:

1. var item = grid.dataSource.get(key);

下面這一行分析了模型中的屬性/列ShipCity:

1. if (item.ShipCity == "Porto Alegre")

通知將顯示如下內容:

1. if (actualItems.length > 0) {
2. var popupNotification = $("#notificationOk").data("kendoNotification");
3. popupNotification.show(`’${actualItems.length}’ cities available!`, "info")
4. }

Telerik UI for ASP. NET Core中文教程

你需要做一些額外的配置才能使這個示例正常工作:

添加Model方法并并定義網格的唯一Id,使用.Model(model => model. Id(p => p.**OrderID**)):

1. .DataSource(dataSource => dataSource
2. .Ajax()
3. .Model(model => model.Id(p => p.OrderID))
4. .PageSize(20)
5. .Read(read => read.Action("Orders_Read", "Grid"))
6. )
7. )

在OrderViewModel上,為OrderID定義[Key]:

1. [Key]
2. public int OrderID
3. {
4. get;
5. set;
6. }

下面是Grid組件的完整定義:

1. @(Html.Kendo().Grid<TelerikAspNetCoreApp1.Models.OrderViewModel>()
2. .Name("grid")
3. .ContextMenu(menu => menu
4. .Head(head =>
5. {
6. head.Create();
7. head.Separator();
8. head.SortAsc();
9. head.SortDesc();
10. head.Separator();
11. head.ExportPDF().Text("Generate Pdf File").Icon("file");
12. head.ExportExcel();
13. })
14. .Body(body =>
15. {
16. body.Edit();
17. body.Destroy();
18. body.Separator();
19. body.Select();
20. body.CopySelection();
21. body.CopySelectionNoHeaders();
22. body.Separator();
23. body.ReorderRow();
24. body.Custom("myTool").Text("Check status").Icon("gear");
25.
26. })
27. )
28. .Columns(columns =>
29. {
30. columns.Bound(p => p.OrderID).Filterable(false);
31. columns.Bound(p => p.Freight);
32. columns.Bound(p => p.OrderDate).Format("{0:MM/dd/yyyy}");
33. columns.Bound(p => p.ShipName);
34. columns.Bound(p => p.ShipCity);
35. })
36. .Selectable(selectable => selectable
37. .Mode(GridSelectionMode.Multiple))
38. .Pageable()
39. .Sortable()
40. .Scrollable()
41. .Groupable()
42. .Filterable()
43. .HtmlAttributes(new { style = "height:550px;" })
44. .DataSource(dataSource => dataSource
45. .Ajax()
46. .Model(model => model.Id(p => p.OrderID))
47. .PageSize(20)
48. .Read(read => read.Action("Orders_Read", "Grid"))
49. )
50. )

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/713418.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/713418.shtml
英文地址,請注明出處:http://en.pswp.cn/news/713418.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

[unity] c# 擴展知識點其一 【個人復習筆記/有不足之處歡迎斧正/侵刪】

.NET 微軟的.Net既不是編程語言也不是框架,是類似于互聯網時代、次時代、21世紀、信息時代之類的宣傳口號,是一整套技術體系的統稱&#xff0c;或者說是微軟提供的技術平臺的代號. 1.跨語言 只要是面向.NET平臺的編程語言(C#、VB、 C、 F#等等)&#xff0c;用其中一種語言編寫…

帶著問題閱讀源碼——Spring MVC是如何將url注冊到RequestMappingHandlerMapping?

背景 在 Spring MVC 中&#xff0c;DispatcherServlet 是前端控制器&#xff08;front controller&#xff09;&#xff0c;它負責接收所有的 HTTP 請求并將它們映射到相應的處理器&#xff08;handler&#xff09;。為了實現這一點&#xff0c;Spring MVC 使用了適配器模式將…

大街款商城項目03-微服務之間調用

目錄 RestTemplate OpenFeign 1.引入依賴open-feign 2.聲明要調用的服務和接口 3.注入FeignClient啟用 4驗證 RestTemplate 在微服務架構中&#xff0c;使用RestTemplate是一種常見的方式進行服務間的HTTP通信。以下是一個簡單的示例&#xff0c;演示如何使用RestTempla…

Android minigbm框架普法

Android minigbm框架普法 引言 假設存在這么一個場景&#xff0c;我的GPU的上層實現走的不是標準的Mesa接口&#xff0c;且GPU也沒有提專門配套的gralloc和hwcompoer實現。那么我們的Android要怎么使用到EGL和GLES庫呢&#xff0c;并且此GPU驅動是支持drm實現的&#xff0c;也有…

Galaxy生信云平臺:集合操作工具大全

Galaxy平臺上的文件稱為數據集&#xff08;Dataset&#xff09;&#xff0c;如果將多個文件組合在一起&#xff0c;則形成數據集合&#xff08;Dataset collection&#xff09;。 上傳文件后&#xff0c;可以通過工具將文件構建成數據集合。具體操作可以參考前面介紹轉錄組流程…

后臺組件體系

從今天開始進入更細粒度說明。后臺微服務是由組件構成的。平臺的開發理念是為甲方打造一個生態環境。安裝實施時為客戶安裝私倉來管理組件。開發微服務時鼓勵拆分為組件。開發新功能時&#xff0c;先看有沒有相關組件&#xff0c;有的話就在pom.xml文件&#xff08;不要問我這個…

OpenDDS中避免訂閱發布同一主題時的自環現象(適用于所有DDS)

目錄 1、摘要2、理解"自反傳輸"2、解決方案2.1、使用 DataReaderListener 進行過濾3.2、使用 Partition 進行隔離3.3、 使用不同的 Topic 總結 1、摘要 在 OpenDDS 中&#xff0c;同時訂閱并發布同一主題會導致自環現象&#xff0c;即接收到自己發送的消息。本文介紹…

Day10:基礎入門-HTTP數據包Postman構造請求方法請求頭修改狀態碼判斷

目錄 數據-方法&頭部&狀態碼 案例-文件探針 案例-登錄爆破 工具-Postman自構造使用 思維導圖 章節知識點&#xff1a; 應用架構&#xff1a;Web/APP/云應用/三方服務/負載均衡等 安全產品&#xff1a;CDN/WAF/IDS/IPS/蜜罐/防火墻/殺毒等 滲透命令&#xff1a;文件…

最新消息:英特爾宣布成立全新獨立運營的FPGA公司——Altera

今天&#xff0c;英特爾宣布成立全新獨立運營的FPGA公司——Altera&#xff08;2015年6月Intel以 167 億美元的價格&#xff0c;收購FPGA廠商Altera&#xff09;。首席執行官Sandra Rivera和首席運營官Shannon Poulin分享展示其在超過550億美元的市場中保持領先性的戰略規劃&am…

什么是端點安全以及如何保護端點

什么是端點安全 端點是指可以接收信號的任何設備&#xff0c;是員工使用的一種計算設備&#xff0c;用于保存公司數據或可以訪問 Internet。端點的幾個示例包括&#xff1a;服務器、工作站&#xff08;臺式機和筆記本電腦&#xff09;、移動設備、虛擬機、平板電腦、物聯網、可…

一【初識EMC】

在作為硬件行業相關從業者&#xff0c;經常接觸到EMC相關問題&#xff0c;下面來簡單介紹下EMC相關方面的知識 文章目錄 前言一、生活中的EMC現象&#xff1f;二、EMC是什么三、EMC的三要素四、EMI與EMS的評估方式1.RE2.CE3.HAR4.FLICKER5.Rs6.CS7.ESD8.EFT9.DIP10.PMS11.surge…

Zookeeper3:客戶端命令

文章目錄 客戶端命令連接服務端Zookeeper客戶端內置命令 ls - 節點信息 客戶端命令 連接服務端Zookeeper //客戶端連接服務端zookeeper 默認連的本機2181端口的zookeeper cd /opt/module/zookeeper-3.9.1/bin && sh zkCli.sh//客戶端連接遠程服務端zookeeper cd /op…

【小塵送書-第十一期】編程的基石,開發的核心:《算法秘籍》

大家好&#xff0c;我是小塵&#xff0c;歡迎你的關注&#xff01;大家可以一起交流學習&#xff01;歡迎大家在CSDN后臺私信我&#xff01;一起討論學習&#xff0c;討論如何找到滿意的工作&#xff01; &#x1f468;?&#x1f4bb;博主主頁&#xff1a;小塵要自信 &#x1…

R語言簡介|你對R語言了解多少?

R語言是一種專門用于統計計算和圖形展示的開源編程語言&#xff0c;它在數據科學領域有著廣泛的應用。下面對R語言的環境、基礎語法及注釋進行解釋&#xff1a; R語言環境 安裝與配置 安裝R語言通常可以從官方站點下載對應操作系統的安裝包&#xff0c;如Windows、Linux、ma…

lotus worker停止接單

worker停止接單 會做完當前的任務 lotus-worker set --enabledfalse# lotus-worker --worker-repo/worker01 set --enabledfalse DEPRECATED: This command will be removed in the future# lotus-worker --worker-repo/worker01 info Enabled: false參考 worker停止接單

如何使用GAP-Burp-Extension掃描潛在的參數和節點

關于GAP-Burp-Extension GAP-Burp-Extension是一款功能強大的Burp擴展&#xff0c;該工具在getAllParams擴展的基礎上進行了升級&#xff0c;該工具不僅可以幫助廣大研究人員在安全審計過程中掃描潛在的參數&#xff0c;而且還可以搜索潛在的鏈接并使用這些參數進行測試&#…

零基礎如何快速入門倫敦金交易

倫敦金交易是金融市場中備受關注的一種投資方式。對于想要學習如何炒倫敦金并快速開始交易的人來說&#xff0c;本文將為您提供一份全面而詳細的指南。無論您是初學者還是有經驗的交易者&#xff0c;本文都將幫助您了解倫敦金交易的基本知識&#xff0c;并提供一些實用的技巧和…

安卓與鴻蒙的區別

安卓和鴻蒙是兩個不同的操作系統。下面是它們的一些區別&#xff1a; 1. 公司&#xff1a;安卓是由谷歌開發的操作系統&#xff0c;而鴻蒙是由華為開發的操作系統。 2. 開放性&#xff1a;安卓是開放源代碼的操作系統&#xff0c;可以由各種手機制造商進行定制和使用。鴻蒙也…

協議-http協議-基礎概念03-http狀態碼-http特點-http性能-壓縮和分塊傳輸-范圍請求

參考來源&#xff1a; 極客時間-透視HTTP協議(作者&#xff1a;羅劍鋒)&#xff1b; 01-狀態碼分類 開頭的 Version 部分是 HTTP 協議的版本號&#xff0c;通常是HTTP/1.1&#xff0c;用處不是很大。后面的 Reason 部分是原因短語&#xff0c;是狀態碼的簡短文字描述&#xff…

04鎖機制-分布式鎖

一句話導讀 分布式鎖是一種在分布式系統中實現對共享資源的訪問控制的鎖機制&#xff0c;它可以確保在不同的節點上只有一個線程能夠獲取鎖&#xff0c;從而避免了分布式環境下的并發訪問問題 目錄 一句話導讀 一、什么是分布式鎖 二、實現分布式鎖的方式 1.基于數據庫實現…