原創(chuàng)|使用教程|編輯:龔雪|2020-06-16 10:14:15.820|閱讀 464 次
概述:DevExpress WPF Data Grid v20.1附帶了對(duì)虛擬數(shù)據(jù)源支持的重要增強(qiáng),歡迎下載DevExpress v20.1體驗(yàn)!
# 界面/圖表報(bào)表/文檔/IDE等千款熱門(mén)軟控件火熱銷(xiāo)售中 >>
相關(guān)鏈接:
下載DevExpress v20.1完整版 DevExpress v20.1漢化資源獲取
通過(guò)DevExpress WPF Controls,您能創(chuàng)建有著強(qiáng)大互動(dòng)功能的XAML基礎(chǔ)應(yīng)用程序,這些應(yīng)用程序?qū)W⒂诋?dāng)代客戶的需求和構(gòu)建未來(lái)新一代支持觸摸的解決方案。
DevExpress WPF Data Grid v20.1附帶了對(duì)虛擬數(shù)據(jù)源支持的重要增強(qiáng)。
您的用戶現(xiàn)在可以在行級(jí)別編輯數(shù)據(jù),用戶可以修改行值,然后按Update將更改發(fā)布到基礎(chǔ)數(shù)據(jù)源。
要啟用數(shù)據(jù)編輯:
1. 將可編輯列的AllowEditing屬性設(shè)置為true。
2. 啟動(dòng)模式。
3. 處理ValidateRow事件,并將更改保存到基礎(chǔ)數(shù)據(jù)源(數(shù)據(jù)庫(kù))。 若要異步保存更改,請(qǐng)將屬性設(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);
});
}
如果您以前使用過(guò)虛擬源,則知道它們包括完整行的重新加載支持,您可以調(diào)用RefreshRows方法或在運(yùn)行時(shí)按F5執(zhí)行重新加載。
v20.1版本擴(kuò)展了此操作功能,現(xiàn)在您可以重新加載一部分網(wǎng)格數(shù)據(jù)。
使用鍵值數(shù)組來(lái)調(diào)用ReloadRows方法,該鍵值數(shù)組標(biāo)識(shí)要重新加載的行。 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 在刷新后會(huì)保留選定的行和滾動(dòng)位置信息。 使用FetchRows事件處理程序中的Take屬性來(lái)獲取視圖中和視圖上方的行數(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中。
要顯示摘要,請(qǐng)?zhí)幚鞧etTotalSummaries事件。 在事件處理程序中,從數(shù)據(jù)源獲取摘要,并處理e.Summaries屬性來(lái)將摘要信息返回到數(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>
中國(guó)區(qū)首發(fā) · DevExpress v20.1新版發(fā)布會(huì)報(bào)名開(kāi)啟,名額有限先到先得哦~
DevExpress技術(shù)交流群2:775869749 歡迎一起進(jìn)群討論
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@ke049m.cn
文章轉(zhuǎn)載自:慧都網(wǎng)