如何使用headertemplate访问'HyperlinkID1'控件? 我喜欢改变下面的值,但我无法访问控件,因为它一直告诉“当前上下文中不存在名称'HyperlinkID1'”
if (!IsPostBack)
{
HyperlinkID1.ImageUrl = "asc.jpg";//change image
}
else
{
HyperlinkID1.ImageUrl = "asc.jpg";//change image
}
<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<script language="C#" runat="server">
public class PositionData
{
private string name;
private string ticker;
public PositionData(string name, string ticker)
{
this.name = name;
this.ticker = ticker;
}
public string Name
{
get
{
return name;
}
}
public string Ticker
{
get
{
return ticker;
}
}
}
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
HyperlinkID1.ImageUrl = "asc.jpg";//change image
}
else
{
HyperlinkID1.ImageUrl = "asc.jpg";//change image
}
if (!IsPostBack)
{
ArrayList values = new ArrayList();
values.Add(new PositionData("Microsoft", "Msft"));
values.Add(new PositionData("Intel", "Intc"));
values.Add(new PositionData("Dell", "Dell"));
Repeater1.DataSource = values;
Repeater1.DataBind();
}
}
</script>
<body>
<form runat="server">
<b>Repeater1:</b>
<asp:Repeater ID="Repeater1" runat="server">
<HeaderTemplate>
<table border="1">
<tr>
<td><b>Company</b>
<asp:HyperLink ID="HyperlinkID1" runat="server" ImageUrl="desc.jpg" NavigateUrl="nextpage.aspx">HyperLink</asp:HyperLink></td>
<td><b>Symbol</b></td>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td><%# DataBinder.Eval(Container.DataItem, "Name") %> </td>
<td><%# DataBinder.Eval(Container.DataItem, "Ticker") %> </td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
</form>
</body>
</html>
答案 0 :(得分:1)
控件不存在。您需要声明一个链接到转发器的OnItemCreated方法,并在此处为控件名称执行FindControl,并在此设置值。
ETA - 回应评论。
<asp:Repeater OnItemCreated="rptItemCreated" >
.
.
.
在代码中,您需要定义定义的新方法:
protected void rptItemCreated(Object Sender, RepeaterItemEventArgs e)
{
if(e.Item.ItemType==ListItemType.Header)
{
HtmlAnchor HyperLinkID1=(HtmlAnchor)e.Item.FindControl("HyperLinkID1");
HyperlinkID1.ImageUrl = IsPostBack?"asc.jpg":"asc.jpg;
}
}
请注意,这是从内存中输入的,因此可能需要进行一些调整。此外,我已将您所拥有的代码放入一个缩略图中,这与格式相同但更简洁。