【ASP.NET AJAX】RadGrid Update 方式研究
应用场景
采用 RadGrid 绑定 EntityDataSource,在 RadGrid 行内编辑,实现对数据库的更新。
使用 EntityDataSource 事件
- 使用 EntityDataSource 的 Updating 事件,在这个事件通过 e.Entity 可获取修改后的数据对象,从而进行数据库的更新操作。
- 优点:实现简单,节省代码。
- 缺点:无法获取修改之前的旧数据,且无法得知修改了哪些数据。
使用 RadGrid 事件
- 使用 RadGrid 的 UpdateCommand 事件。
- 获取被编辑项目:
GridEditableItem item = e.Item as GridEditableItem; - 可获取 Hashtable 类型的修改前旧数据:
item.SavedOldValues - 可获取 Hashtable 类型的修改后新数据:
Hashtable ht = new Hashtable();
item.ExtractValues(ht); - 可把新数据赋值给实体对象:
item.UpdateValues(objectToUpdate); - 优点:可访问到详细的更新操作相关的数据,功能更强大。
- 缺点:
新旧数据集的类型是 Hashtable,其中的数据都是 string 类型,需要进行转换才能使用;
item.UpdateValues 方法虽然可以直接给对象赋值,免去了类型转换的代码,但是造成了对 Telerik 程序集的耦合。
字符串类型转换
以下的代码可以将字符串转换为绝大多数的类型:
private object Convert(Type t, string text) { return TypeDescriptor.GetConverter(t).ConvertFromInvariantString(text); } private T Convert<T>(string text) { T t = (T)TypeDescriptor.GetConverter(typeof(T)).ConvertFromInvariantString(text); return t; }
posted on 2013-09-12 20:07 CsharpStyle 阅读(238) 评论(0) 编辑 收藏 举报