【急啊~】动态载入用户控件,控件.cs中的IsPostBack问题?
路过的兄弟姐妹们,请帮帮忙~
在某.aspx.cs中调用一个控件,并传给它初始化用的两个参数:
MyEditControl editc = (MyEditControl)LoadControl("ruk_edit.ascx");
editc.mynew = "false"; //给控件传初始化参数1
editc.pid = id; //给控件传初始化参数2
Panel2.Controls.Add(editc); //将控件载入一个Panel中
Panel2.Visible=true;
在控件的后台:ruk_edit.ascx.cs 中,我定义了:
Label1.Text = "1";
if (!(Page.IsPostBack))
{
Label1.Text = "2";
..........使用得到的参数做些初始化步骤............
}
结果在Panel2中看到控件中Label1的显示总是“1” ?而我想得到“2”及初始化后的控件...
是不是在LoadControl("ruk_edit.ascx")的时候用户控件就已经初始化了?
再Panel2.Controls.Add(editc)的时候控件又提交了一次服务器,
故没有执行Label1.Text = "2" 和初始化?
这样的话,如何解决用户控件根据所得到的参数值,进行初始化(只操作一次)...
在某.aspx.cs中调用一个控件,并传给它初始化用的两个参数:
MyEditControl editc = (MyEditControl)LoadControl("ruk_edit.ascx");
editc.mynew = "false"; //给控件传初始化参数1
editc.pid = id; //给控件传初始化参数2
Panel2.Controls.Add(editc); //将控件载入一个Panel中
Panel2.Visible=true;
在控件的后台:ruk_edit.ascx.cs 中,我定义了:
Label1.Text = "1";
if (!(Page.IsPostBack))
{
Label1.Text = "2";
..........使用得到的参数做些初始化步骤............
}
结果在Panel2中看到控件中Label1的显示总是“1” ?而我想得到“2”及初始化后的控件...
是不是在LoadControl("ruk_edit.ascx")的时候用户控件就已经初始化了?
再Panel2.Controls.Add(editc)的时候控件又提交了一次服务器,
故没有执行Label1.Text = "2" 和初始化?
这样的话,如何解决用户控件根据所得到的参数值,进行初始化(只操作一次)...
...全文
请发表友善的回复…
发表回复
i169net1 2006-04-17
- 打赏
- 举报
发现控件似乎根本没有执行初始化...
private void Page_Load(object sender, System.EventArgs e)
{
if (!(Page.IsPostBack))
{...???这里面的代码根本没被执行过???...}
}
我用Session试的~
private void Page_Load(object sender, System.EventArgs e)
{
if (!(Page.IsPostBack))
{...???这里面的代码根本没被执行过???...}
}
我用Session试的~
i169net1 2006-04-17
- 打赏
- 举报
不会用 VS2003 中的调试功能~
我一般都是自己在程序里加些变量,然后用Label观察其值,来判断的...
还有什么办法吗?
我一般都是自己在程序里加些变量,然后用Label观察其值,来判断的...
还有什么办法吗?
xwvivien 2006-04-17
- 打赏
- 举报
与执行顺序有关,建议逐句调试
i169net1 2006-04-17
- 打赏
- 举报
ruk_edit.ascx.cs 代码,再具体些:
public string mynew,pid; //两个参数
private void Page_Load(object sender, System.EventArgs e)
{
Label1.Text = "1";
if (!(Page.IsPostBack))
{
Label1.Text = "2";
..........使用得到的参数做些初始化步骤....如下行.....
TextBox1.Text = pid;
TextBox2.Text = mynew;
}
}
public string mynew,pid; //两个参数
private void Page_Load(object sender, System.EventArgs e)
{
Label1.Text = "1";
if (!(Page.IsPostBack))
{
Label1.Text = "2";
..........使用得到的参数做些初始化步骤....如下行.....
TextBox1.Text = pid;
TextBox2.Text = mynew;
}
}
i169net1 2006-04-17
- 打赏
- 举报
折腾一天了啊......555...........
为什么第一次动态加载用户控件后,此控件后台编码中的if (!(Page.IsPostBack)){...}不被执行 ?
为什么第一次动态加载用户控件后,此控件后台编码中的if (!(Page.IsPostBack)){...}不被执行 ?
i169net1 2006-04-17
- 打赏
- 举报
用户控件没有使用缓存...
LoadControl用户控件后,并ADD(控件),根本不执行用户控件.cs中的“代码A”部分???
private void Page_Load(object sender, System.EventArgs e) //用户控件.cs片段
{
if (!(Page.IsPostBack))
{...代码A...}
}
但如果直接在前台用<UserControl:ruk_edit id="X" runat="server"/>加载此控件,是执行“代码A”的~
LoadControl用户控件后,并ADD(控件),根本不执行用户控件.cs中的“代码A”部分???
private void Page_Load(object sender, System.EventArgs e) //用户控件.cs片段
{
if (!(Page.IsPostBack))
{...代码A...}
}
但如果直接在前台用<UserControl:ruk_edit id="X" runat="server"/>加载此控件,是执行“代码A”的~
自由人2008 2006-04-17
- 打赏
- 举报
你的用户控件有没有使用患存啊。再者检查下为什么没有执行初始化,是不是因为条件不满足.或者把条件去掉实验。
i169net1 2006-04-17
- 打赏
- 举报
等待中...........