发生这个错误是因为绑定到Repeater的数据源类型的差异。
由于Repeater的DataSource属性可以接受任何System.Collections.IEnumerable 对象,如用于访问数据库的 System.Data.DataView、System.Collections.ArrayList、System.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 百度贴吧的提问
本文首发:剑锋博客 尊重作者,请保留链接。