【发布时间】:2017-10-06 01:26:49
【问题描述】:
protected void Page_Load(object sender, System.EventArgs e)
{
DataTable dt = GetDataTable("select * from AccountTypes");
repeater.DataSource = dt;
repeater.DataBind();
}
private void repeater_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType != ListItemType.Item) {
return;
}
var row = (DataRow)e.Item.DataItem;
}
它抛出异常“无法将'System.Data.DataRowView'类型的对象转换为'System.Data.DataRow'类型。”
DataRow是DataTable的一个元素,为什么e.Item.DataItem会变成DataRowView呢?
谁能找到提到这个的 MSDN 文档?
【问题讨论】:
-
我不确定这东西为什么会这样,也许是因为中继器产生了
DataRowView对象。显然,使用var row = ((DataRowView)e.Item.DataItem).Row;可以解决这个问题。 -
不确定为什么要获得 DataRowView - 这是 DataRow 的自定义版本,但您可以像这样将其用作 DataRow - stackoverflow.com/questions/17089147/…