当在创作的Web控件中的覆盖方法OnInit中设置断点时,Repeater的子控件将丢失ViewState中的数据

时间:2011-12-22 00:40:19

标签: viewstate

当我第一次点击“Button1”按钮后,转发器的子控件将丢失视图状态中的数据。我在this.ChildControlsCreated上添加了一只手表。这总是如此。这个变量最初应该是假的。

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
    }

1 个答案:

答案 0 :(得分:0)

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

中完成