只有10分,问 动态加载用户控件取 属性值问题

symbol_bc 2009-09-25 10:03:27
我要在页面中动态加载一些用户控件,每个用户控件都是一个独立的逻辑单元,我给他们每一个都增加属性便于对外访问,
比如:
public partial class WebUserControl1 : System.Web.UI.UserControl
{
protected void Page_Load(object sender, EventArgs e)
{
this.strSql = this.textbox1.text + this.text2.text + ... ;
}

/// <summary>
/// 公共成员
/// </summary>
public string strSql;
}

把他们加载在页面的placeholder中,
protected void Page_Load(object sender, EventArgs e)
{
if(!this.ispostback)
{
this.LoadControl("WebUserControl1.ascx")
this.LoadControl("WebUserControl2.ascx")
this.LoadControl("WebUserControl3.ascx")
}
else
{
//怎样在页面回发的时候取得控件的公共成员的值呢,this.placeholder.controls.count = 0
}
}


怎么取呢
...全文
68 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
symbol_bc 2009-09-25
  • 打赏
  • 举报
回复
还有我想问,为什么在page_load中loadControls取不到,在init中就可以呢??
ViewStates 2009-09-25
  • 打赏
  • 举报
回复
public string UserName
{
get{string.IsNullOrEmpty(ViewState["UserName"].ToString())?"":ViewState["UserName"].ToString();}
set{ViewState["UserName"]=value;}
}
symbol_bc 2009-09-25
  • 打赏
  • 举报
回复
我的代码:用户控件
public partial class WebUserControl1 : System.Web.UI.UserControl
{
protected void Page_Load(object sender, EventArgs e)
{
if (this.IsPostBack)
this.s = this.tb.Text;
}

private string _s;

public string s
{
get { return this._s; }
set { this._s = value; }
}
}

调用页:
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (this.IsPostBack)
{
WebUserControl1 wu = (WebUserControl1)this.ph.FindControl("symbol");
string sss = wu.s;
}
}

protected override void OnInit(EventArgs e)
{
base.OnInit(e);

WebUserControl1 wu = (WebUserControl1)this.LoadControl("WebUserControl1.ascx");

wu.ID = "symbol";

this.ph.Controls.Add(wu);
}
}
symbol_bc 2009-09-25
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 liutengt 的回复:]
C# code//在MyControl.ascx用户控件里 建一个属性publicstring UserName
{//可改成其他控件get {return TextBox1.Text; }set { TextBox1.Text= value; }
}//在使用页面重写OnInit方法protectedoverridevoid OnInit(EventArgs e)
{
¡­
[/Quote]


哥们你真棒,我现在已经能取到用户控件了,但是还是取不到属性值
kings2015 2009-09-25
  • 打赏
  • 举报
回复

//在MyControl.ascx用户控件里 建一个属性
public string UserName
{
//可改成其他控件
get { return TextBox1.Text; }
set { TextBox1.Text = value; }
}

//在使用页面重写OnInit方法

protected override void OnInit(EventArgs e)
{
MyControl control = (MyControl)this.LoadControl("MyControl.ascx");
control.ID = "myC";
form1.Controls.Add(control);//from1可改成其他控件
}

//获取
MyControl con = (MyControl)form1.FindControl("myC");
if (con != null)
{
Response.Write(con.UserName);
}
symbol_bc 2009-09-25
  • 打赏
  • 举报
回复

symbol_bc 2009-09-25
  • 打赏
  • 举报
回复
必须顶起来
symbol_bc 2009-09-25
  • 打赏
  • 举报
回复
果然是穷啊,没人理,顶

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧