能否设置服务器控件的在客客户端的ID或Name
能否设置服务器控件的在客户端的ID或Name?
如我有个TextBox服务器控件ID= "txtName "在客户端中会生成 <input id= "ctl00$ContentPlaceHolder1$EditCategory1$txtName " name= "ctl00$ContentPlaceHolder1$EditCategory1$txtName "/> 我想生成为 <input id= "txtName " name= "txtName "/>
------解决方案--------------------ClinetID 是只读的
除非你自己重写控件
不过 不清除你为什么要这么做?
ctl00$ContentPlaceHolder1$EditCategory1$txtName
是为了体现层次关系 MS 故意真么做的 .NET 在postback的时候 要根据这个 精确定位你的元素。
------解决方案-------------------- <input id= "ctl00$ContentPlaceHolder1$EditCategory1$txtName " name= "ctl00$ContentPlaceHolder1$EditCategory1$txtName "/> 我想生成为 <input id= "txtName " name= "txtName "/>
==================================
因为在input控件外面的容器控件实现了命名容器接口,会自动给它的子控件命名成这种层次结构的名称.你不能更改的.你要想得到这个控件可以这样来得到
private void Repeater1_ItemDataBound(object sender, System.Web.UI.WebControls.RepeaterItemEventArgs e)
{
if( e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem )
{
DataList dlist = e.Item.FindControl( "dlist ") as DataList;//这个 dlist就是你的子控件
}
}
------解决方案--------------------同意楼上
虽然不可以改变控件的ID,但是你可以得到控件的ID和name
然后把这个ID或者name 自动写进javescript的源码里面,问题就解决了