在葉面中動態的添加控件

王朝asp·作者佚名  2006-01-09
宽屏版  字体: |||超大  

在實際的開發過程中,經常需要根据實際需要動態的加載一些服務器控件或用戶控件,一般又分為靜態和動態加載兩種.下面主要是講如何動態加載控件,在葉面中動態加載控件經常用PlaceHolder控件作為一個容器來裝載這些動態加載的控件.這個例子是當點”BtnAddControl”來添加一個新控件

Sub BtnAddControl_Click(Sender As object,e As eventargs)

Dim txtBox As textbox = New Textbox

'先清除placeholder中的所有控制項再將生成的textbox控件加到placeholder控件中

PlaceHolder1.Controls.Clear()

PlaceHolder1.Controls.Add(txtBox) '這樣基本上就已經有了一個textbox控件了,當點“BtnAddControl“時就可以看到有個textbox!

'還可以定義加載的TEXTBOX的各种屬性(注意要先添加控件,再設置它的屬性)

txtBox.ID=“Mytextbox“

txtBox.BackColor=System.Drawing.Color.LightGreen

txtBox.text=“This is a textbox!“

ViewState(“txtBoxControl“)=True

End Sub

這樣就會在點按鈕的時候動態加載一個TEXTBOX控件,但是這樣會有一個問題:就是在刷新葉面的時候這個TEXTBOX又會不見.這是因為動態加載的控件不會在葉面上自動保存他的VIEWSTATE狀態,要想不出項這种問題,就必須在PAGE_LOAD()事件中實現,具体如下:

Sub Page_load(Sender As object,e As Eventargs)

'判斷ViewState中是否存在先前生成的控件的ViewState,存在則重新生成控件並自動加載它先前的ViewState狀態

If ViewState(”txtBoxControl”) <> Nothing Then

Dim txtBox As textbox=New textbox

PlaceHolder1.Controls.Add(txtBox)

txtBox.ID=”MytextBox”

End If

End Sub

動態加載用戶控件是一樣的方法(PlaceHolder1.Controls.Add(”Header.ascx”)

------------------------------------------------------------------------

第一次寫文章,有點亂,還望指正!

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有