关于控件ID
本人实在愚钝,控件的ID,是什么东西,没有看到过,请大家不要解释,我只要MSDN链接 --------------------编程问答-------------------- 服务器控件Id 就等于 人的身份证。必须唯一。 --------------------编程问答--------------------
ASP.NET 的服务器端控件有三种关于 ID 的属性 ID, ClientID 和 UniqueID。
ID 表示控件的服务器端编程的标识符,我们写服务器端的代码,就要用到这个 ID, 通过这个 ID 可以在服务器端对服务器端控件的属性、方法和时间进行编程访问。
ClientID 表示由服务器端生成的客户端控件的ID, 经常用于在客户端脚本中访问服务器控件所呈现的 HTML 元素。一般情况下与服务器端的 ID 相同,有时,不能为控件生成唯一的名称,例如,如果 Repeater 空间在它的某个模板中包含一个 Label 控件,则将在客户端生成多个该 Lable 的 HTML 元素, 为防止命名冲突,ASP.NET 为各个服务器控件生成一个唯一的 ClientID ,ClientID 通过将子控件的父控件的 UniqueID 值与控件的 ID 值连接生成,各个部分之间以下划线 _ 连接。
UniqueID 用于获取服务器控件的唯一的、以分层方式表示的标识符。当将控件放置到重复控件(Repeater、DataList和DataGrid)中时,将可能生成多个服务器端的控件,这就需要区分服务器端的各个控件,以使它们的 ID 属性不冲突。UniqueID 通过将子控件的父控件的 UniqueID 值与控件的 ID 值连接生成,各个部分之间以 IdSeparator 属性指定的字符连接。默认情况下, IdSeparator 属性为冒号字符 (:)。此属性为在 .Net Framework2.0种新增加。
获取由 ASP.NET 生成的服务器控件标识符。
问题一:用户控件的页面JavaScript中需要使用Asp.net的控件ID,出现不一致。
问题二:母版页的子页面JavaScript中需要使用Asp.net的控件ID,出现不一致。
解决办法:
document.getElementByIdx("<%=TextBox1.ClientID%>").value="1234567";
此代码可以在客户端完成对服务器端控件的访问,由于ASP.NET会为把服务器端控件在客户端的呈现生成不同的名称,所以此功能比较有用获取。
注意采用此解决办法的前提: Asp.net的控件为静态控件(通过工具添加的控件)
问题三:动态创建控件的ClientID的获得存在:不能在页面中采用"<%=TextBox1.ClientID%>".方法获得(不能的方法,因为控件是动态创建的);也不能在页面脚本中采用TextBox1.ClientID的方法获得(获得的ID是不正确的)。
解决办法:
(CitySpecProductScheduledControl.ascx.cs代码片段 )
TextBox text = new TextBox();
text.MaxLength = 12;
text.Columns = 12;
text.Text = DateTime.Now.ToShortDateString();
text.ID = "dateId";
text.Attributes.Add("onclick", "calendar()");
text.Attributes.Add("class", "text");
HtmlImage dateimg = new HtmlImage();
dateimg.Src = "../CommonImages/cal.gif";
string js = string.Format("calendar({0}_{1})",this.ClientID, text.ClientID); //关键代码,按照客户端ClientID的产生规则手工生成。
dateimg.Attributes.Add("onclick", js); --------------------编程问答-------------------- 很好理解啊,就像你自己的身份证. --------------------编程问答-------------------- 他问的是winform吧,控件没有ID的好像,或者说ID只供其内部使用。 --------------------编程问答-------------------- winform里控件没有ID,是用Name属性表示ID的。 --------------------编程问答-------------------- 关于Name属性的MSDN:http://msdn.microsoft.com/zh-cn/library/system.windows.forms.control.name(v=VS.80).aspx --------------------编程问答-------------------- 说简单一点,Name就是你的身份证,是唯一的,而Text则像你的姓名,可以不写,也可以和别人重名重姓。 --------------------编程问答-------------------- id 90 身份证号
--------------------编程问答--------------------
+1 --------------------编程问答--------------------
+1
补充:.NET技术 , C#