动态添加自定义控件问题.......

szheto 2005-12-15 08:44:27
UseControl里有几个TextBox,我想动态添加UseControl,即按一下Botton添加一个UseControl,再按一下又添加一个UseControl........请问应该怎样实现?
还有就是怎样访问这些TextBox的值?
...全文
298 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
szheto 2005-12-17
  • 打赏
  • 举报
回复
非常感谢saucer(思归),如果你的代码稍稍改动少少就更完美了.....
void Button_Click(...)
{
Control c = LoadControl("YourUserControl.ascx");
c.ID = "UC" + LoadedTimes.ToString();
//改为c.ID = "UC" + (LoadedTimes+1).ToString();
ph.Controls.Add(c);

LoadedTimes++;
}
alesso 2005-12-16
  • 打赏
  • 举报
回复
用客户端的JavaScript
saucer 2005-12-16
  • 打赏
  • 举报
回复
用ViewState记住你LoadControl几次


<asp:PlaceHolder id="ph" runat="server" />

int LoadedTimes
{
get
{
object o = ViewState["LoadedTimes"];
if (o == null)
return 0;
return (int)o;
}

set
{
ViewState["LoadedTimes"] = value;
}
}


void CreateControls()
{
for (int i=0; i < LoadedTimes; i++)
{
Control c = LoadControl("YourUserControl.ascx");
c.ID = "UC" + i.ToString();
ph.Controls.Add(c);
}
}

void Page_Load(...)
{
CreateControls();
}


void Button_Click(...)
{
Control c = LoadControl("YourUserControl.ascx");
c.ID = "UC" + LoadedTimes.ToString();
ph.Controls.Add(c);

LoadedTimes++;
}

void GetValueButton_Click(..)
{
for (int i=0; i < LoadedTimes; i++)
{
YourControl uc = (YourControl)ph.FindControl(""UC" + i.ToString();");
//get the text from your user control
}
}
建哥聊IT 2005-12-16
  • 打赏
  • 举报
回复
动态创建控件:
Control wc = this.LoadControl(WebUserControl1.ascx);
PlaceHolder1.Controls.Add(wc);

szheto 2005-12-16
  • 打赏
  • 举报
回复
谢谢saucer(思归) 大哥...我试试...
adamzb 2005-12-15
  • 打赏
  • 举报
回复
楼主,你要用button添加,肯定要判断点击的次数了。(好像有点麻烦)
不如用DropDownList
swtich(DropDownList.SelectedValue)
{
case "1":
Control con1 = Page.LoadControl("UseControl.ascx");
this.PlaceHolder1.Controls.Add(con1);
break;
case "2":
.......
break;
}

取值:试试 Request.Form["TextBoxID"]
szheto 2005-12-15
  • 打赏
  • 举报
回复
我试过了,但只能添加一个控件呀,再加一个怎么做?怎么取值?
adamzb 2005-12-15
  • 打赏
  • 举报
回复
动态添加自定义控件,可以使用PlaceHolder控件。
例如:
Control con1 = Page.LoadControl("UseControl.ascx");
this.PlaceHolder1.Controls.Add(con1);
szheto 2005-12-15
  • 打赏
  • 举报
回复
我希望按一下Button就添加一个UseControl,输入完数据后,再按一下Button又添加一个UseControl,再输入.........最后全部录入数据库,就是取值了......怎么取?
luckyprg 2005-12-15
  • 打赏
  • 举报
回复
参考下PlaceHolder,可以实现你所说的功能。
szheto 2005-12-15
  • 打赏
  • 举报
回复
如果我把UseControl改为一行4个TextBox呢?
第一次添加一行4个TextBox,第二次又添加一行4个TextBox........
greennetboy 2005-12-15
  • 打赏
  • 举报
回复
自定义控件和用户自定义控件是不一样得!Control得层次关系如下:
Control
TemplateControl | WebControl | HtmlControl
User Controls Page | TextBox Button ..|HtmlTable HtmlGenernalControl...
---------------------------------------
上面三个层次中得UserControl和Page和基本模板得,不推荐在其父模板中操作其属性和方法,如果你想达到那样得功能,请使用Web Control 或者HtmlControl!

62,072

社区成员

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

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

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

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