父控件:用户控件
子控件:DataList
孙子控件:ImageButton
实现从用户控件传数据到ImageButton。
Page_load方法:
System.Web.UI.WebControls.DataList dataList = (DataList)this.FindControl("DataList1");
ImageButton imageButton = (ImageButton)dataList.FindControl("ImageButton1");
imageButton.ImageUrl = this.ImageUrl;//error
属性:
private string _imageUrl;
public string ImageUrl
{
get{ return _imageUrl; }
set{ _imageUrl = value;}//调试到这里,数据已经过来了。
}
报未将对象的引用设置到对象的实例。 问题点数:10、回复次数:6Top
1 楼Eddie005(♂) №.零零伍 (♂)回复于 2006-11-08 14:13:32 得分 10
问题在这一行:
ImageButton imageButton = (ImageButton)dataList.FindControl("ImageButton1");Top
2 楼SkyIsland(被电脑折磨死了)回复于 2006-11-08 14:15:51 得分 0
请问应该如何写呢?Top
3 楼Eddie005(♂) №.零零伍 (♂)回复于 2006-11-08 14:16:06 得分 0
如果ImageButton1是嵌套在ItemTemplate中,那么必须先指定是哪一行,如
ImageButton imageButton = (ImageButton)dataList.Items[0].FindControl("ImageButton1");
Top
4 楼SkyIsland(被电脑折磨死了)回复于 2006-11-08 14:18:06 得分 0
如果需要循环呢?Top
5 楼Eddie005(♂) №.零零伍 (♂)回复于 2006-11-08 14:21:39 得分 0
foreach(DataListItem row in dataList.Items)
{
ImageButton imageButton = (ImageButton)row.FindControl("ImageButton1");
imageButton.ImageUrl = this.ImageUrl;
}Top
6 楼Eddie005(♂) №.零零伍 (♂)回复于 2006-11-08 14:22:50 得分 0
如果ImageButton是在表头,那就改用
ImageButton img2 = (ImageButton)DataList1.Controls[0].FindControl("ImageButton2");
这类问题,自己多跟踪调试以下就能解决的