先帖出页面代码吧
首先在页面中拖一个按钮进来 下面复制代码到自己的cs文件中
public partial class _Default : System.Web.UI.Page
{
private static int i = 0;
MyTextBox t1 = new MyTextBox();
MyTextBox t2 = new MyTextBox();
MyTextBox t3 = new MyTextBox();
class MyTextBox : TextBox
{
protected override bool LoadPostData(string postDataKey, NameValueCollection postCollection)
{
this.Page.Response.Write(this.Text);
return base.LoadPostData(postDataKey, postCollection);
}
}
protected void Page_Load(object sender, EventArgs e)
{
form1.Controls.Add(t1);
form1.Controls.Add(t2);
if (!IsPostBack)
{
t1.Text = "zhh1";
t2.Text = "zhh2";
t3.Text = "zhh3";
}
form1.Controls.Add(t3);
}
}
问题主要是t3,你可以尝试去运行,当你点页面的一个按钮进行回发数据的时候,t3的ViewState没有加载,只执行了Ipostbackdatahander里的LoadPostData()方法,那么再比较t1的输出可以看出它既加载了VIEWstate,又执行了loadpostdata(),但是更大的问题出来了,因为当你第二次点击按钮回发的时候,t3神奇般的可以加载viewstate了
首先在页面中拖一个按钮进来 下面复制代码到自己的cs文件中
public partial class _Default : System.Web.UI.Page
{
private static int i = 0;
MyTextBox t1 = new MyTextBox();
MyTextBox t2 = new MyTextBox();
MyTextBox t3 = new MyTextBox();
class MyTextBox : TextBox
{
protected override bool LoadPostData(string postDataKey, NameValueCollection postCollection)
{
this.Page.Response.Write(this.Text);
return base.LoadPostData(postDataKey, postCollection);
}
}
protected void Page_Load(object sender, EventArgs e)
{
form1.Controls.Add(t1);
form1.Controls.Add(t2);
if (!IsPostBack)
{
t1.Text = "zhh1";
t2.Text = "zhh2";
t3.Text = "zhh3";
}
form1.Controls.Add(t3);
}
}
问题主要是t3,你可以尝试去运行,当你点页面的一个按钮进行回发数据的时候,t3的ViewState没有加载,只执行了Ipostbackdatahander里的LoadPostData()方法,那么再比较t1的输出可以看出它既加载了VIEWstate,又执行了loadpostdata(),但是更大的问题出来了,因为当你第二次点击按钮回发的时候,t3神奇般的可以加载viewstate了
解决方案 »
- lucene.net分词搜索问题求解
- 如何把内容生成flash
- javascript跨域访问的问题
- .net2003 如何让button控件即执行onclick又执行本身的Click事件
- (求助)csdn的朋友帮我看下,是这个任务比较重还是...?
- 关于 如何让用户 写 两段文字 然后 印在 事先做好的一个 图片上的问题?
- 这种GIS如何制作.有没有系统架构例子.
- 帮帮我吧,把这个问题解决掉|!
- 请问以下两种效果怎么做出来的?
- 可以用asp.net做个人网站吗?
- System.Data.OracleClient requires Oracle client software version 8.1.7 or greate
- 关于用户控件设置缓存不显示的问题
form1.Controls.Add(t1);
form1.Controls.Add(t2);
form1.Controls.Add(t3);
if (!IsPostBack)
{
t1.Text = "zhh1";
t2.Text = "zhh2";
t3.Text = "zhh3";
}
ViewState["CreateControl"] = true;判断控件是否添加
form1.Controls.Add(t2);
form1.Controls.Add(t3);
if (!IsPostBack)
{
t1.Text = "zhh1";
t2.Text = "zhh2";
t3.Text = "zhh3";
}
form1.Controls.Add(t1);
form1.Controls.Add(t2);
form1.Controls.Add(t3);
自己调试了下,放前后,第一次得到的结果是不同的,自己不懂,感觉和LoadPostData有关,具体的不懂,关注中