我想为嵌套的Repeater设置一个ItemDataBound事件。
我为ItemDataBound EventHandler编写了这个代码。
if (e.Item.ItemType == ListItemType.AlternatingItem ||
e.Item.ItemType == ListItemType.Item)
{
Tour dataitem = (Tour)(e.Item.DataItem);
ObjectDataSource ObjectDataSource1 = (ObjectDataSource)e.Item.FindControl("ObjectDataSource1");
ObjectDataSource1.SelectParameters["Id"].DefaultValue = dataitem.TourId.ToString();
}这一行似乎工作正常。
Tour dataitem = (Tour)(e.Item.DataItem);我的问题从这里开始:我有一个例外
Object reference not set to an instance of an object.
换行
ObjectDataSource1.SelectParameters["Id"].DefaultValue = dataitem.TourId.ToString();但问题就在这条线上
ObjectDataSource ObjectDataSource1 = (ObjectDataSource)e.Item.FindControl("ObjectDataSource1");我要知道为什么需要这条线。
如果我省略了这一个,它的剂量还可以正常工作,但没有错误。因为它知道我的对象数据源控件为什么需要它?
我需要一些关于这一行和如何修复异常的解释。我还没有用“试接”。
我按照这篇文章对以下内容进行编码:
发布于 2016-03-26 07:40:20
为了从嵌套的Repeater的ObjectDataSource1事件中访问“ItemDataBound”,需要在这个Repeater中嵌套ObjectDataSource。
Object reference not set to an instance of an object.的原因是,当调用(ObjectDataSource)e.Item.FindControl("ObjectDataSource1")时,在这个Repeater中找不到"ObjectDataSource1“。
发布于 2016-03-26 03:00:02
Tour dataitem = (Tour)(e.Item.DataItem);以上一行应是
Tour dataitem = (Tour)(((System.Data.DataRowView)e.Item.DataItem)).Row;此外,您还需要检查数据项是否为空。
if(dataitem != null)
ObjectDataSource1.SelectParameters["Id"].DefaultValue = dataitem.TourId.ToString();您需要这一行来获得对绑定到中继器的前端代码中使用的对象数据源的引用,以便您可以设置TourId对象。
ObjectDataSource ObjectDataSource1 = (ObjectDataSource)e.Item.FindControl("ObjectDataSource1");https://stackoverflow.com/questions/36228688
复制相似问题