这是一个有点难的问题
我有一个asp:按钮,在转发器内
<asp:button id="tdb1" commandname="update" text=update runat=server ></asp:button>
在此按钮下有一个jquery行脚本,用于确定按钮的类。
像这样: <script type="text/javascript">
$("#<%=tdb1.ClientID%>").button({icons:{primary:"ui-icon-refresh"}}).addClass("ui-priority-secondary").parent().removeClass("tdbLink");
</script>
我从诽谤者那里得到错误:名称'tdb1'未被声明。
如果我将按钮更改为常规按钮(不是asp),则jquery工作正常,但是我无法捕获服务器端的按钮事件。
我该怎么办?
感谢您的帮助
答案 0 :(得分:3)
我使用.NET学到的一件事是,你最好使用类名来实现一切。使用ID会让你发疯,因为.NET希望拥有它们。
答案 1 :(得分:1)
这是因为代码tdb1.ClientID
正在寻找转发器之外的tdb1
控件。
正如@Diodeus所说,你最好使用ASP.NET jQuery的类,如:
<asp:button class='<%#String.Format("tdb_{0}", Container.ItemIndex)%>' id="tdb1" commandname="update" text="update" runat="server"></asp:button>
<script type="text/javascript">
$('<%#String.Format(".tdb_{0}", Container.ItemIndex)%>').button({icons:{primary:"ui-icon-refresh"}}).addClass("ui-priority-secondary").parent().removeClass("tdbLink");
</script>
答案 2 :(得分:0)
您无法找到该按钮,因为它嵌套在转发器中。您可以尝试在ItemDataBound中设置代码中的样式,或者您可以利用按钮的客户端onload事件。
答案 3 :(得分:0)
如果要访问所有按钮,请尝试:
<asp:button CssClass="foo" ... />
然后
$('#repeaterId .foo').button(...).addClass(...); // etc.