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“。”为什么中继器返回DataRowView而不是DataRow?
DataRow是DataTable的元素,但为什么e.Item.DataItem成为DataRowView?
任何人都可以找到提到这一点的MSDN文档?
我不知道为什么事情正在做它做的事,也许是因为中继器产生'DataRowView'对象。显然,使用'var row =((DataRowView)e.Item.DataItem).Row;'会解决这个问题。 – dasblinkenlight
不知道为什么你会得到DataRowView - 这是DataRow的自定义版本,但你可以将它作为DataRow使用 - https://stackoverflow.com/questions/17089147/a-way-to-get-a-datarow -from-datarowview –