2012-04-02 90 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 – 2012-04-02 21:14:46

+0

ViewState.clear();不起作用。 – 2012-04-02 21:23:52

回答

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);