当前位置: 代码迷 >> ASP.NET >> 心烦了,不同的.NET配备DataList中的绑定控件生成的HTML控件ID还不同啊
  详细解决方案

心烦了,不同的.NET配备DataList中的绑定控件生成的HTML控件ID还不同啊

热度:6623   发布时间:2013-02-25 00:00:00.0
心烦了,不同的.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 %>'> 获取
  相关解决方案