自定义控件子控件初始化问题,高手请进!

playyy 2007-04-30 03:41:09
public class TripalCheckList : System.Web.UI.WebControls.WebControl
{
private TextBox txtListContent;
private TextBox txtListID;
private string _DataTextField;
//构造函数
public TripalCheckList()
{
txtListContent = new TextBox();
txtListID = new TextBox();
}
protected override void CreateChildControls()
{
txtListContent = new TextBox();
txtListID = new TextBox();
txtListContent.ID = this.ClientID + "_Text";

txtListID.ID = this.ClientID + "_Value";
base.CreateChildControls ();
}
public string SelectedListText
{
set
{
txtListContent.Text = value;
}
get
{
return txtListContent.Text;
}
}
------在构造函数中初始化子控件,设计时拖拉到窗体可以呈现
但在获取子控件的值时,构造函数再次执行导致实例化一个新的子控件,丢失了值
如果不在构造函数中初始化子控件,则报错txtListContent未实例化
请问:怎么解决啊
...全文
219 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
silverdan 2007-04-30
  • 打赏
  • 举报
回复
当 TripalCheckList 作为控件显示在WebForm上.
刷新时引起的重新构造,使得这个实例丢失原来保存的值?
zyug 2007-04-30
  • 打赏
  • 举报
回复
你的写法很奇怪哦,不过我建议你试着让.net自己去管理状态

protected override void CreateChildControls()
{
base.CreateChildControls();
txtListContent = new TextBox();
//添加到controls集合
this.Controls.Add(txtListContent);
....
}
playyy 2007-04-30
  • 打赏
  • 举报
回复
我先开始就是没有在protected override void CreateChildControls()方法中new
但是值被构造函数冲掉了,我这里只是把2个new 的地方给出来供解答
silverdan 2007-04-30
  • 打赏
  • 举报
回复
protected override void CreateChildControls()
{
txtListContent = new TextBox();
txtListID = new TextBox();
txtListContent.ID = this.ClientID + "_Text";

txtListID.ID = this.ClientID + "_Value";
base.CreateChildControls ();
}
偶的理解.
貌似构造函数里面NEW 了这里就不需要new TextBox()了..
playyy 2007-04-30
  • 打赏
  • 举报
回复
但是我的值是通过JS赋的
zyug 2007-04-30
  • 打赏
  • 举报
回复
将值保存到viewstate中

62,047

社区成员

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

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

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

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