簡體   English   中英

清除動態UserControl容器

[英]Clear dynamic UserControl container

如何使_dynamicMaterials為空或清除viewstate?

當用戶單擊“提交”時,我想重置容器,以便所有文本框均為空。

有什么想法我可以解決嗎?

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

尚不清楚您是否甚至需要跟蹤該容器的ViewState,但是假設您沒有最簡單的解決方案,那就是將容器上的EnableViewState設置為false:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM