翻譯|使用教程|編輯:龔雪|2022-08-23 10:57:01.093|閱讀 142 次
概述:本文將為大家介紹如何使用DevExpress WPF Scheduler控件的API,在WPF應用程序中配置數據加載邏輯。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
DevExpress WPF擁有120+個控件和庫,將幫助您交付滿足甚至超出企業需求的高性能業務應用程序。通過DevExpress WPF能創建有著強大互動功能的XAML基礎應用程序,這些應用程序專注于當代客戶的需求和構建未來新一代支持觸摸的解決方案。 無論是Office辦公軟件的衍伸產品,還是以數據為中心的商業智能產品,都能通過DevExpress WPF控件來實現。
在v20.2版本中,技術團隊為WPF Scheduler控件添加了按需數據加載支持,本文將為大家介紹如何使用WPF Scheduler的API在WPF應用程序中配置數據加載邏輯。
按需從源中獲取數據是一種常用技術,可以縮短具有大型數據集的應用程序的啟動時間。 為了幫助您估算收益,我們測量了 Scheduler 控件加載計劃所需的時間:
這些測量沒有考慮從源加載數據項所花費的時間,對于速度較慢的數據庫和服務,僅加載部分數據的性能提升會更高。
要啟用按需數據加載,您必須處理 DataSource.FetchAppointments 事件(時間區域有一個單獨的 DataSource.FetchTimeRegions 事件)。 當您處理這些事件時,DevExpress WPF Scheduler僅在其當前可見的時間間隔內加載數據,當用戶從一個時間段導航到另一個時間段時,我們的WPF Scheduler會從數據源中查詢更多信息(根據需要),緩存加載的數據以減少查詢頻率。
為了進一步降低查詢頻率,WPF Scheduler將加載數據的時間間隔擴展到 DataSource.FetchRange 屬性值,默認FetchRange為1個月。旦用戶滾動超出此范圍,Scheduler只會重新計算此時間間隔:
以下代碼示例演示了如何為DbContext數據源引入按需數據加載:
// Data context public class SchedulingDataContext : DbContext { public SchedulingDataContext() : base(CreateConnection(), true) { } static DbConnection CreateConnection() { //... } // Data items public DbSet<AppointmentEntity> AppointmentEntities { get; set; } //... } // Event implementation void dataSource_FetchAppointments(object sender, DevExpress.Xpf.Scheduling.FetchDataEventArgs e) { // Pass data objects to the event's Result property e.Result = dbContext.AppointmentEntities.Where( // The search query. // Use the item's QueryStart and QueryEnd properties to calculate the correct interval // as they take recurrence patterns into account. // The event's Interval property returns the time interval for which to load data objects. // Its value is the SchedulerControl.VisibleIntervals extended to the DataSource.FetchRange property value in both directions. x => x.QueryStart <= e.Interval.End && x.QueryEnd >= e.Interval.Start) .ToArray(); }
此代碼段中的 Where 方法的參數是一個基本的搜索查詢,不涉及過濾,您可以改用 FetchDataEventArgs.GetFetchExpression 方法來簡化實現:
void FetchAppointments(FetchDataEventArgs e) { e.Result = dbContext.AppointmentEntities .Where(e.GetFetchExpression<AppointmentEntity>()).ToArray(); }
要同步數據源和Scheduler(部分加載數據),您需要手動保存更改,內置的 CRUD 事件簡化了這一要求,可以為所有四個事件編寫一個處理程序:
<dxsch:SchedulerControl AppointmentAdded="ProcessChanges" AppointmentEdited="ProcessChanges" AppointmentRemoved="ProcessChanges" AppointmentRestored="ProcessChanges"/> void ProcessChanges(object sender, AppointmentCRUDEventArgs e) { db.Appointments.AddRange(e.AddToSource.Select(x => (Appointment)x.SourceObject)); db.Appointments.RemoveRange(e.DeleteFromSource.Select(x => (Appointment)x.SourceObject)); db.SaveChanges(); }
如果您想了解有關按需數據加載的更多信息,并且您的計算機上安裝了DevExpress WPF組件,請單擊下面的鏈接以啟動我們的示例演示:
數據按需加載演示:dxdemo://Wpf/DXScheduling/MainDemo/OnDemandDataLoading
DevExpress技術交流群6:600715373 歡迎一起進群討論
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:慧都網