动态创建控件和取值
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] 得到
//我只摘下了,对我有用的东西。
//学习动态创建控件和取值的方法
代码如下:
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] 得到
相关文章推荐
- 利用JS动态创建html控件并在后台实现取值
- 利用JS动态创建html控件并在后台实现取值
- 在MFC中创建动态控件的生成与响应
- [导入]在后台动态创建控件
- 对动态创建控件属性的访问
- 动态创建控件保存与读取(VC++6.0)
- 创建动态用户控件和understanding viewstat
- 如何:在 DataList Web 服务器控件中动态创建模板
- MFC动态创建控件及添加消息响应
- Delphi 代码创建控件与事件动态绑定
- 转载 ----MFC动态创建控件的消息处理
- VisionPro笔记(1):动态创建控件
- 动态创建控件(EDIT)添加关联变量
- 如何对动态创建控件进行验证以及在Ajax环境中的使用
- 动态创建控件
- 在MFC中动态创建控件以及事件响应
- C# 如何写动态创建的窗体的控件的click等事件
- 在MFC中动态创建控件以及事件响应
- MFC动态创建控件及添加消息响应
- .net 查找动态创建的控件的控件名