【问题标题】:Accessing asp.net controls of datalist in codebehind在代码隐藏中访问 datalist 的 asp.net 控件
【发布时间】:2012-06-29 17:15:40
【问题描述】:

我正在尝试在我的代码后面访问一个 asp Image 标签,以便在没有其他图像存在时显示默认图像。我遇到的问题是我得到一个“对象引用未设置为对象的实例”。错误信息。 aspx 页面

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="MemberProfileList.ascx.cs"
Inherits="UserControls_MemberProfileList" %>
<%--<asp:GridView ID="GridView1" runat="server">
</asp:GridView>--%>
<asp:DataList ID="profilelist" runat="server" RepeatColumns="2" OnDataBinding="profilelist_DataBound" >
<ItemTemplate>
    <asp:Image ID="ProfileImage"  runat="server" ImageUrl='<%# System.String.Format("/Images/{0}", DataBinder.Eval(Container.DataItem, "ProfilePictureThumb"))%>'  />
    <asp:Hyperlink runat="server" NavigateUrl='<%#Link.ToSpecificMemberProfile(Eval("Username").ToString()) %>' Text='<%#HttpUtility.HtmlDecode(Eval("Username").ToString()) %>' />
</ItemTemplate>
</asp:DataList>

后面代码中的方法

profilelist.DataSource = myProfileList;
    profilelist.DataBind();
    Image ProfileImage = profilelist.FindControl("ProfileImage") as Image;
    string profilepic = ProfileImage.ImageUrl.ToString();
    if (profilepic == null)
    {
        ProfileImage.Visible = false;
    }

感谢任何帮助

【问题讨论】:

    标签: c# asp.net code-behind datalist


    【解决方案1】:

    图像将在一个项目中,而不是在整个列表中。 在 ItemDataBound 事件中实现您的逻辑。

    看看这个:http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.datalist.itemdatabound.aspx

    问候

    【讨论】:

      【解决方案2】:

      //如果您试图根据天气隐藏它,则 ProfilePictureThumb 为 Null,方法是:**

          <asp:Image ID="ProfileImage" Visible='<%# String.IsNullOrEmpty(Eval("ProfilePictureThumb").ToString())? false:true %>'  runat="server"   ImageUrl='<%# System.String.Format("/Images/{0}", DataBinder.Eval(Container.DataItem, "ProfilePictureThumb"))%>'  />
      
      //if you want to make it display a default image based on weather or not ProfilePicture is null:
      
          ImageUrl='<%# String.IsNullOrEmpty(Eval("ProfilePictureThumb").ToString())? System.String.Format("/Images/{0}", "defaultimage.jpg"):System.String.Format("/Images/{0}", DataBinder.Eval(Container.DataItem, "ProfilePictureThumb"))%>'
      
      //that way you don't need code behind. 
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-07-10
        • 1970-01-01
        • 2017-06-27
        • 1970-01-01
        • 1970-01-01
        • 2013-03-06
        • 1970-01-01
        相关资源
        最近更新 更多