jquery样式到转发器内的asp:按钮

时间:2011-08-17 14:22:24

标签: jquery asp.net repeater

这是一个有点难的问题

我有一个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工作正常,但是我无法捕获服务器端的按钮事件。

我该怎么办?

感谢您的帮助

4 个答案:

答案 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.