ASP.NET嵌套数据绑定 - 访问父数据项

时间:2013-12-21 11:03:01

标签: asp.net data-binding eval repeater formview

我有一个formview,在其中的itemtemplate转发器。我需要从转发器内的formview访问dataitem。

像这样的东西

<asp:FormView runat="server" ID="EvaForm" ItemType="Item1" DataKeyNames="ProfileId" EnableViewState="true">
  <ItemTemplate>
   <asp:Repeater runat="server" ID="ProfileImages" ItemType="ProfileImage">
    <ItemTemplate>
     <a href="<%# LinkHelpers.GetProfilePath(Item.ProfileId, >>>>ITEM1 HERE<<<<.CreateDate) & Item.ImagePath%>" onclick="return false;">

EVAL的示例以及ItemType示例将非常受欢迎。 所有这些都在用户控件中,不要以为这会有所不同。

提前致谢

1 个答案:

答案 0 :(得分:3)

试试这段代码:

<ItemTemplate>
    <a href="<%# LinkHelpers.GetProfilePath(Item.ProfileId, DataBinder.Eval(Container.NamingContainer.NamingContainer, "DataItem.CreateDate").ToString()) + Item.ImagePath %>" onclick="return false;">
</ItemTemplate>

或者,您可以使用服务器控件显示超链接并在代码隐藏中设置NavigateUrl属性:

<asp:Repeater runat="server" ID="ProfileImages" ItemType="ProfileImage" OnItemDataBound="ProfileImages_ItemDataBound">
    <ItemTemplate>
        <asp:HyperLink runat="server" ID="ProfileLink" OnClientClick="return false;" />
    </ItemTemplate>
<asp:Repeater>

代码隐藏:

protected void ProfileImages_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
    var profileImage = (ProfileImage) e.Item.DataItem;

    ((HyperLink) e.Item.FindControl("ProfileLink")).NavigateUrl = LinkHelpers.GetProfilePath(profileImage.ProfileId, ((Item1) EvaForm.DataItem).CreateDate.ToString()) + profileImage.ImagePath;
}