2012-04-02 11 views
0

_dynamicMaterialsを空にするか、viewstateをクリアするにはどうすればよいですか?動的な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を追跡する必要があるかどうかは明らかではないですが、あなたが最も簡単な解決策は、コンテナにfalseに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);  
関連する問題