原創(chuàng)|使用教程|編輯:龔雪|2020-06-16 10:14:15.820|閱讀 458 次
概述:DevExpress WPF Data Grid v20.1附帶了對虛擬數(shù)據(jù)源支持的重要增強(qiáng),歡迎下載DevExpress v20.1體驗(yàn)!
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關(guān)鏈接:
下載DevExpress v20.1完整版 DevExpress v20.1漢化資源獲取
通過DevExpress WPF Controls,您能創(chuàng)建有著強(qiáng)大互動功能的XAML基礎(chǔ)應(yīng)用程序,這些應(yīng)用程序?qū)W⒂诋?dāng)代客戶的需求和構(gòu)建未來新一代支持觸摸的解決方案。
DevExpress WPF Data Grid v20.1附帶了對虛擬數(shù)據(jù)源支持的重要增強(qiáng)。
您的用戶現(xiàn)在可以在行級別編輯數(shù)據(jù),用戶可以修改行值,然后按Update將更改發(fā)布到基礎(chǔ)數(shù)據(jù)源。
要啟用數(shù)據(jù)編輯:
1. 將可編輯列的AllowEditing屬性設(shè)置為true。
2. 啟動模式。
3. 處理ValidateRow事件,并將更改保存到基礎(chǔ)數(shù)據(jù)源(數(shù)據(jù)庫)。 若要異步保存更改,請將屬性設(shè)置為保存更改的任務(wù)。
<dxg:GridControl x:Name="grid"> <dxg:GridControl.Columns> <dxg:GridColumn FieldName="Subject" IsSmart="True" AllowEditing="true"/> <dxg:GridColumn FieldName="User" IsSmart="True" AllowEditing="true"/> <dxg:GridColumn FieldName="Created" IsSmart="True" AllowEditing="true"/> <dxg:GridColumn FieldName="Votes" IsSmart="True" AllowEditing="true"/> <dxg:GridColumn FieldName="Priority" IsSmart="True" AllowEditing="true"/> </dxg:GridControl.Columns> <dxg:GridControl.View> <dxg:TableView ValidateRow="TableView_ValidateRow" ShowUpdateRowButtons="OnCellValueChange" /> </dxg:GridControl.View> </dxg:GridControl> private void TableView_ValidateRow(object sender, GridRowValidationEventArgs e) { e.UpdateRowResult = Task.Run(() => { IssuesService.UpdateRow(e.Row as IssueData); }); }
如果您以前使用過虛擬源,則知道它們包括完整行的重新加載支持,您可以調(diào)用RefreshRows方法或在運(yùn)行時按F5執(zhí)行重新加載。
v20.1版本擴(kuò)展了此操作功能,現(xiàn)在您可以重新加載一部分網(wǎng)格數(shù)據(jù)。
使用鍵值數(shù)組來調(diào)用ReloadRows方法,該鍵值數(shù)組標(biāo)識要重新加載的行。 ReloadRows引發(fā)FetchRows事件,您可以在其中處理傳遞的鍵。以下代碼重新加載選定的行。
private void Button_Click(object sender, RoutedEventArgs e) { int[] selectedRowIds = grid.SelectedItems.Cast<IssueData>().Select(x => x.Id).ToArray(); ((InfiniteAsyncSource)(grid.ItemsSource)).ReloadRows(selectedRowIds); } static async Task<FetchRowsResult> FetchRowsAsync(FetchRowsAsyncEventArgs e) { if(e.Keys != null) { var reloadedIssues = await IssuesService.GetIssuesById(e.Keys.Cast<int>().ToArray()); return new FetchRowsResult(reloadedIssues); } // ... }
現(xiàn)在,WPF Data Grid 在刷新后會保留選定的行和滾動位置信息。 使用FetchRows事件處理程序中的Take屬性來獲取視圖中和視圖上方的行數(shù),將此數(shù)字傳遞到數(shù)據(jù)源,以將行返回到結(jié)果集。
static async Task<FetchRowsResult> FetchRowsAsync(FetchRowsAsyncEventArgs e) { var take = e.Take ?? 30; var issues = await IssuesService.GetIssuesAsync( skip: e.Skip, take: take); return new FetchRowsResult(issues, hasMoreRows: issues.Length == take); }
現(xiàn)在,虛擬源允許您處理自定義摘要,并將其顯示在WPF Data Grid中。
要顯示摘要,請?zhí)幚鞧etTotalSummaries事件。 在事件處理程序中,從數(shù)據(jù)源獲取摘要,并處理e.Summaries屬性來將摘要信息返回到數(shù)據(jù)網(wǎng)格。
static async Task<object[]> GetTotalSummariesAsync(GetSummariesAsyncEventArgs e) { IssueFilter filter = MakeIssueFilter(e.Filter); var summaryValues = await IssuesService.GetSummariesAsync(filter); return e.Summaries.Select(x => { if(x.SummaryType == SummaryType.Count) return (object)summaryValues.Count; if(x.SummaryType == SummaryType.Max && x.PropertyName == "Created") return summaryValues.LastCreated; // Custom Summaries if(x.SummaryType == SummaryType.Custom && x.PropertyName == "Votes") { var tag = x.Tag as string; if(tag == "Median") return summaryValues.VotesMedian; if(tag == "StdDev") return summaryValues.VotesStdDev; } throw new InvalidOperationException(); }).ToArray(); }
指定TotalSummary屬性在數(shù)據(jù)網(wǎng)格中顯示摘要。
<dxg:GridControl.TotalSummary> <dxg:GridSummaryItem SummaryType="Count" Alignment="Right"/> <dxg:GridSummaryItem SummaryType="Max" FieldName="Created" DisplayFormat="{}Last created: {0}" Alignment="Right"/> <!-- Custom Summaries --> <dxg:GridSummaryItem SummaryType="Custom" Tag="StdDev" FieldName="Votes" DisplayFormat="{}Votes StdDev={0}" Alignment="Right"/> <dxg:GridSummaryItem SummaryType="Custom" Tag="Median" FieldName="Votes" DisplayFormat="{}Votes Median={0}" Alignment="Right"/> </dxg:GridControl.TotalSummary>
中國區(qū)首發(fā) · DevExpress v20.1新版發(fā)布會報(bào)名開啟,名額有限先到先得哦~
DevExpress技術(shù)交流群2:775869749 歡迎一起進(jìn)群討論
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自:慧都網(wǎng)