我在一个用户控件中放置了一个GridView,GridView有一个模板列,其中有一个image控件,我想让用户调用这个控件的时候给image
控件的图片地址赋值.代码如下:
<asp:GridView ID="gv" runat="server" AutoGenerateColumns="False" OnRowDataBound="gv_RowDataBound">
    <Columns>
        <asp:BoundField DataField="strdate" />
        <asp:TemplateField>
            <ItemTemplate>
                <asp:Image ID="img1" runat="server" />
                <asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl='<%# Eval("link", "{0}") %>'
                    Text='<%# Eval("title") %>'></asp:HyperLink>
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>cs文件中赋值语句如下:
protected string imageSrc;
    public string ImageSrc
    {
        get
        {
            return imageSrc;
        }
        set
        {
            imageSrc = value;
            ((Image)gv.FindControl("img1")).ImageUrl = imageSrc;
            
        }
    }运行时报错,"未将对象引用设置到对象的实例"
请问这种问题怎么解决.谢谢

解决方案 »

  1.   

                ((Image)gv.FindControl("img1")).ImageUrl = imageSrc; 
    你的Image是模板列里面的啊,是GridView的每一行都有的!
    如果你是想让用户设置当前选中行的Image,就((Image)gv.SelectedRow.FindControl("img1")).ImageUrl = imageSrc;
      

  2.   


    跟一下程序就知道了....
    try
    {
    ((Image)gv.FindControl("img1")).ImageUrl = imageSrc;
    }
    catch(Exception ex)
    {
      MessageBox.Show(ex.message);
    }
      

  3.   

    报错好象是没有找到img1,所以无法赋值,怎样才能找到img1这个控件呢?
      

  4.   

    解决了。在数据绑定时处理
    代码:
    protected void gv_RowDataBound(object sender, GridViewRowEventArgs e)
    {
    GridViewRow gvr = (GridViewRow)e.Row;
    ((Image)gvr.FindControl("img1")).ImageUrl = imageSrc;
    }