我以前也碰到过这个问题,当时我非常困惑。后来经过测试,发现只有在页面的Page_Init事件使用LoadControl()方法载入用户控件后,可以在Page_Load中读取用户控件中的值。
解决方案 »
- asp.net 用C#连接access,select语句如何能查出时间小于系统当前时间的记录
- 更改网页文字颜色,但是我一点别的按钮,就又变回去了,80分,在线等!
- c#
- ACCESS数据提取的问题
- asp.net頁面顯示問題?
- "HTTP/1.1 403 Unauthorized" 新建项目时就出这样的错误,怎么解决?
- C#中的 ListItem[] 类型如何在 VB.net中表示?谢谢
- 在Repeater里有一个linkbutton,我怎么样把<%# Container.DataItem("title") %>的值传到linkbutton的Click事件?
- .net怎么在后台通过实体对象给页面的HTML文本框赋值?
- 做下载服务器,使用fttp或者是ftp好呢
- 在线问一句sql语句,当天结分
- (100分求解)打开窗口问题?在线等待...........
PlaceHolder1.Controls.Add(myWebUserControl1);after the last statement, the system will call myWebUserControl1's Init/LoadViewState/LoadPostData
过程)就应该得到恢复了,可是实际测试结果是,它们的PostBack的值在用户控件的Page_Load事件时还没有得到恢复,而在Page_Load事件后的别的用户触发事件时(比如按钮事件)或之后得到恢复了.
in Control: OnInit
in Control: LoadViewState
in Control: hidden Value:
in Control: Page_Load
hidden Value:
in Control: LoadPostData Begin
in Control: hidden Value: Wed Jul 9 23:06:10 EDT 2003
in Control: NameValueCollection Count:4
__VIEWSTATE=dDw4NTgzNDQ5Mjk7dDw7bDxpPDE+Oz47bDx0PDtsPGk8MT47PjtsPHQ8O2w8aTwwPjs+O2w8dDxwPHA8bDxUZXN0Oz47bDw3LzkvMjAwMyAxMTowNjowNCBQTTs+Pjs+Ozs+Oz4+Oz4+Oz4+O2w8X2N0bDA7Pj4cnlC69WA90hUJ8i7RofdwOkkepQ==
_ctl0:myhidden=Wed Jul 9 23:06:10 EDT 2003
_ctl0:TextBox1=
Button1=Submit
in Control: LoadPostData End
in Control: RaisePostDataChange
In Page: OnPreRender
in Control: OnPreRender
hidden Value:
in Control: LoadPostData BeginLoadPostData 在Page_Load之后吗?
*********************************
user control is loaded in OnInit
*********************************
in Page: OnInit
In Page: Loading controls
in Control: OnInit
In Page: added to Controls
In Page: LoadViewState
in Control: LoadViewState
in Control: hidden Value:
in Control: LoadPostData Begin
in Control: hidden Value: Wed Jul 9 23:32:38 EDT 2003
in Control: LoadPostData End
In Page: OnLoad after base's Onload.
in Control: after base's OnLoad
hidden Value: Wed Jul 9 23:32:38 EDT 2003
in Control: RaisePostDataChange
In Page: OnPreRender
in Control: OnPreRender
hidden Value: Wed Jul 9 23:32:38 EDT 2003
In Page: SavedViewState
in Control: SaveViewState*********************************
User Control is loaded in OnLoad
*********************************
in Page: OnInit
In Page: LoadViewState
In Page: OnLoad after base's Onload.
In Page: Loading controls
in Control: OnInit
in Control: LoadViewState
in Control: hidden Value:
In Page: added to Controls
in Control: after base's OnLoad
hidden Value:
in Control: LoadPostData Begin
in Control: hidden Value: Wed Jul 9 23:33:32 EDT 2003
in Control: LoadPostData End
in Control: RaisePostDataChange
In Page: OnPreRender
in Control: OnPreRender
hidden Value: Wed Jul 9 23:33:32 EDT 2003
In Page: SavedViewState
in Control: SaveViewState
Postback data is processed again right after Load so controls added during
Load get a chance to process postback data (in what its called the "second
try"). Without this any controls added at the Load event will have already
missed their chance to process postback data. Take a look at this:Init
LoadViewState
Process postback data
Load
Process postback data 2nd trySo if you're adding your control at Init then its LoadPostData will be
called before Load, but if you're adding it at Load, its LoadPostData will
be called after Load.
"是override那些OnInit/OnLoad/....函数,在里面用Response.Write得到的
那么它的Value是不会自动使用ViewState保持的。
他的Value恢复的时候,是在ProcessPostData时做的。(使用Form来恢复)
ProcessPostData是页面的生命周期。在Page.Load前后各执行一次。
因为在第一次的ProcessPostData时,
Hidden控件还没有加上,所以值不能恢复。
而在Page.Load时,虽然用了Controls.Add,恢复Hidden的“控件生命周期”到Load
但是,控件生命周期是不会调用ProcessPostData - IPostBackDataHandler.LoadPostData的。
所以Hidden值也没有恢复。
知道页面LoadRecursive完成后,
进行第二次的ProcessPostData,
这时Hidden控件的值才得到恢复。这我在
http://expert.csdn.net/Expert/TopicView1.asp?id=1974290
里已经分开几个地方说明了。
那么它的Value是不会自动使用ViewState保持的。”
--控件的PostBack数据跟它是否关联事件没有关系,不关联其PostBack数据依然会保持的,就如你所说,由Request.Form读取后保持的.“因为在第一次的ProcessPostData时,
Hidden控件还没有加上,所以值不能恢复。”
--第一次的ProcessPostData时,用户控件已经经过了OnInit方法了,用户控件已经初始化了,用户控件中包含的控件也都装载了。“控件生命周期是不会调用ProcessPostData - IPostBackDataHandler.LoadPostData的。”
--控件的生命周期中当然要调用控件自己的ProcessPostData 过程,不调用怎么恢复postback数据哦。