急!急!急!关于FindControl的问题!

54Bendou 2005-10-19 11:21:09
动态生成控件,用户输入值后,取回用户输入的值的问题;

代码如下:

for(int i=0;i<5;i++)
{
TextBox tbcz=new TextBox();
tbcz.ID="cz"+(i+1);
this.Panel2.Controls.Add(tbcz);
}

用户输入值后,我去对应控件里面的值出错!
取值代码:
for(int i=0;i<5;i++)
{
string cz_s="cz"+i.ToString();
string cz_t=((TextBox)Page.FindControl(cz_s)).Text.Trim(); //这句出错
.......
}
...全文
325 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
FlyingBird0001 2005-10-19
  • 打赏
  • 举报
回复
同意楼上的。。。。
webdiyer 2005-10-19
  • 打赏
  • 举报
回复
动态创建控件的语句在什么地方?如果是在Page_Load方法中,不能放在if(!Page.IsPostBack)块中,因为动态创建的控件无法正确保存和获取视图状态,所以页面每次加载都必须重新创建才行。
zyug 2005-10-19
  • 打赏
  • 举报
回复
你将Panel的EnableViewState设为true再找一下

daishengs 2005-10-19
  • 打赏
  • 举报
回复
我以前是这样用的,你可以修改一下
private static void FindTextBox(System.Web.UI.Control oControl,string ControlID,string ControlValue)
{
if(oControl.HasControls())
{
foreach (System.Web.UI.Control oChildControl in oControl.Controls)
{
if( (oChildControl.ID==ControlID)&&(oChildControl is System.Web.UI.WebControls.TextBox))
{
((System.Web.UI.WebControls.TextBox)oChildControl).Text=ControlValue;
//oControl = oChildControl;
//((System.Web.UI.WebControls.TextBox)oControl).Text=ControlValue;
return;
}

FindDataGrid(oChildControl,ControlID,ControlValue);
}
}
}

public static void SetControl(System.Web.UI.Control Page,string ControlID,string ControlValue)
{

FindTextBox(Page,ControlID,ControlValue);
}
lswweb 2005-10-19
  • 打赏
  • 举报
回复
报什么错??
动态生成的控件??
有没有做控件状态保存??
54Bendou 2005-10-19
  • 打赏
  • 举报
回复
不好意思 ,循环是我刚才提问时候的笔误
代码如下:

for(int i=0;i<5;i++)
{
TextBox tbcz=new TextBox();
tbcz.ID="cz"+i;
this.Panel2.Controls.Add(tbcz);
}

用户输入值后,我去对应控件里面的值出错!
取值代码:
for(int i=0;i<5;i++)
{
string cz_s="cz"+i.ToString();
string cz_t=((TextBox)Page.FindControl(cz_s)).Text.Trim(); //这句出错
.......
}
FlyingBird0001 2005-10-19
  • 打赏
  • 举报
回复
循环有问题,应该是这样
for(int i=0;i<5;i++)
{
string cz_s="cz"+(i+1).ToString();
string cz_t=((TextBox)Page.FindControl(cz_s)).Text.Trim(); //这句出错
.......
}
54Bendou 2005-10-19
  • 打赏
  • 举报
回复
生成控件的代码我没有写在if(!Page.IsPostBack) 里面。
生成控件的循环数是动态的。成成了两种控件:textbox,label
textbox用Request.Form[ID] 取,那label的值模样去列。


anheizhizi 2005-10-19
  • 打赏
  • 举报
回复
生成控件的代码不要写在 if(!Page.IsPostBack) 里或 用Request.Form[ID] 得到
54Bendou 2005-10-19
  • 打赏
  • 举报
回复
谢谢你们的回答!

我是点提交按钮后在找控件出问题的。。

但是我有些值付给在label.Text的,那怎没取啊。

有类似:string cz_t=Request.Form["txt"+i];取的方法吗。
binkingaker 2005-10-19
  • 打赏
  • 举报
回复
跟踪一下,看每次加载时动态控件是否创建。
douguangyao 2005-10-19
  • 打赏
  • 举报
回复
webdiyer(陕北吴旗娃)

正确!
vzxq 2005-10-19
  • 打赏
  • 举报
回复
应该是你提交后,找不到动态生成的控件了
用这个方法试试
TextBox txt = new TextBox();

for(int i=0;i<5;i++)
{

string cz_t=Request.Form["txt"+i];
.......
}

62,039

社区成员

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

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

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

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