DevExpress WPF使用技巧教程:WPF Data Grid和TreeList - 編輯整個行
下載DevExpress v19.2完整版 DevExpress v19.2漢化資源獲取
通過DevExpress WPF Controls,您能創(chuàng)建有著強大互動功能的XAML基礎(chǔ)應(yīng)用程序,這些應(yīng)用程序?qū)W⒂诋敶蛻舻男枨蠛蜆?gòu)建未來新一代支持觸摸的解決方案。DevExpress WPF Data Grid和TreeList的最新版本引入新的編輯模式——Edit Entire Row。
在默認模式下,通過in-place編輯器進行的更改將立即發(fā)布到數(shù)據(jù)源。與默認模式不同,Edit Entire Row要求用戶按下Update按鈕來將更改顯式發(fā)布到您的數(shù)據(jù)源:
要激活Edit Entire Row模式,請使用TableView.ShowUpdateRowButtons / TreeListView.ShowUpdateRowButtons 屬性。
當您在一行中更改單元格值時,WPF Data Grid / TreeList凍結(jié)UI。除非記錄或取消更改,否則不能離開已編輯的行。
要發(fā)布所做的更改,請單擊Update按鈕;如果單擊Cancel按鈕,更改將被放棄。
在示例中,Data Grid綁定到實體框架:
public MainWindow() { InitializeComponent(); var context = new IssuesContext(); grid.ItemsSource = context.Issues.ToArray(); } public class IssuesContext : DbContext { // ... }
當要更改網(wǎng)格值時,僅更改內(nèi)存中的副本,而不更改數(shù)據(jù)庫中的實際數(shù)據(jù)。若要保存更改并攔截可能的數(shù)據(jù)庫錯誤,請?zhí)幚?a target="_blank">GridViewBase.ValidateRow事件,并在DataContext上顯式調(diào)用SaveChanges:
<dxg:TableView ShowUpdateRowButtons="OnCellEditorOpen" ValidateRow="TableView_ValidateRow" /> void TableView_ValidateRow(object sender, GridRowValidationEventArgs e) { var issue = (Issue)e.Row; using(var context = new IssuesContext()) { var result = context.Issues.SingleOrDefault(b => b.Id == issue.Id); if(result != null) { result.Subject = issue.Subject; result.Priority = issue.Priority; result.Votes = issue.Votes; result.Priority = issue.Priority; context.SaveChanges(); } } }
示例中的數(shù)據(jù)庫不允許您保存帶有空主題的行:
protected override void OnModelCreating(DbModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder); modelBuilder.Entity<Issue>() .Property(x => x.Subject) .IsRequired(); }
如果您嘗試指定一個空主題,則Data Grid將允許您更正值或單擊Cancel按鈕以返回以前的值。
DevExpress v19.2全新發(fā)布,歡迎下載最新版體驗哦~
DevExpress技術(shù)交流群:540330292 歡迎一起進群討論
掃描關(guān)注DevExpress中文網(wǎng)微信公眾號,及時獲取最新動態(tài)及最新資訊