点击“了解更多”获取DevExpress v19.2完整版下载
通过DevExpress WPF Controls,您能创建有着强大互动功能的XAML基础应用程序,这些应用程序# j H h G专注于当代客w Q A k % M @ f户的需求和构建未来新一代支持触摸的解决方案。DevExpress WPF Data Grid和TreeList的最新版本^ ] z T m # + N引入新的编辑模式——Edit Entire Row。
在默认模式下,通过in-place编辑器进行的更改将立即发布j o U d S r到数据源。与默认模式不同,Edit Entire Row要求用户* 8 M ~按下Update按钮G q v Y ? p . E n来将更改显式发布到您的数据源:
要激活Edit Entire Row模式,请使用TableView.ShowUpdateRowButtons / TreeListView.ShowUpdateRowButtons 属性。
当您在一行中更改单元格值时,WPF Data Grid / TreeList冻结UI。除非记录或取消更改,否则不3 Z `能离开已编辑的行。
要发布所做的更改,请单击Update按钮;如果单击Cancel按钮,更改将被放弃。
在示H H F w q r 1 i例中,Data Grid绑定到实体框架:
public MainWindow() {InitializeComponent();var context = new IssuesContext();grid.ItemsSo1 / f surce = context.Issues.ToArray();}
public class IssuesConte~ C v Pxt : DbContext {// ...}
当要更改网格值时,仅更改内存中的副本,而不更改数据库t , + N { * = (中的实际数据。若要保存更改并拦截可能的数G M 9据库错误,请处理GridViewBase.ValidateRow事件,并在DataContext上显式# ) 4调s / , g用SaveChanges:
<dxg:TableView ShowUpdateRowButtons=\"OnCellEditorOpen\"VaV Y F U 4lidateRow=$ Z x s 7 .\"TableView_ValidaB y i ateRow+ K :\" />
void TableView_ValidateRow(object sender, Go _ ~ A prid* ( C H 8RowValida= z h ~ h 3tionEventA2 ; : v 7 $ rrgs e) {var issue = (Issue)e. ( LRow;using(var context = new IssuesContext()) {var resulb + j U It = co - , Wntext.Issues.SingleO_ 4 drDefaulty B W S t(b => b.Id == issue.Id);if(result != null) {result.Subject = issue.Subject;result.Pri; u 7 @ority = issue.Priority;result.Votes = issue.Votes;result.Priority = issuZ * | ne.Priol t l Lrity;context.SaveChanges();}}}
示例中的数据库不允许您保存带有空主题的行:
protected override void OnModelCreating(DbModelBuilder modelB+ [ `uilder) {base.OnModelCreating(e 8 p J 2 d LmodelBuilder);
modelBuilder.Entity<Issue>().Property(x => x.Subject).IsRequired();}
如果您尝试指定一个空主题,则Data Grid将允许您更正值或单击Cancel按钮以返回以前的值。