彩票走势图

解决DevExpress ASPxGridView不支持编辑数据的问题

原创|其它|编辑:郝浩|2012-10-08 10:26:42.000|阅读 890 次

概述:在项目中,我通过ASPxGridView来链接到LinqServerModeDataSource。麻烦的是,ASPxGridView不允许我们编辑数据,但是我必须支持编辑数据.本文主要介绍如何解决DevExpress ASPxGridView不支持编辑数据的问题。

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

在项目中,我通过ASPxGridView来链接到LinqServerModeDataSource。麻烦的是,ASPxGridView不允许我们编辑数据,但是我必须支持编辑数据,这个如何解决?

解决方案

LinqServerModeDataSource与一个支持数据修改操作的数据源控件配合使用,可轻松地解决ASPxGridView的编辑数据问题。

首先, 我们得了解一下ASPxGridView是如何工作的. 当点击更新(删除)按钮时,表格视图将会调用它相关的数据源的更新(删除,插入)命令。当ASPxGridView连接到LinqServerModeDataSource时,你点击更新(删除)等这些按钮,将会触发”Specified Method is Not Supported“异常, 并且ASPxGridView 还会在EditForm的错误行上提示"Specified Method is Not Supported" 。这是因为 LINQ 定义了查询语言,但是它并没有定义如何进行数据修改,所以才会发生这个问题。

你应该做的是:

1) 处理ASPxGridView的 行更新, 行插入, 行删除事件;

2) 防止ASPxGridView 自己去处理修改操作;

3) 委托数据修改操作到额外的数据源上.

下面的代码显示了怎样实现数据的修改:

[C#]

protected void ASPxGridView1_RowUpdating(object sender, DevExpress.Web.Data.ASPxDataUpdatingEventArgs e) {

LinqDataSource1.Update(e.Keys, e.NewValues, e.OldValues);

e.Cancel = true;

ASPxGridView1.CancelEdit();

}

protected void ASPxGridView1_RowInserting(object sender, DevExpress.Web.Data.ASPxDataInsertingEventArgs e) {

LinqDataSource1.Insert(e.NewValues);

e.Cancel = true;

ASPxGridView1.CancelEdit();

}

protected void ASPxGridView1_RowDeleting(object sender, DevExpress.Web.Data.ASPxDataDeletingEventArgs e) {

LinqDataSource1.Delete(e.Keys, e.Values);

e.Cancel = true;

ASPxGridView1.CancelEdit();


 


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn

文章转载自:DevExpress中文网

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
相关产品
DevExpress Universal Subscription

优秀的界面控件开发包,帮助企业构建卓越应用!

DevExpress WPF Subscription

高效MVVM开发模式,WPF界面解决方案首选工具,帮助企业实现酷炫动效界面。

DevExpress Silverlight Controls

高性价比高实用性的Silverlight用户界面控件套包,拥有大量的示例和帮助文档,开发者能够快速上手!

DevExpress WinForms Subscription

为Windows Forms平台创建具有影响力的业务解决方案,高性价比WinForms界面控件套包。

DevExpress DXperience Subscription

高性价比的企业级.NET用户界面套包,助力企业创建卓越应用!

title
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP