[英]Clearing Viewstate of Dynamically Created Controls to Add New Controls
我目前有一個靜態下拉列表,其項從Page Load上的數據庫綁定。 根據此下拉列表中的選擇,我將在ID為“ CustomControl1”,“ CustomControl2”等的表中動態生成一組控件。我需要做的是使用下拉列表中的每個選擇不同控件類型的一組唯一控件,但是它們都有相同的ID(基於它們的生成順序)。 因此,當我嘗試生成一組新的控件時,出現此錯誤:
無法加載viewstate。 加載視圖狀態的控制樹必須與在上一個請求期間用於保存視圖狀態的控制樹匹配。 例如,當動態添加控件時,在回發期間添加的控件必須與在初始請求期間添加的控件的類型和位置匹配。
因此,在頁面加載中,我有兩種方法,一種基於xml生成控件,而另一種則創建驗證控件,如下所示:
if (xml != "" && externalProperties.Rows.Count == 0)
{
LoadExternalProperties(xml);
ValidateExternalProperties(xml);
}
當我進行初始選擇時,我能夠正確生成控件,而當我進行第二選擇時,由於視圖狀態對於不同的控件類型不匹配,因此無法生成控件。
因此,我認為我需要做的是清除視圖狀態。 我嘗試了以下方法:
將viewstate設置為null(在Page_Init和In之外嘗試):
ViewState["CustomControl1"] = null;
清除行表:
externalProperties.Rows.Clear();
清除控件表:
externalProperties.Controls.Clear();
在加載控件之前和之后切換EnableViewState:
externalProperties.EnableViewState = false;
LoadExternalProperties(xml);
externalProperties.EnableViewState = true;
我目前正在跟蹤先前選擇的索引,以便確定何時必須清除視圖狀態。
您應該使dropdownlist控件的EnableViewState = false 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.