无法将带有[]的索引应用于类型为';对象';
本文关键字:应用于 类型 对象 索引 | 更新日期: 2023-09-27 18:26:57
到目前为止,这就是我所拥有的。
protected void CategoryRepeater_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
Object dataItem = e.Item.DataItem;
// code to pull catid out of dataItem
}
以下是在调试中运行后dataItem包含的内容的示例:
dataItem={TextCategory="辐射(释放或污染)",catid=4,TextResult="参考代码下的应急计划和报告332.54(A)",IsReportable=True}
我想把catid从物体里拔出来。我试过选它,但所有选它的尝试都没有成功。我的目标是将这个catid用于嵌套中继器的数据绑定。。像这样的东西:
using (NERAEntities entities = new NERAEntities())
{
var Questions = (from x in entities.Questions
where x.CategoryID == catid
select new { QuestionText = x.Text });
QARepeater.DataSource = Questions;
QARepeater.DataBind();
}
问题是DataItem本身并没有类型(它是一个Anonymous类)。你需要使用这个来代替:
dynamic dataItem = e.Item.DataItem ;
int catId = dataItem.catid ;
显然,如果实际对象没有catId
属性,那么这将在运行时失败。
假设您使用的对象类型为DataItem,请尝试以下操作:
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
DataItem dataItem = (DataItem) e.Item.DataItem;
// code to pull catid out of dataItem
}
也许你可以试试:
protected void CategoryRepeater_ItemDataBound(object sender,
RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item ||
e.Item.ItemType == ListItemType.AlternatingItem)
{
DataRowView row = (DataRowView)e.Item.DataItem;
int? catID = row["catid"] as int;
}
}