下午好。Page_Init PreRender控件,Asp.net
我有一個在Page_Load上動態創建的面板列表。控件通過Control.Add(p)添加;方法。代碼如下
Panel p = new Panel();
p.ID = "cell_" + i + "_" + j;
p.Attributes.Add("runat", "server");
p.TabIndex = -1;
p.Attributes.Add("class", "box");
p.Attributes.Add("onClick", "clicked(this);");
p.Attributes.Add("onKeypress", "changeValue(event, this);");
p.Style.Add(HtmlTextWriterStyle.Top, top + "%");
p.Style.Add(HtmlTextWriterStyle.Left, left + "%");
p.Attributes.Add("Text", value);
PanelList.Add(p);
該代碼塊位於for循環中,每個循環都會更改i,j,left,right和value變量。
現在,當我調用這個函數之前的Page_Load飾面:
foreach (Control c in clientGrid.Controls)
{
Response.Write(c.ClientID.ToString());
}
它成功地寫入所有動態創建的面板的所有客戶端的ID。
但是,當我在回發上運行foreach函數時,Response.write什麼也不顯示。它好像asp已經忘記了這些面板存在!
現在我聽到了Page_Init(),控件需要重新渲染!
林不知道如何做到這一點和許多谷歌後,似乎無法找到答案。使用recurtion通過所有Page.Controls迭代並拉出
System.Web.UI.WebControls.Panel
但仍沒有運氣:(
我用盡
如果我在不清楚的問題,我不能提供更多的代碼和細節: )
三江源
亞歷
你先生...是天才 – 2011-05-24 15:38:02
謝謝。我不是一個天才,但我不得不在多次處理動態添加控件的頭痛問題。我很高興這有助於。 – 2011-05-24 16:17:45
我會建議在Page_Init中加載動態控件,因爲這樣,根據[頁面生命週期概述](http://msdn.microsoft.com/zh-cn/library/ms178472),viewstate將正確地重新填充到這些控件中的.aspx)。否則,你必須手動維護它。 – Roman 2012-07-11 21:27:54