无法将类型为“System.Data.Common.DataRecordInternal”的对象强制转换为类型“System.Data.DataRowView”

发生这个错误是因为绑定到Repeater的数据源类型的差异。

由于Repeater的DataSource属性可以接受任何System.Collections.IEnumerable 对象,如用于访问数据库的 System.Data.DataViewSystem.Collections.ArrayListSystem.Collections.Hashtable、数组或 IListSource 对象,所以在操作DataItem的转型时,前提是要弄清楚数据源的类型。

如果是把DataTable.Defaultview作为数据源,那么DataItem转型的类型就是DataRowView;

如果是吧DataReader作为数据源,那么DataItem转型的类型就是System.Data.Common.DbDataRecord。

这种转型通常发生在Repeater的DataItemBound处理事件中。

参考网址:

http://msdn.microsoft.com/zh-cn/library/system.web.ui.webcontrols.repeater.datasource.aspx Repeater.DataSource属性

http://msdn.microsoft.com/zh-cn/library/system.data.datatable.defaultview(VS.80).aspx DataTable.DefaultView属性

http://forums.asp.net/t/1187140.aspx DataRecordInternal转型

http://zhidao.baidu.com/question/179862651.html 百度贴吧的提问

本文首发:剑锋博客 尊重作者,请保留链接。

分享到: 更多

给我留言(您的留言,是对我最好的鼓励!

公告栏

  • 姓名:林剑锋(不见不散)
  • 来自:中国-广州
  • 简介:潮汕人,出生于广东揭西。醉心于Web开发8年,挑战了一年整体策划和网站运营。目前就职于平成混媒IT部。
  • Email/QQ:admin@ljf.cn

QQ群:设计学院 68075618,网站设计师 9908776

统计

文章:335篇
评论:163条 (2条Spam)
相册:1个 (120张图片)
主题:Nagrand新主题

www.ljf.cn网站PR查询