ASP.NET中根據(jù)XML動(dòng)態(tài)創(chuàng)建并使用WEB組件(3
發(fā)表時(shí)間:2023-08-03 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]ASP.NET中根據(jù)XML動(dòng)態(tài)創(chuàng)建使用WEB組件(三)作者:厲鐵帥四、使用動(dòng)態(tài)創(chuàng)建的WEB組件 如果在動(dòng)態(tài)創(chuàng)建了WEB組件后,要使用該組件,可使用如下語句String sequencelabel...
ASP.NET中根據(jù)XML動(dòng)態(tài)創(chuàng)建使用WEB組件
(三)
作者:厲鐵帥
四、使用動(dòng)態(tài)創(chuàng)建的WEB組件
如果在動(dòng)態(tài)創(chuàng)建了WEB組件后,要使用該組件,可使用如下語句
String sequencelabelID="sequencedataTB"+icount.ToString();
Label sequencelabel=(Label)myPlaceHolder.FindControl(sequencelabelID);
Sequencelabel.Text=”… …”
… …
其中 sequencelabelID 為要使用的組件的ID號(hào),myPlaceHolder.FindControl()方法返回類型 Control 的對(duì)象,使用 (Label) 將該類型強(qiáng)制轉(zhuǎn)換為L(zhǎng)abel類型。然后你可以根據(jù)自己的需要來對(duì)此對(duì)象任何進(jìn)行你想進(jìn)行操作。如更改組件的屬性等等。
需要特別提起注意的是,使用上述語句來使用動(dòng)態(tài)創(chuàng)建的WEB組件有一個(gè)前提,就是頁面不能被刷新。如果頁面被刷新,而且你又沒有在頁面刷新后重新創(chuàng)建該組件。在程序中使用上述語句來使用動(dòng)態(tài)創(chuàng)建的WEB組件,在程序運(yùn)行時(shí)就會(huì)得到一個(gè)錯(cuò)誤。該錯(cuò)誤的產(chǎn)生是因?yàn)閯?dòng)態(tài)創(chuàng)建的WEB組件在頁面被刷新后就不存在了。在筆者的程序中就存在這樣的問題。因?yàn)楣P者的程序的思路是
1、讀取XML文件
2、根據(jù)讀取的信息動(dòng)態(tài)創(chuàng)建WEB組件,并為其文本屬性賦值
3、允許用戶對(duì)動(dòng)態(tài)創(chuàng)建WEB組件的文本屬性進(jìn)行修改。
4、當(dāng)用戶提交修改后,要將修改過的屬性寫入XML文件中
但是當(dāng)用戶提交修改后,頁面會(huì)被刷新。那么應(yīng)該如何得到修改過的屬性哪?
筆者在程序中采用了下面的方法:
private void summitButton_Click(object sender, System.EventArgs e)
{
… …
//將用戶填寫的測(cè)量點(diǎn)信息寫入數(shù)組
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號(hào)。當(dāng)頁面刷新后,雖然動(dòng)態(tài)創(chuàng)建的WEB組件不存在了,但是Request 對(duì)象已經(jīng)將WEB組件的信息保存下來了,所以仍然可以獲得修改過的信息。
如果你想在頁面刷新后,仍然顯示動(dòng)態(tài)創(chuàng)建的WEB組件,那么你需要做的是在 Page_Load(object sender, System.EventArgs e) 中再次調(diào)用創(chuàng)建WEB組件的函數(shù),并用 Request.Form[ID] 為相應(yīng)的組件賦修改過的值。請(qǐng)記住,創(chuàng)建WEB組件的函數(shù)要放在 if(IsPostBack){ } 中。