Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net UpdatePanel中的Jquery UI对话框正在做奇怪的事情_Asp.net_Jquery_Asp.net Ajax_Updatepanel - Fatal编程技术网

Asp.net UpdatePanel中的Jquery UI对话框正在做奇怪的事情

Asp.net UpdatePanel中的Jquery UI对话框正在做奇怪的事情,asp.net,jquery,asp.net-ajax,updatepanel,Asp.net,Jquery,Asp.net Ajax,Updatepanel,我有一个DIV,其中有一个asp:repeater,它根据数据将信息放在这个DIV中。然后我使用Jquery的UI对话框通过单击按钮向用户显示数据。这一切都很顺利 因此,我希望能够将记录添加到填充中继器的数据中。我在屏幕的另一部分可以输入这些数据,并使用ajax调用将其保存到数据库中。这也很有效 然后,我想更新对话框中的数据,而不必向服务器进行完整的回发。所以,这通常很容易。我将我的div放入一个UpdatePanel中,并从Jquery启动一个doPostBack。然后刷新数据,这也可以顺利地

我有一个DIV,其中有一个asp:repeater,它根据数据将信息放在这个DIV中。然后我使用Jquery的UI对话框通过单击按钮向用户显示数据。这一切都很顺利

因此,我希望能够将记录添加到填充中继器的数据中。我在屏幕的另一部分可以输入这些数据,并使用ajax调用将其保存到数据库中。这也很有效

然后,我想更新对话框中的数据,而不必向服务器进行完整的回发。所以,这通常很容易。我将我的div放入一个UpdatePanel中,并从Jquery启动一个doPostBack。然后刷新数据,这也可以顺利地工作到某一点

完成_doPostBack后,div将不再隐藏。它现在显示在我的页面上(请记住更新的数据),但是我用来显示对话框的javascript现在不再工作

一些调查表明:

  • 在初始加载页面时,javascript会告诉jquery从div创建一个对话框,从表单上的任何位置获取div,并将其附加到body元素
  • 当更新面板发回时,div被重新创建,但是将其转换为对话框的javascript也不会再次执行(我可以理解……我们还没有完成页面的全部加载,所以javascript不会再次执行)
  • 这意味着div不再是一个“对话框”,而是我页面上的一个简单div,这不是我想要的
  • 因此,我的问题是:


    有没有一种方法可以在updatepanels回发后注入javascript,从而再次正确执行和创建对话框?

    解决方案是根本不使用Updatepanel,只使用通过jquery ajax调用接收的数据更改div的innerHTML。

    我找到了另一种解决方案。我将对话框初始化放在在名为SetupDialog的单独函数中创建脚本,而不是位于
    $(函数(){});
    块中

    然后,我在页面加载中使用了
    ScriptManager.RegisterStartupScript
    来注册脚本,以便每次更新面板更新时脚本都会运行:

    ScriptManager.RegisterStartupScript(this, GetType(), "SetupDialog", "SetupDialog();", true);
    

    在这种情况下,该对话框仅在更新了UpdatePanel之后才能工作。如果在此之前需要该对话框,则也可以在
    $(函数(){});
    块中调用SetupDialog。

    除非可以调用自定义函数,我不知道你怎么做。我们可以看到代码吗?我已经解决了这个问题。我没有使用updatepanel刷新我的网格内容,而是通过ajax调用返回HTML,并在插入完成后设置div的innerhtml。工作正常,不需要更新面板。谢谢,因为你从我的评论中可以看出,这正是我最终所做的。