2

ページの読み込み時に、インターフェイスを介して名前のリストにアクセスし、そのリスト内の各名前のリンク ボタンを作成したいと考えています。また、リンク ボタンをクリックすると、別のページに移動します。

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>

4

2 に答える 2

1

lb私が想定しているコントロールLabelをあなたのコントロールに入れてからRepeater1、リピーターコントロールでイベントを作成しOnItemDataBound、コードをそこに置いてこれを除外する必要があります:

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

    }

編集: .aspx は次のようになります。

<asp:Repeater ID="Repeater1" runat="server" OnItemDataBound="Repeater1_ItemDataBound">
     <%-- here you can also add some <HeaderTemplate> if you need a headers --%>
     <ItemTemplate>
         <%-- here you can put your controls --%>
         <asp:LinkButton ID="lb" runat="server"/>
     </ItemTemplate>
</asp:Repeater>

お役に立てれば :)

于 2012-08-03T09:13:36.950 に答える
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>
于 2012-08-03T10:02:17.060 に答える