我有一个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示例将非常受欢迎。 所有这些都在用户控件中,不要以为这会有所不同。
提前致谢
答案 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;
}