代码如下:
headermodule.ascx.cs
public class headermodule : System.Web.UI.UserControl
{
protected System.Web.UI.WebControls.Image imageLogo;
private string _LogoType;
public string LogoType
{
get
{
return _LogoType;
}
set
{
_LogoType = value;
ChangeImage ();
}
}
}
---------------------------------------------------------------------------
groupwizard.aspx
<%@ Register TagPrefix="Module" TagName="Header" Src="../modules/headermodule.ascx" %>
...
<TD align="center" id="cellHeader" runat="server">
<Module:Header id="header" runat="server" LogoType="1"></Module:Header>
</TD>
.....
---------------------------------------------------
groupwizard.aspx.cs
...
protected ACard.modules.headermodule header;
...
private void Page_Load(object sender, System.EventArgs e)
{
if (!Page.IsPostBack)
{
header = (ACard.modules.headermodule)cellHeader.FindControl ("header");
header.EnableViewState = true;
header.LogoType = "4"; // 这句话是没有问题的
}
}private void btnNext_Click(object sender, System.EventArgs e)
{
header = (ACard.modules.headermodule)cellHeader.FindControl ("header");
// 上面这句话无论有没有,得到的都是null
header.LogoType = "2";
// 最后的异常是:未将对象引用设置到对象的实例。
}-------------------------------------------------
我的问题是,如何才能和其他控件一样使用用户控件,如何在才能在任何时候操作用户控件的属性。
headermodule.ascx.cs
public class headermodule : System.Web.UI.UserControl
{
protected System.Web.UI.WebControls.Image imageLogo;
private string _LogoType;
public string LogoType
{
get
{
return _LogoType;
}
set
{
_LogoType = value;
ChangeImage ();
}
}
}
---------------------------------------------------------------------------
groupwizard.aspx
<%@ Register TagPrefix="Module" TagName="Header" Src="../modules/headermodule.ascx" %>
...
<TD align="center" id="cellHeader" runat="server">
<Module:Header id="header" runat="server" LogoType="1"></Module:Header>
</TD>
.....
---------------------------------------------------
groupwizard.aspx.cs
...
protected ACard.modules.headermodule header;
...
private void Page_Load(object sender, System.EventArgs e)
{
if (!Page.IsPostBack)
{
header = (ACard.modules.headermodule)cellHeader.FindControl ("header");
header.EnableViewState = true;
header.LogoType = "4"; // 这句话是没有问题的
}
}private void btnNext_Click(object sender, System.EventArgs e)
{
header = (ACard.modules.headermodule)cellHeader.FindControl ("header");
// 上面这句话无论有没有,得到的都是null
header.LogoType = "2";
// 最后的异常是:未将对象引用设置到对象的实例。
}-------------------------------------------------
我的问题是,如何才能和其他控件一样使用用户控件,如何在才能在任何时候操作用户控件的属性。
解决方案 »
- web 显示大图片 带滚动条的,如何实现鼠标拖动浏览,就和地图哪个爬行一样
- 关于JS传参数的问题
- AutoCompleteExtender选择后的事件
- 控制gridview列隐藏与显示
- 关于屏幕颜色
- 关于aspx页面之间,参数传递的问题!!1
- asp.net代码删除,vs2008运行该工程时还显示原来的样子!
- 能不能实现这样一个确认对话框!
- 我在repeatar里面绑定了几个字段,在字段前面加上radiobutton。一个template里面的设成一组。请问怎么取出用户的选择呀。。(就是点击一
- 请教一个vs。net的安装问题!!!
- 求救有关ASP.NET中的弹出确认窗口问题
- 关于eWebEditor编译器,.net摸到一点门槛请进,熟悉的人也请进~~~~
把这句去掉
效果还是一样的。
在if (!Page.IsPostBack)里面怎么写都没有问题。在别处写,怎么写都有问题。
你的问题就出在这,你点按钮后自动刷新了,而你的用户控件却没有在你的Page_load事件中声明,没声明的东西当然不能用的。
解决方法:1在Page_load中声明下。2把if(!IsPostBack)去掉,也就是所有的要触发的事件都不要放在里面
去掉if(!IsPostBack) 后,页面第一次载入时有效,刷新后就得不到用户控件的实例了,最开始我也没用if(!IsPostBack) ,是刷新时才发现这个问题的。