關於ClIEntID的使用我遇到一下問題:
獲取由 ASP.Net 生成的服務器控件標識符。
問題一: 用戶控件的頁面JavaScript中需要使用ASP.Net的控件ID,出現不一致。
問題二:母版頁的子頁面JavaScript中需要使用ASP.Net的控件ID,出現不一致。
解決辦法:
document.getElementById("<%=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);
以上解決辦法經過1個小時的研究解決,並進行了測試沒有問題