我需要帮助构建动态网址。 我在GridView上有一个工作的asp:HyperLinkField,但你不能在reater上使用它。我只能使用asp:HyperLink。
这是工作中的一个:
<asp:HyperLinkField Text="Select" DataNavigateUrlFormatString="~/Products/Details?ProductID={0}" DataNavigateUrlFields="ProductID" />
而这不是
<asp:HyperLink runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "ProductName") %>' NavigateUrl='~/Products/Details?ProductID=BK100' />
我在asp:Repeater中使用它。谢谢。
答案 0 :(得分:0)
跳跃帮助
<asp:HyperLink ID="HyperLink1" runat=server NavigateUrl='<%# DataBinder.Eval(Container.DataItem, "YourField", "Desc.aspx?query={0}") %>'> <%# DataBinder.Eval(Container.DataItem, "YourFieldForText") %>' </asp:HyperLink>
答案 1 :(得分:0)
如果您不介意使用C#代码进行绑定..
<强>的.aspx 强>
<h2>Grid View</h2>
<br />
<asp:GridView ID="gv" runat="server" AutoGenerateColumns="false">
<Columns>
<asp:HyperLinkField HeaderText="Link" Text="Select"
DataNavigateUrlFormatString="~/Products/Details?ProductID={0}"
DataNavigateUrlFields="ProductID" />
</Columns>
</asp:GridView>
<br />
<br />
<h2>Repeater</h2>
<br />
<asp:Repeater ID="r" runat="server" OnItemDataBound="r_ItemDataBound">
<HeaderTemplate>
<table style="padding: 0px; border-spacing: 0px;">
<tr>
<td style="border: 1px solid #ccc; text-align: center;">
<asp:Label ID="lblTitle" runat="server" Text="Link"
Font-Bold="true"></asp:Label>
</td>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td style="border: 1px solid #ccc; border-top: 0px;">
<asp:Label ID="lblHidden" runat="server"
Text='<%# Eval("ProductID") %>' Visible="false"></asp:Label>
<asp:HyperLink ID="hl" runat="server"
Text='<%# Eval("ProductName") %>'></asp:HyperLink>
</td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
<强>的.cs 强>
protected void Page_Load(object sender, EventArgs e)
{
// Check
if (!IsPostBack)
{
// Variable
string[] productName = { "SharePoint", "CRM", "SiteCore", "Silver Light" };
DataTable dt = new DataTable();
dt.Columns.Add("ProductID");
dt.Columns.Add("ProductName");
for (int i = 0; i < productName.Length; i++)
dt.Rows.Add((i + 1) + "", productName[i]);
// Bind Grid View
gv.DataSource = dt;
gv.DataBind();
// Bind Repeater
r.DataSource = dt;
r.DataBind();
}
}
protected void r_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
// Variable
string url = "/Products/Details?ProductID={0}";
// Find Control
HyperLink hl = e.Item.FindControl("hl") as HyperLink;
Label lblHidden = e.Item.FindControl("lblHidden") as Label;
// Check
if (hl != null && lblHidden != null)
{
// Set Navigation Url
url = string.Format(url, lblHidden.Text.Trim());
hl.NavigateUrl = url;
}
}
}
答案 2 :(得分:0)
你可以试试这个
<asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl='<%# "~/Products/Details?ProductID="+Eval("ProductID") %>'> <%# Eval("ProductName") %> </asp:HyperLink>