2012-04-02 3 views
0

Как я могу сделать _dynamicMaterials пустым или очистить область просмотра?Очистить динамический контейнер UserControl

Когда пользователь нажимает кнопку «Отправить», я хочу сбросить контейнер, чтобы все текстовые поля были пустыми.

Любые идеи, как я могу это исправить?

private materials[] _dynamicMaterials; // Container for dynamically added UserControl "materials.ascx" 

    protected void Page_PreInit(object sender, EventArgs e) 
    { 
     GetPostBackControl(Page); 
    } 


    protected override void OnInit(EventArgs e) 
    { 
     base.OnInit(e); 
     if (!this.DesignMode) 
     { 
      int count = MySession.Current.UserControlCount; 
      _dynamicMaterials = new materials[count]; 

      for (int i = 0; i < count; i += 1) 
      { 
       Control newcont = LoadControl("materials.ascx"); 
       newcont.ID = "materialControl" + i.ToString(); 
       myPlaceHolder1.Controls.Add(newcont); 
       _dynamicMaterials[i] = (materials)newcont; 
      } 
     } 
    } 
+0

Вы пробовали 'ViewState.Clear();'? http://msdn.microsoft.com/en-us/library/system.web.ui.statebag.clear.aspx –

+0

ViewState.clear(); не работает. –

ответ

0

Не ясно даже нужно ли вам отслеживать ViewState для этого контейнера, но если вы не самое простое решение было бы установить EnableViewState ложь на контейнере:

<asp:Panel ID="pnlContent" runat="server" EnableViewState="false"> 
    <!-- your controls here --> 
</asp:Panel> 

Если вы вам нужно ViewState, и вы хотите очистить его только на отправке, вы можете позвонить ViewState.Clear(), как другие предложили в комментариях.

Наконец, вы можете также пройти и очистить поля программно на отправить:

pnlContent.Controls.OfType<TextBox>().ToList().ForEach(t => t.Text = string.Empty);  
Смежные вопросы