翻譯|使用教程|編輯:龔雪|2021-06-28 09:55:00.950|閱讀 262 次
概述:Telerik Scheduler提供管理用戶創(chuàng)建、編輯或刪除計(jì)劃事件時(shí)所需的hooks,如果您對(duì)Scheduler的默認(rèn)UI感到滿意,則可以采取簡(jiǎn)單的方法。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門(mén)軟控件火熱銷(xiāo)售中 >>
相關(guān)鏈接:
Telerik Scheduler for Blazor為用戶提供一個(gè)默認(rèn)界面來(lái)創(chuàng)建、更新或刪除活動(dòng)(包括設(shè)置定期計(jì)劃和控制允許誰(shuí)進(jìn)行更改)。但是如果如果該接口的功能比您需要的多或少,Scheduler 還提供您所需的所有hooks。
管理活動(dòng)列表更改的第一步是決定是否允許當(dāng)前用戶創(chuàng)建、更新或刪除活動(dòng),您可以通過(guò) TelerikScheduler 元素的 AllowCreate、AllowUpdate 和 AllowDelete 屬性來(lái)控制它。
以下示例控制用戶是否可以通過(guò)將 TelerikScheduler 的 AllowCreate 屬性綁定到名為 create 的布爾變量來(lái)創(chuàng)建活動(dòng):
<TelerikScheduler AllowCreate="@create" Data="@Appointments" …
這是定義該變量的代碼(以及將Scheduler綁定到計(jì)劃對(duì)象集合):
{ bool create = false; List<Appointment> Appointments = new List<Appointment>();
如果用戶處于 Admin 角色,則此代碼將 create 變量設(shè)置為 true(我假設(shè),在應(yīng)用程序的層次結(jié)構(gòu)中,該組件已包含在 Blazor 的 CascadingAuthenticationState 組件中):
[CascadingParameter] private Task<AuthenticationState> authState { get; set; } private System.Security.Claims.ClaimsPrincipal principal; protected async override void OnParametersSet() { if (authState != null) { principal = (await authState).User; if (principal.IsInRole("Admin")) { create = true; } }
現(xiàn)在,當(dāng)管理員用戶雙擊一個(gè)空的日期槽時(shí),Scheduler將彈出一個(gè)默認(rèn)對(duì)話框讓用戶創(chuàng)建活動(dòng),該對(duì)話框不是一個(gè)簡(jiǎn)單的實(shí)現(xiàn):
對(duì)話框中內(nèi)置了大量默認(rèn)驗(yàn)證,它還通過(guò)生成自動(dòng)填充到對(duì)象的 RecurrenceRule 屬性中的 RFC5545 規(guī)則來(lái)支持重復(fù)活動(dòng)(假設(shè)您的對(duì)象有一個(gè))。
當(dāng)然,您可能還想在保存活動(dòng)之前擴(kuò)展該數(shù)據(jù)、修改它或添加進(jìn)一步的驗(yàn)證(或者甚至可能執(zhí)行一些涉及另一個(gè)應(yīng)用程序的協(xié)調(diào)任務(wù))。 要實(shí)現(xiàn)該處理,您還需要將 TelerikScheduler 的 OnCreate 屬性連接到允許您訪問(wèn)對(duì)話框創(chuàng)建的活動(dòng)的方法。 這段代碼稱(chēng)為 CreateAppointment 的方法連接到 OnCreate 事件:
<TelerikScheduler AllowCreate="@create" OnCreate="@CreateAppointment"
假設(shè)在該方法中,您想要訪問(wèn)用戶的數(shù)據(jù),該方法必須接受 SchedulerCreateEventArgs 參數(shù),該參數(shù)的 Item 屬性將包含您用于活動(dòng)的對(duì)象。在本示例中,使用一個(gè)Appointment 的類(lèi)將調(diào)度程序綁定到一組對(duì)象,所以通過(guò)將 Item 屬性轉(zhuǎn)換為 Appointment 對(duì)象來(lái)啟動(dòng)方法。
除了獲取創(chuàng)建的對(duì)象之外,您還有責(zé)任將新對(duì)象添加到您的調(diào)度程序所綁定的集合中。
async Task CreateAppointment(SchedulerCreateEventArgs e) { Appointment apt = e.Item as Appointment; //process the data Appointments.Add(apt); }
如果您的對(duì)象具有適當(dāng)命名的屬性(例如 End、Start、Title、Description、IsAllDay、RecurrenceRule),這些屬性將填充用戶在對(duì)話框中輸入的值。當(dāng)然您在其上添加的任何自定義屬性仍將使用其默認(rèn)值,需在項(xiàng)目上設(shè)置 Id 屬性。
沒(méi)有明確的方法來(lái)取消 OnCreate 事件,但是如果您不希望添加繼續(xù)進(jìn)行,只需跳過(guò)將新項(xiàng)目添加到調(diào)度程序綁定到的集合中(更新一些其他的可能是個(gè)好主意) UI 的一部分,讓用戶知道為什么他們的新計(jì)劃沒(méi)有出現(xiàn)在 UI 中)。
如果您想顯示自己的對(duì)話框,您需要將 Scheduler 的 OnEdit 屬性連接到應(yīng)用程序中的某個(gè)方法。只要引發(fā) OnCreate 和/或 OnUpdate 事件(但不適用于 OnDelete 事件),就會(huì)調(diào)用 OnEdit 方法。 您不必啟用 OnEdit 事件——如果不允許用戶調(diào)用 OnCreate 或 OnUpdate,您的 OnEdit 方法將永遠(yuǎn)不會(huì)被調(diào)用。
此示例使用 OnEdit 屬性連接一個(gè)名為 CustomDialog 的事件,同時(shí)還啟用 OnCreate 事件:
<TelerikScheduler @ref="ts" AllowCreate="true" OnEdit="@CustomDialog" …
OnEdit 方法必須接受 SchedulerEditEventArgs 參數(shù),因?yàn)槟枰诜椒ㄖ凶龅牡谝患率菍⒃搮?shù)的 IsCancelled 屬性設(shè)置為 true——這會(huì)阻止出現(xiàn)調(diào)度程序的默認(rèn)對(duì)話框。因此,OnEdit 事件的開(kāi)始總是如下所示:
async Task CustomDialog(SchedulerEditEventArgs e) { e.IsCancelled = true;
在這種情況下,您可以顯示您想要從用戶那里收集信息的任何對(duì)話框(Telerik Blazor Window 組件在這里可能是一個(gè)不錯(cuò)的選擇)。
SchedulerEditEventArgs 參數(shù)在確定用戶正在做什么方面也很有用。 如果用戶嘗試創(chuàng)建新活動(dòng),則該參數(shù)的 IsNew 屬性將設(shè)置為 true; 如果用戶雙擊現(xiàn)有活動(dòng),則 IsNew 將為 false,并且參數(shù)的 Item 屬性將持有與活動(dòng)相關(guān)聯(lián)的對(duì)象(也將根據(jù)對(duì)象的 IsAllDay 屬性設(shè)置參數(shù)的 IsAllDay 屬性)。
Telerik DevCraft包含一個(gè)完整的產(chǎn)品棧來(lái)構(gòu)建您下一個(gè)Web、移動(dòng)和桌面應(yīng)用程序。它使用HTML和每個(gè).NET平臺(tái)的UI庫(kù),加快開(kāi)發(fā)速度。Telerik DevCraft提供最完整的工具箱,用于構(gòu)建現(xiàn)代和面向未來(lái)的業(yè)務(wù)應(yīng)用程序,目前提供UI for ASP.NET MVC、Kendo UI、UI for ASP.NET AJAX、UI for WPF、UI for Xamarin、Reporting等眾多控件。
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自:慧都網(wǎng)