1

これがコードです。コンパイルエラーや実行時エラーは表示されません。データバインディングが正常に機能するまで、デバッグも行いました。しかし、Webページに表示されていないコントロールもあります!

Sample.aspx:

    <body>
    <form id="form1" runat="server">
    <asp:PlaceHolder ID="_placeHolder1" runat="server">
    </asp:PlaceHolder>
    </form>
    </body>

Sample.aspx.cs:

     protected void Page_Load(object sender, EventArgs e)
     {
      _placeHolder1.Controls.Add(CreateReapeater());
     }

     private Control CreateReapeater()
     {
        Repeater _repeater1 = new Repeater();
        Stack _stack1 = new Stack();
        for (int i = 0; i < 7; i++)
        {
            _stack1.Push(i);
        }
        _repeater1.DataSource = _stack1;
        _repeater1.DataBind();
        return _repeater1;
    }
4

1 に答える 1

0

実際、リピーターには、gridviewのような組み込みの列構造はありません。したがって、リピーターを動的にバインドする場合は、そのためのアイテムテンプレートも作成する必要があります。

createrepeater関数を以下のように変更する必要があります。

private Control CreateReapeater()
{
    Repeater _repeater1 = new Repeater();
    Stack _stack1 = new Stack();
    for (int i = 0; i < 7; i++)
    {
        _stack1.Push(i);
    }

    _repeater1.DataSource = _stack1;          
    _repeater1.DataBind();

    foreach (RepeaterItem repeatItem in _repeater1.Items)
    {
        int index = repeatItem.ItemIndex;

        RepeaterItem repeaterItem = new RepeaterItem(repeatItem.ItemIndex, ListItemType.Item);
        Label lbl = new Label();

        lbl.Text = "Item No :" + index.ToString() + "<br/>";
        repeatItem.Controls.Add(lbl);

    }



    return _repeater1;
}

これで問題が解決します。

ハッピーコーディング.....

于 2012-08-30T09:39:23.947 に答える