我有一個CheckBoxList,其中包含嚮導步驟上的員工名稱。選擇員工並更改主動步驟後,將調用Wizard1_ActiveStepChanged函數,併爲所選的每個員工動態創建DropDownList Array。每個DropDownList指定僱員的條件。 DropDownList已正確創建。當用戶單擊提交時,DropDownList數組將被刪除,並且不能從數組中提取選定的值。如何在PostBack(按鈕單擊)後從動態創建的DropDownList Array中獲取選定值
我知道這是PostBack的問題,可以用ViewState修復,但我想弄清楚我能做些什麼來修復它。 ViewState爲複選框列表和DropDownList啓用。
這是我在我的System.Web.UI.Page類的主體
private int empcount;
private DropDownList[] DDL_Emp
{
get
{
return (DropDownList[])ViewState["DDL_Emp"];
}
set
{
ViewState["DDL_Emp"] = value;
}
}
相關的代碼:
protected void Wizard1_ActiveStepChanged(object sender, EventArgs e)
{
if (Request.QueryString["type"] == "Accident" && BulletedList1.Items.Count > 0)
{
this.empcount = 0;
for (int i = 0; i < CBL_EmpInvolved.Items.Count; i++)
{
if (CBL_EmpInvolved.Items[i].Selected)
{
this.empcount++;
}
}
if(this.empcount > 0)
{
this.DDL_Emp = new DropDownList[this.empcount];
for (int i = 0, j=0; i < CBL_EmpInvolved.Items.Count; i++)
{
if (CBL_EmpInvolved.Items[i].Selected)
{
List<ListItem> cond = new List<ListItem>();
cond.Add(new ListItem("Disabled", CBL_EmpInvolved.Items[i].Value));
cond.Add(new ListItem("Diseased - Fatality", CBL_EmpInvolved.Items[i].Value));
cond.Add(new ListItem("On Treatment - Short Term Disability", CBL_EmpInvolved.Items[i].Value));
cond.Add(new ListItem("On Treatment - Long Term Disability", CBL_EmpInvolved.Items[i].Value));
cond.Add(new ListItem("Treated - Back to Work", CBL_EmpInvolved.Items[i].Value));
cond.Add(new ListItem("Treated - Relocated", CBL_EmpInvolved.Items[i].Value));
cond.Add(new ListItem("Treated - Transferred", CBL_EmpInvolved.Items[i].Value));
this.DDL_Emp[j] = new DropDownList();
this.DDL_Emp[j].ID = "DD_LabCondition_" + CBL_EmpInvolved.Items[i].Value;
this.DDL_Emp[j].EnableViewState = true;
this.DDL_Emp[j].Visible = true;
this.DDL_Emp[j].Items.AddRange(cond.ToArray());
this.DDL_Emp[j].Items.Insert(0, new ListItem("-- Select condition of employee: " + CBL_EmpInvolved.Items[i].Text, ""));
PH_LabCondition.Controls.Add(this.DDL_Emp[j]);
j++;
}
}
PH_LabCondition.Visible = true;
MV_LabCondition.Visible = true;
Label1_ReportTitle.Text += "Control Count: " + PH_LabCondition.Controls.Count.ToString();
}
MV_LabCondition.ActiveViewIndex = 1;
MV_LostTime.ActiveViewIndex = 1;
}
}
現在這段代碼是給我下面的錯誤:
在大會「的System.Web類型 'System.Web.UI.WebControls.DropDownList',版本= 4.0.0.0,文化=中立,公鑰= b03f5f7f11d50a 3a'未被標記爲可序列化。
我試過將按鈕更改爲圖像,玩AutoPostBack功能。我迷失在如何讓dropdownlist數組保存到ViewState並在回發後訪問它。