日期:2014-05-17  浏览次数:20413 次

心烦了,不同的.NET配置DataList中的绑定控件生成的HTML控件ID还不同啊!!!
用下面的DataList绑定一个TextBox
<asp:DataList RepeatColumns="5" ID="DLChinese" Visible="false" runat="server" CellPadding="0" CellSpacing="40" ItemStyle-HorizontalAlign="left">
  <ItemTemplate>
  <asp:TextBox runat="server" ID="txtInput" /></span>
  </ItemTemplate>
  <ItemStyle HorizontalAlign="Left" />
  </asp:DataList>

页面执行后:
在空间服务器上是这样的HTML代码
<input name="DLChinese$ctl00$txtInput" type="text" id="DLChinese_txtInput_0" />
在我的本机上是这样的HTML代码
 <input name="DLChinese$ctl05$txtInput" type="text" id="DLChinese_ctl05_txtInput" />

FUCK,ID变了!!!!!
那不是客户端用到javascript getElementById函数的代码全部都出错了,怎么会这样?!!

------解决方案--------------------
是不用了。 模板页的喃。

你可以用jquery。 获取ID 三。 

很方便的。

EG: $("*txtInput")
------解决方案--------------------
建议LZ还是用jquery来操作你的asp.net控件
jQuery.clientID('txtInput'); 这个用来直接根据ID来获取控件
当然LZ也可以用
$(".txtInput") 该txtinput是你的控件的class名称

还有LZ要记住,ID在web页面上都是唯一的,像datalist控件循环输出来的ID当然要不同了,为了保证了能获取这种 还是推荐使用class来获取
------解决方案--------------------
DataList 会显示很多行,每行都有input ,你直接getElementById,你觉得应该得到哪一个呢?

传id,使用txtInput.ClientID从后台传
------解决方案--------------------
可以在后台获取 input的值,要么 document.getElementById('<%=TextBox1.ClientID %>'> 获取
------解决方案--------------------
document.getElementById('<%=TextBox1.ClientID %>'> 获取