JQueryUI和ASP.NET UpdatePanel之间有冲突吗?有没有快速替代方案?

3

我只使用asp.net编程几个月,现在需要维护一个由多个aspx webforms和updatepanels组成的应用程序。

维护任务之一是集成一些JQueryUI小部件(主要是日期选择器、选项卡和按钮)。

当控件位于以下情况时,我会遇到一些问题:

  1. 位于update panel内
  2. 通常位于任何模板控件(例如Wizard控件)内

例如,这段非常简单的代码:

<script type="text/javascript">

$(document).ready(function() {

 $("#myTabs").tabs();

 $("[ID$=TextBox2]").datepicker();
 $("[ID$=btnOk]").button();

});
</script>

<div>
    Jquery UI controls inside a div (Tabs, datepicker and buttons)
    <br />
    <div id="myTabs">
     <ul>
      <li><a href="#myTabs-1">quick sample</a></li>
     </ul>
     <div id="p-tabs-1">
         <p>In this page there are a datepicker control and a button</p>
         <p>
         Please select a date :<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
         <br />
         <asp:Button ID="btnOk" runat="server" Text="Ok" OnClientClick="btnOk_Click" />
         </p>
     </div>
 </div>
</div>

如果将它放置在更新面板中,它将立即停止工作。

对于这个问题,是否有解决方案或者我需要采取完全不同的方法?我是否需要替换所有的更新面板?那么什么是最好的替代控件呢?

非常感谢 Lorenzo

2个回答

2

在采用Chuck的建议后,我遇到了一个JavaScript错误(Sys未定义)。在谷歌搜索后,我找到了这篇文章post,解决了我的问题。现在一切都正常啦! :)


0

你好!感谢您的建议。我已经尝试在示例中实现它,但它仍然无法正常工作。基本上,我创建了一个JavaScript函数(BindJQuery()),将先前在$(document).ready函数中的代码移动到其中。 然后,我在document.ready以及add_endRequest处理程序中调用了此函数。这是一种错误的方法吗? - Lorenzo
不,代码就是我发布的那样。我省略了只有一个ContentPlaceholder的母版页。 - Lorenzo
@ Chuck, 如果我有嵌套的UpdatePanel该怎么办?请给我一些建议,我遇到了类似的问题。 - Devjosh
@Devjosh,更新面板会清除更新面板内的所有JavaScript引用。您需要重新注册所有事件/插件。 - Chuck Conway
@Chuck Conway谢谢,我使用了JavaScript结束请求处理程序再次引用JavaScript,但仍然无法正常工作,但是当有完整的后台提交时,jQuery UI选项卡和对话框可以正常工作。 - Devjosh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接