我在页面的Load中执行如下的语句:
Literal1.Text = @"<input id='F1' name='F1' type='text' class='tdinput' runat='server' />";
然后,我想给这个HtmlInputText控件赋值,我采用这样的方法:
HtmlInputText hText = (HtmlInputText)this.FindControl("F1");
结果,怎么找都是hText = null;
我想可能是页面的载入顺序的问题,不知哪位大侠知道,我应该如何弄,才能够对这个HtmlInputText 控件赋值?
谢谢。
Literal1.Text = @"<input id='F1' name='F1' type='text' class='tdinput' runat='server' />";
然后,我想给这个HtmlInputText控件赋值,我采用这样的方法:
HtmlInputText hText = (HtmlInputText)this.FindControl("F1");
结果,怎么找都是hText = null;
我想可能是页面的载入顺序的问题,不知哪位大侠知道,我应该如何弄,才能够对这个HtmlInputText 控件赋值?
谢谢。
----------
听书网http://99tbook.cn
box1.Value = "11";
box1.ID = "txtName1";
this.Panel1.Controls.Add(box1); ((HtmlInputText)this.Literal1.FindControl("txtName1")).Value = "houling";
我的代码都是直接从一个文件中读取的,事实上会有很多个如:<input id='F1' name='F1' type='text' class='tdinput' runat='server' />这样的控件,因此不能一个一个的构造。
我这些代码都在一个方法中,应该不存在回不回发的问题。
你叶面生成后自己看看页面的代码 id='F1' name='F1' ?? no id name都没有了貌似所以找不到八
你只是在 Literal1.Text 写上了一些字符串,asp.net才不会去管你些什么,直接输出而已。即使你写上不“正常”的字符串也不会管,自然也根本不认识有id为F1的这个控件。要生成实际的控件,是要按照7楼那样的做法写。
是的,如果你真的对ASP.NET的编译过程感兴趣,需要十分清晰的理解为什么这不现实,建议你去读我的系列文章:
http://www.cnblogs.com/cathsfz/archive/2006/10/31/545521.html
(这是第一篇,后面的你顺着去看就是了。)
你的
Literal1.Text = @" <input id='F1' name='F1' type='text' class='tdinput' runat='server' />";
编译后在HTML中你将看到
<input id='F1' name='F1' type='text' class='tdinput' runat='server' />
注意红色部分。说明这个F1根本就是不服务器控件,那么你用FindControl("F1")就肯定是Null了。
要想赋值你可以用js,这样是可以实现,但是这个思路就不对
你可以这样实现动态添加控件
TextBox TextBox1 = new TextBox();
Panel1.Controls.Add(TextBox1);
建议写作Page_Init事件中
为何什么<input id='F1' name='F1' type='text' class='tdinput' runat='server' />
就说明不是服务器控件?我单独用上面的直接在页面中,用Find是可以找到的?其实大家说的一些原理我也基本上明白,但我想,页面生成后,应该和用不用Literal控件没有什么太多关系了才对,因为他实际上已经用我们希望的代码全部代替了,所以我才会想,有没有可能这样捕获取到呢?