Дочерние элементы управления Repeater будут терять данные в ViewState при установке точки останова в переопределенном методе OnInit в созданном веб-элементе управления. - PullRequest
1 голос
/ 22 декабря 2011

Когда я нажимаю кнопку «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 голосов
/ 22 декабря 2011

Вам нужно будет повторно привязать повторитель после обратной передачи. Вы можете сделать это внутри метода Button1_OnClick

...