2

私は DataBind オーバーライドで WebUserControl を持っています:

public partial class WebUserControl1 : System.Web.UI.UserControl
{
    public object DataSource { get; set; }

    public string Text { get; set; }

    protected void Page_Load(object sender, EventArgs e)
    {
    }

    public override void DataBind()
    {
        // *** there when called, properties are null, why? ***
        repeater2.DataSource = DataSource;
        repeater2.DataBind();
    }
}

このコントロールは、宣言的な制限付きプロパティを持つリピーターにあります。

<asp:Repeater ID="repeater" runat="server">
    <ItemTemplate>
        <WebUserControl1 runat="server" DataSource='<%# DataBinder.Eval(Container.DataItem, "levels") %>' Text='<%# DataBinder.Eval(Container.DataItem, "Text") %>' />
    </ItemTemplate>
</asp:Repeater>

今、リピーターで DataBind() を呼び出すと:

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        ... data query
        repeater.DataSource = items;
        repeater.DataBind();
    }
}

オーバーライドされたコントロールの DataBind() メソッドで、プロパティ DataSource と Text が正しく設定されていません。それらは null です。なぜですか?

4

1 に答える 1