随笔 - 103  文章 - 0 评论 - 383 trackbacks - 35
<2008年5月>
27282930123
45678910
11121314151617
18192021222324
25262728293031
1234567

☆ 有些事現在不做,就一輩子都不會做了 ☆

昵称:jeff377
园龄:4年2个月
粉丝:5
关注:1

搜索

 
 

常用链接

我的标签

随笔分类

随笔档案

部落格

最新评论

阅读排行榜

评论排行榜

推荐排行榜

很多ASP.NET 初学者对于在Web Form 动态建立控件的问题困扰,常见到的问题是为何动态建立的控件无法像拖曳到画面上的控件有一样的效果,例如无法加载ViewState 的数据 (无法呈现更新的值) 及动态控件事件处理等等问题。

以下这个范例就是说明如何在Web Form 上动态建立一个TextBox Button 控件,并处理Button Click 事件。

 1    Protected Sub Page_Init(ByVal sender As ObjectByVal e As System.EventArgs) Handles Me.Init
 2        Dim oTextBox As New TextBox()
 3        Dim oButton As New Button()
 4
 5        oTextBox.ID = "myTextBox"
 6        oTextBox.Text = "AAA"           'TextBox的初始值为 AAA
 7        Me.Form.Controls.Add(oTextBox)
 8
 9        oButton.ID = "myButton"
10        oButton.Text = "按钮"
11        Me.Form.Controls.Add(oButton)
12
13        '将 Button 的 Click 事件导向 Button_Click 函式
14        AddHandler oButton.Click, AddressOf Button_Click
15    End Sub

16
17
18    'Button 的 Click 事件导向函数
19    Protected Sub Button_Click(ByVal sender As ObjectByVal e As System.EventArgs)
20        Dim oTextBox As TextBox = Nothing
21        oTextBox = CType(Me.FindControl("myTextBox"), TextBox)
22        If oTextBox IsNot Nothing Then
23            oTextBox.Text = "BBB"
24        End If
25    End Sub

为何要在Init 事件中就动态建立控件,而不是在Load 事件中呢?主要的原因是Init 事件在LoadViewState 之前发生,而Load 事件是在LoadViewState 之后。你要在LoadViewState 之前就把控件准备好,机制才能由ViewState 中加载更新控件的属性值。





posted on 2008-05-07 10:39 jeff377 阅读(2559) 评论(1) 编辑 收藏

FeedBack:
#1楼 2011-01-06 11:12 顾晓北      
vb的。
 回复 引用 查看