在创作的 Web 控件中的重写方法 OnInit 中设置断点时,转发器的子控件将丢失视图状态中的数据



当我第一次点击按钮"Button1"后,重复器的子控件将在视图状态中丢失数据。我在this.ChildControlsCreated上加了一块表。这总是对的。该变量最初应该为false。

The test code:
    /////////////////////CustomRepeater.cs/////////////////////
    public class CustomRepeater : Repeater
    {
        protected override void OnInit(EventArgs e)
        {
            base.OnInit(e); **// Sets a breakpoint here**
        }
    }
    /////////////////////TestCustomRepeater.aspx/////////////////////
    <table>
    <cc1:CustomRepeater id="Control1" runat="server">
    <ItemTemplate>
    <tr><td><%# DataBinder.Eval(Container.DataItem) %></td></tr>
    </ItemTemplate>
    </cc1:CustomRepeater>
    </table>
    <asp:Button id="Button1" runat="server" OnClick="Button1_OnClick"></asp:Button>
    /////////////////////TestCustomRepeater.aspx.cs/////////////////////
    Page_load()
    {
        if (!IsPostBack)
        {
             ArrayList dataSource = new ArrayList();
             dataSource.Add("a");
             dataSource.Add("b");
             this.Control1.DataSource = dataSource;
             this.Control1.DataBind();
        }
    }
    protect void Button1_OnClick(object sender, EventArgs e)
    {
        // Nothing to do, just to trigger a POSTBACK
    }

您需要在回发后重新绑定Repeater。可以在方法Button1_OnClick

中进行

最新更新