1
private void Focus(string sDomID)
{
RegScript("focus", "document.getElementById(\"" + sDomID + "\").focus();");
}
2
public void Select(TextBox txtBox)
{
string sScript = "var dom=document.getElementById(\"" + txtBox.ClientID + "\");if(dom){dom.select();}\n";
RegScript("Select", sScript);
}
注:
(1) 当使用母板(.MASTER)和用户控件(.ASCX)的时候,用户控件的页面JavaScript中需要使用Asp.net的控件ID,母版页的子页面JavaScript中需要使用Asp.net的控件ID
(2)\" 的意思是:因为写在后台的.js文件中,C#把 " 认识成标志其为字符串的一种方式,但是到JavaScript前台的时候将这个 " 给丢掉了,加一个 \ 转义字符,告诉C#编辑器,这个就是单单的 " ,这样到JavaScript前台中,就会被翻译成 " ,不会丢失了。
3
获取由 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);
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/heling0223/archive/2009/11/04/4765598.aspx