Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Page.IsPostBack = False Then
Dim ltl As Literal = New Literal
ltl.Text = "aaa"
panel1.Controls.Add(ltl)
End If
End Sub如上在page.ispostback=false 的时候可以显示"aaa",但是在回发的时候这个ltl控件就没有了,怎样能保证ltl能保证视图.
If Page.IsPostBack = False Then
Dim ltl As Literal = New Literal
ltl.Text = "aaa"
panel1.Controls.Add(ltl)
End If
End Sub如上在page.ispostback=false 的时候可以显示"aaa",但是在回发的时候这个ltl控件就没有了,怎样能保证ltl能保证视图.
解决方案 »
- sqlhelp类与sql2000连接不上
- System.Web.AspNetHostingPermission
- 有关访问权限的配置文件设置问题
- asp.net下新建项目失败,找不到原因?刚装的系统。
- 请问petshop中SQLHelper中的一个问题?
- 大家好,我有一个很头痛的问题,不知道属不属于技术问题,谁现在在线了,可以帮我一下吗?
- 请用过aspnetpager的兄弟帮帮忙
- 如果两个域名指向同一个虚拟主机,在asp.net中怎样能判断出客户端是用哪个域名访问这块空间的?
- Response.BinaryWrite()遇到很奇怪的问题.
- VS2005如何发布asp.net ajax 1.0项目
- 【急】如何循环显示这种结构?
- 新手请教TreeView的问题,在线等,急!!!!!!!!!!!1
-----
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim ltl As Literal = New Literal
ltl.Text = "aaa"
panel1.Controls.Add(ltl)
End Sub
还有种方法,你预先储存control2的信息,然后象2楼那样
在OnInit中加载,只要加载方式在提交期间保持不变,控件的视图是自动保存的,
这是由asp.net页面加载顺序决定的.参考以下链接,注意贴中我的回复http://topic.csdn.net/u/20100402/09/5cf8b5ca-768f-425d-8513-342a683c3129.htmlhttp://topic.csdn.net/u/20100411/20/c71dcdc2-db31-4fb0-86f7-9a3895cfaa01.html做过.net2003这些早期版本开发的对这个概念比较清楚,那时的OnInit事件是直接写好的
If Page.IsPostBack = True Then
那个控件的Visible=false
http://www.mystruggle.com.cn
If Page.IsPostBack = False Then
Dim ltl As Literal = New Literal
ltl.Text = "aaa" panel1.Controls.Add(ltl)
ltl.EnableViewState = True
End If
End Sub
1、每次都要加载,不能说只有第一次才加载;
2、如果每次在OnInit中加载的方式是一样的,那么控件的viewstate内容是"持久"的
http://www.denisbauer.com/ASPNETControls/DynamicControlsPlaceholder.aspx即使用了这样的“自动”功能,能简化的只是回发后的重建控件的代码,并不会带来性能上的提升,所以对性能有要求的话,应该针对你的实际情况来写重建控件的代码,简单的情况下就是去掉IsPostBack判断就好了。
不要想当然,自己试一下就知道了,
微软一直就是这样干的,你看看.net2003生成的页面代码就知道了,
这还要说多少遍
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
}
#endregion
只要花几个小时的时间就可以自己写个小例子把page的加载过程弄得清清楚楚,
还有就是很多人认为Page_Load在OnLoad之前执行,其实是错误的,
多了真的不想说了,说过n遍了,
如果你有不同见解别在这里纠结了,另开贴讨论
2、写在页面的控件也是一遍遍加载的,这个你在PreInit就可以发现:form里面啥也没有;
3、由于Page_Load的"追赶"是由OnInit触发的,所以还可以利用base.OnInit(e)的置前和置后来调整Page_Load与OnInit之间的执行先后;
4、看吴伟同志长篇大论说得那么好,我又忍不住来补充了2句,只是有点不同,设计时刻不存在的控件只有动态加载,这个说来话又长了,呵呵;
5、jshi123:如果您能听取我之前的建议,就当是休息,凭你那颗星,不超过1个小时做个例子,那以上那么多纯属多余