在Repeater的<ItemTemplate>定义image控件ID="image1"时
并定义了protected System.Web.UI.WebControls.Image image1;
在page_load绑定image1.Attributes["onClick"]="test()";
test()是js函数
运行时提示:未将对象引用设置到对象的实例
-----------------------------------------------
当在Repeater以外,定义image控件时,
却没有问题,能正常调用test()
---------------------------------------------
请问在Repeater下要如何定义image1?????
或者有没有其它的方法???
非常感谢!!!!

解决方案 »

  1.   

    不懂,关注ing...
    顺便帮你顶
      

  2.   

    记不清楚了,不过就像楼上说的,在repeater 的itemdatabound 事件(似乎是这样写的)

     ((Image) e.Item.FindControl("img的名称")).Attributes["onClick"]="test()";
      

  3.   

    charles_y(难得糊涂) 
    我试了这个不行
    谢谢,还有没有其它方法的
      

  4.   

    Private Sub DataGrid1_ItemCreated(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles DataGrid1.ItemCreated
            Select Case e.Item.ItemType
                Case ListItemType.Item, ListItemType.AlternatingItem, ListItemType.EditItem
                    Dim myDeleteButton As ImageButton
                    myDeleteButton = e.Item.FindControl("ImageButton1")
                    myDeleteButton.Attributes.Add("onclick", "return confirm('您确定要把该书从收藏夹中删除吗?');")
            End Select
    改一下应该没问题了  repeater 和 datagrid差不多
      

  5.   

    问题在哪儿?
    用Attribute.Add 可以吗?
      

  6.   

    问题就是
    所定义的控件不能加.Attribute方法
      

  7.   

    我认为问题出在protected System.Web.UI.WebControls.Image image1这里。
    定义了这个控件是没用的,还是把实际Repeater中的控件赋给image1。楼上有兄弟已经给出了源码,确实是只要相应的改动一下就行了:
    ==========================================================
    Private Sub DataGrid1_ItemCreated(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles DataGrid1.ItemCreated
            Select Case e.Item.ItemType
                Case ListItemType.Item, ListItemType.AlternatingItem, ListItemType.EditItem
                    Dim myDeleteButton As ImageButton
                    myDeleteButton = e.Item.FindControl("ImageButton1")
                    myDeleteButton.Attributes.Add("onclick", "return confirm('您确定要把该书从收藏夹中删除吗?');")
            End Select
    改一下应该没问题了  repeater 和 datagrid差不多==========================================================
      

  8.   

    晕,这样呢  Image theImage=(Image)( e.Item.FindControl("img的名称"));
       theImage.Attributes["onClick"]="test()";
      

  9.   

    给在模板列里的控件加属性不能在page_load事件里
    要在ItemCreated里
    不然会找不到控件
      

  10.   

    charles_y(难得糊涂) 
    提示:属性不明确
      

  11.   

    pageload的时候还没有repeater呢当然找不到模板中的控件
      

  12.   

    晕,这样呢  Image theImage=(Image)( e.Item.FindControl("img的名称"));
       theImage.Attributes["onClick"]="test()"; 回复人: lau_marco(青苹果) ( ) 信誉:100  2005-03-12 17:26:00  得分: 0  
     
     
        charles_y(难得糊涂) 
        提示:属性不明确
    -------------------------------------------------------------------------------------------------
    错误出在哪一步? theImage 得到了吗?把修改后的代码完全的贴出来大家才能帮你  
     
      

  13.   

    public void dg_ItemCreated(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
    {  
    switch( e.Item.ItemType)
    {
    case ListItemType.Item:
    case ListItemType.AlternatingItem:
    case ListItemType.EditItem:
    {   

    ImageButton Image1 =(ImageButton)(e.Item.FindControl("Image1"));
    Image1.Attributes.Add("onload","PhotoChange()");
    Trace.Write("liumigndeg","mingdeng" + Image1.ToString());
    break;
    }
      


    }
    我把它改成Imagebutton就没问题了,但是如果是Image是去说Image引用不明确
      

  14.   

    如果原先Image 可以用,没有理由这儿就不能用是不是由于图像没有指定source ?
    把它放在DataBound 中呢?