2011-02-08 96 views
0

我试图使用重复没有绑定到数据源,这可能吗?ASP.net简单的中继器问题

   <asp:Repeater runat="server" ID="rptPageNav"> 
        <ItemTemplate> 
         <asp:HyperLink runat="server" CssClass="pageLink" ID="pageLink">#</asp:HyperLink> 
        </ItemTemplate> 
       </asp:Repeater> 

然后在我的代码中,我想通过为每个可用链接添加中继器项模板来循环。

  for (int i = 0; i < thisTemplate.specification.pagination; i++) 
      { 

      } 

所以,最终的结果应该是这样的:

   <a class="pageLink" href="#">1</a> 
       <a class="pageLink" href="#">2</a> 
       <a class="pageLink" href="#">3</a> 
       <a class="pageLink" href="#">4</a> 

回答

2

另外,如果你只想要一个简单的链接,你不需要中继IMO你可以有简单的面板则动态创建的链接:

for (int i = 1; i < 5; i++) { 
    HyperLink link = new HyperLink(); 
    link.CssClass = "pageLink"; 
    link.NavigateUrl = "#"; 
    link.Text = i.ToString(); 
    MyPanel.Controls.Add(link); 
} 
+0

+1同意,如果OP想要添加的链接在一个for循环,确实中继无济于事目的和你的代码更容易实现。 – Bazzz 2011-02-08 11:42:58

1

创建整数数组取决于你需要什么,并结合,为您的中继器,使用值作为文本超链接。

1

不,您必须将Repeater绑定到某种数据源。尝试使用@Paddy建议的整数数组。

顺便提一下,您需要修改<ItemTemplate>标记中的标记,以使超链接显示为一个在另一个之上,如示例中所示。

0

MSDN定义asp:Repeater作为

一个数据绑定列表控件,允许 自定义布局,方法是重复指定的 模板,该列表在 列表中显示。

这意味着我们必须将其绑定到数据源。你为什么不尝试和implemt像这样

标记

<asp:Repeater runat="server" ID="rptPageNav"> 
    <ItemTemplate> 
     <asp:HyperLink ID="pageLink" runat="server" CssClass="pageLink" NavigateUrl='<%# Eval("Link") %>'><%# Eval("Title") %></asp:HyperLink> 
    </ItemTemplate> 
</asp:Repeater> 

代码

public partial class Repeater : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     if (!IsPostBack) 
     { 
      List<URL> urls = new List<URL>() 
      { 
       new URL(){ Link = "http://www.google.com", Title = "Google"}, 
       new URL(){ Link = "http://www.yahoo.com", Title = "Yahoo"} 
      }; 
      rptPageNav.DataSource = urls; 
      rptPageNav.DataBind(); 
     } 
    } 
} 

public class URL 
{ 
    public string Link { get; set; } 
    public string Title { get; set; } 
}