在处理数据绑定转发器时,在某些情况下向标签添加超链接
Adding hyperlinks to labels in certain cases, when dealing with databound repeater
听起来有点乱,但基本上我有一个数据绑定中继器。在 ASP 方面,我有这个:
<asp:Label ID="Label2" runat="server" Text='<%#Eval("uMessage") %>'></asp:Label>
我对 4 个不同的数据集使用相同的模板,其中 2 个应该是超链接,而另外 2 个则不是。所以,我猜你必须在代码隐藏中以编程方式添加超链接?有人做过这样的事吗?
是的,在 DataItem 绑定的代码隐藏中是可能的
if (e.Row.RowType == DataControlRowType.DataRow)
{
Label lbl = (Label)e.Row.FindControl("Label2");
if (lbl.Text == "your condition")
{
HyperLink yourLink = (HyperLink)e.Row.FindControl("yourID");
yourLink.enabled = false;
}
}
没有各种代码隐藏的最简单方法,因此代码碎片更少,我会说你需要一个属性,它是根据你在数据绑定之前的条件设置的。
protected bool LinkVisible { get; set; }
那你就这样做:
<asp:Label ID="Label2" runat="server" Text='<%#Eval("uMessage") %>' Visible="<%# !LinkVisible %>"></asp:Label>
<asp:HyperLink ID="Link" runat="server" Visible="<%# LinkVisible %>" ><%#Eval("uMessage") %></asp:HyperLink>
这会设置标签或超链接的可见性。 Visible false 意味着它甚至不会被渲染。在您的标记中,您可以看到会有一个标签或一个超链接,并且后面的代码不会弹出任何特殊内容。
您不需要添加 属性 LinkVisible,但也可以在那里设置条件。
听起来有点乱,但基本上我有一个数据绑定中继器。在 ASP 方面,我有这个:
<asp:Label ID="Label2" runat="server" Text='<%#Eval("uMessage") %>'></asp:Label>
我对 4 个不同的数据集使用相同的模板,其中 2 个应该是超链接,而另外 2 个则不是。所以,我猜你必须在代码隐藏中以编程方式添加超链接?有人做过这样的事吗?
是的,在 DataItem 绑定的代码隐藏中是可能的
if (e.Row.RowType == DataControlRowType.DataRow)
{
Label lbl = (Label)e.Row.FindControl("Label2");
if (lbl.Text == "your condition")
{
HyperLink yourLink = (HyperLink)e.Row.FindControl("yourID");
yourLink.enabled = false;
}
}
没有各种代码隐藏的最简单方法,因此代码碎片更少,我会说你需要一个属性,它是根据你在数据绑定之前的条件设置的。
protected bool LinkVisible { get; set; }
那你就这样做:
<asp:Label ID="Label2" runat="server" Text='<%#Eval("uMessage") %>' Visible="<%# !LinkVisible %>"></asp:Label>
<asp:HyperLink ID="Link" runat="server" Visible="<%# LinkVisible %>" ><%#Eval("uMessage") %></asp:HyperLink>
这会设置标签或超链接的可见性。 Visible false 意味着它甚至不会被渲染。在您的标记中,您可以看到会有一个标签或一个超链接,并且后面的代码不会弹出任何特殊内容。
您不需要添加 属性 LinkVisible,但也可以在那里设置条件。