ASP.NET中根據XML動態創建使用WEB組件
(三)
作者:厲鐵帥
四、使用動態創建的WEB組件
如果在動態創建了WEB組件后,要使用該組件,可使用如下語句
String sequencelabelID="sequencedataTB"+icount.ToString();
Label sequencelabel=(Label)myPlaceHolder.FindControl(sequencelabelID);
Sequencelabel.Text=”… …”
… …
其中 sequencelabelID 為要使用的組件的ID號,myPlaceHolder.FindControl()方法返回類型 Control 的對象,使用 (Label) 將該類型強制轉換為Label類型。然后你可以根據自己的需要來對此對象任何進行你想進行操作。如更改組件的屬性等等。
需要特別提起注意的是,使用上述語句來使用動態創建的WEB組件有一個前提,就是頁面不能被刷新。如果頁面被刷新,而且你又沒有在頁面刷新后重新創建該組件。在程序中使用上述語句來使用動態創建的WEB組件,在程序運行時就會得到一個錯誤。該錯誤的產生是因為動態創建的WEB組件在頁面被刷新后就不存在了。在筆者的程序中就存在這樣的問題。因為筆者的程序的思路是
1、讀取XML文件
2、根據讀取的信息動態創建WEB組件,并為其文本屬性賦值
3、允許用戶對動態創建WEB組件的文本屬性進行修改。
4、當用戶提交修改后,要將修改過的屬性寫入XML文件中
但是當用戶提交修改后,頁面會被刷新。那么應該如何得到修改過的屬性哪?
筆者在程序中采用了下面的方法:
private void summitButton_Click(object sender, System.EventArgs e)
{
… …
//將用戶填寫的測量點信息寫入數組
for(int icount=1;icount<=int.Parse(ViewState["totalnum"].ToString());icount++)
{
… …
string nameTBID="nameTB"+icount.ToString();
string nameTBtext=Request.Form[nameTBID].ToString();
namestr[icount]=nameTBtext;
}
… …
}
其中nameTBID 為要使用的WEB組件的ID號。當頁面刷新后,雖然動態創建的WEB組件不存在了,但是Request 對象已經將WEB組件的信息保存下來了,所以仍然可以獲得修改過的信息。
如果你想在頁面刷新后,仍然顯示動態創建的WEB組件,那么你需要做的是在 Page_Load(object sender, System.EventArgs e) 中再次調用創建WEB組件的函數,并用 Request.Form[ID] 為相應的組件賦修改過的值。請記住,創建WEB組件的函數要放在 if(IsPostBack){ } 中。
|