您的位置:首页 > 其它

动态创建控件和取值

2007-10-07 14:48 323 查看
//原帖:http://topic.csdn.net/t/20051019/11/4336067.html
//我只摘下了,对我有用的东西。
//学习动态创建控件和取值的方法

代码如下:

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(); //这句出错
.......
}

-------------------------------------------------------------------------

4 楼daishengs(横舟摆渡)回复于 2005-10-19 11:48:51 得分 2
我以前是这样用的,你可以修改一下
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);
}



-------------------------------------------------------------------------

6 楼webdiyer(.net资源精华—www.dotneturls.com)回复于 2005-10-19 11:56:55 得分 2
动态创建控件的语句在什么地方?如果是在Page_Load方法中,
不能放在if(!Page.IsPostBack)块中,
因为动态创建的控件无法正确保存和获取视图状态,
所以页面每次加载都必须重新创建才行。

-------------------------------------------------------------------------

8 楼vzxq(灵感人)回复于 2005-10-19 13:57:53 得分 15
应该是你提交后,找不到动态生成的控件了
用这个方法试试
TextBox txt = new TextBox();

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

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

-------------------------------------------------------------------------

12 楼anheizhizi(目标:★★★★★)回复于 2005-10-19 17:01:03 得分 2
生成控件的代码不要写在
if(!Page.IsPostBack) 里或 用Request.Form[ID] 得到
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: