ASP.net简单的转发器问题

时间:2011-02-08 11:25:46

标签: c# asp.net repeater

我正在尝试使用重复而不将其绑定到数据源,这可能吗?

                <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>

4 个答案:

答案 0 :(得分:2)

或者,如果您只想要单个简单链接,则不需要使用Repeater IMO,您可以使用简单的Panel,然后即时创建链接:

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

答案 1 :(得分:1)

创建一个直到您需要的整数数组,并将其绑定到转发器,使用该值作为超链接的文本。

答案 2 :(得分:1)

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

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

答案 3 :(得分:0)

MSDN将asp:Repeater定义为

  

允许的数据绑定列表控件   通过重复指定的自定义布局   显示的每个项目的模板   清单。

这实质上意味着我们必须将它绑定到数据源。为什么不尝试和实现这样的东西

标记

<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; }
}