带有链接按钮的ASP.net Visual Studio中继器

时间:2012-08-03 09:06:59

标签: c# asp.net visual-studio-2010 repeater linkbutton

在加载页面时,我想通过界面访问名称列表,并为该列表中的每个名称创建链接按钮。同时单击任何链接按钮将导致另一个页面。

我是ASP.net的新手,所以我不确定应该在哪里创建链接按钮。起初我想在.aspx文件中创建它,但转发器如何知道在列表中创建尽可能多的按钮,然后我在页面加载函数中完成它并将名称绑定到按钮。但这不起作用:

 public void Repeater1_ItemDataBound(object sender, EventArgs e)
    {
        LinkButton lb = (LinkButton)this.FindControl("lb");

        IComparisonDataService ds = new ComparisonDataService();
        IList<string> apps = ds.GetApplicationList();
        foreach (var app in apps)
            lb.Text = app;
    }

对于.aspx我只有一个带有链接按钮的转发器对象:

<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
  <link href="Styles/Layout.css" rel="stylesheet" type="text/css" />
</asp:Content>
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
  <div align="center" class="submitButton">
    <asp:Repeater ID="Repeater1" runat="server"  OnItemDataBound="Repeater1_ItemDataBound">
        <ItemTemplate>
            <asp:LinkButton ID="lb" runat="server" />
        </ItemTemplate>
    </asp:Repeater>
       </div>

2 个答案:

答案 0 :(得分:1)

您必须将我认为lb的{​​{1}}控件放入您的Label控件中,然后在您的转发器控件Repeater1上发生一个事件并将您的代码排除在此之外:

OnItemDataBound

修改 你的.aspx应该是这样的:

protected void Page_Load(object sender, EventArgs e)
    {
        List<string> str = new List<string>{"I", "You", "They"};
        Repeater1.DataSource = str;
        Repeater1.DataBind();
    }

    protected void Repeater1_OnItemDataBound(object sender, RepeaterItemEventArgs e)
    {
        if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
        {
            LinkButton lb = (LinkButton)e.Item.FindControl("lb");
            string str = (string) e.Item.DataItem;
            lb.Text = str;
        }

    }

希望这会有所帮助:)

答案 1 :(得分:1)

不要数据绑定到控件列表,数据绑定到实际数据,在这种情况下是存储在变量应用程序中的字符串列表。然后将一个数据绑定表达式添加到模板以设置LinkBut​​ton控件的属性:

<asp:Repeater ID="Repeater1" runat="server">
<ItemTemplate>
<asp:LinkButton ID="LinkButton1" runat="server" Height="200px" Width="150px" BackColor="#33CC33"
    BorderColor="Black" Font-Underline="False" Text='<%# Container.DataItem #>'></asp:LinkButton>
</ItemTemplate>
</asp:Repeater>