[英]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.