Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/327.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.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
C# 使用ASP.NET回发问题在JQuery对话框中加载动态数据_C#_Jquery_Asp.net - Fatal编程技术网

C# 使用ASP.NET回发问题在JQuery对话框中加载动态数据

C# 使用ASP.NET回发问题在JQuery对话框中加载动态数据,c#,jquery,asp.net,C#,Jquery,Asp.net,我很清楚我的问题以前被问过,也被讨论过,但是我已经读了无数遍了,没有一本能帮我解决问题。 我正在使用Visual studio、ASP.NET和C# 下面是我想要做的: 我有一个JQuery对话框,里面有一个标签。我还有一个按钮。 当按下该按钮时,我想跳入按钮的click事件,并在JQuery对话框中为标签设置文本。然后,我希望打开对话框,显示标签以及刚刚在按钮的单击处理程序中设置的文本 以下是我的JQuery对话框中应该包含的内容(注意,我已经简化了这个问题的代码): 这确实有效,但不是我想要

我很清楚我的问题以前被问过,也被讨论过,但是我已经读了无数遍了,没有一本能帮我解决问题。 我正在使用Visual studio、ASP.NET和C#

下面是我想要做的: 我有一个JQuery对话框,里面有一个标签。我还有一个按钮。 当按下该按钮时,我想跳入按钮的click事件,并在JQuery对话框中为标签设置文本。然后,我希望打开对话框,显示标签以及刚刚在按钮的单击处理程序中设置的文本

以下是我的JQuery对话框中应该包含的内容(注意,我已经简化了这个问题的代码):

这确实有效,但不是我想要的

我的问题是: 由于某些原因,标签的文本仅在我按下按钮的秒时设置。这意味着,当我第一次点击按钮时,对话框打开,没有显示任何内容,然后对话框消失,页面返回。第二次按下按钮时,我看到标签上的文本已经设置好,但是对话框立即消失,页面返回

我已尝试将以下内容添加到按钮:OnClientClick=“return false;” 当我这样做的时候,回发问题就消失了,但是现在我的按钮的点击事件没有触发

我还尝试将以下内容添加到脚本中:event.preventDefault();这会导致与返回false相同的问题;,页面不会回发,但不会跳转到按钮的单击事件中

以下是我的对话脚本:

<script>
 $(function () {

     $('#dialog').parent().appendTo($("form:first"))

     $("#dialog").dialog(
        {
            autoOpen: false,
            buttons: {
                "Ok": function () {
                    $(this).dialog("close");
                }
            }
                     } 

     );

     $("#testButton")
        .button()
        .click(function openConfirmDialog() {

            $("#dialog").dialog("open")


        });

 });
</script>

$(函数(){
$('#dialog').parent().appendTo($(“form:first”))
$(“#对话框”)。对话框(
{
自动打开:错误,
按钮:{
“Ok”:函数(){
$(此).dialog(“关闭”);
}
}
} 
);
$(“#测试按钮”)
.按钮()
。单击(函数openConfirmDialog(){
$(“对话框”)。对话框(“打开”)
});
});
基本上,我所要做的就是单击一个按钮来设置标签的文本,打开一个对话框,并保持该对话框打开,直到用户关闭它

我可能错过了一些东西,但看到像我想做的那样简单的事情是多么困难,我感到惊讶

亲切问候,,
Jane

您的标签已添加到表单中,无需将对话框添加到表单中。ASP.Net只接受放入
标记中的控件。

当通过单击按钮控件返回页面时,对话框将刷新并关闭。您需要实现一种方法,以便在使用中的数据发回页面时显示对话框

i:在第一步中,在代码隐藏处创建一个变量。e、 g

 protected string PostBackOption ="";
ii:在页面加载或页面预呈现事件中,当页面回发时,添加复选框以设置对话框选项文本。e、 g

if (Page.IsPostBack)
{
   PostBackOption = "$(\"#dialog\").dialog(\"open\");";
}
iii:现在在javascript中调用这个变量,如下所示

<script>
        $(function () {

            $('#dialog').parent().appendTo($("form:first"))

            $("#dialog").dialog(
                {
                    autoOpen: false,
                    buttons: {
                        "Ok": function () {
                            $(this).dialog("close");
                        }
                    }
                }

             );

                $("#<%= testButton.ClientID %>")
            .button()
            .click(function openConfirmDialog() {

                $("#dialog").dialog("open")


            });
            <%=PostBackOption %>
        });

$(函数(){
$('#dialog').parent().appendTo($(“form:first”))
$(“#对话框”)。对话框(
{
自动打开:错误,
按钮:{
“Ok”:函数(){
$(此).dialog(“关闭”);
}
}
}
);
$("#")
.按钮()
。单击(函数openConfirmDialog(){
$(“对话框”)。对话框(“打开”)
});
});


现在,当您单击“单击我”按钮时,页面将回发,回发后对话框将不会显示,标签将正确填充文本“hello”。

我创建了一个简单的示例,根据包含值的标签决定是否自动打开。由于页面刷新,对话框消失。如果希望消除整个页面的回发,可以使用UpdatePanel,或者可以执行以下操作:

HTML和jQuery: 输出:

您是否在使用UpdatePanel?我没有。。我不明白为什么我需要他们做我想做的事?你不需要。我通常会看到这个问题与部分回发和UpdatePanel有关。
$(“#dialog”).parent().appendTo($((“form:first”)
指的是什么?我没有看到可以解释这一点的标记。我阅读了LinkButton的MSDN参考,我的理解是LinkButton在设计时会在单击时导致回发到服务器。看来这不是你想要的?为什么不直接避免回发并使用jqueryajax调用服务器来检索文本呢?
 protected string PostBackOption ="";
if (Page.IsPostBack)
{
   PostBackOption = "$(\"#dialog\").dialog(\"open\");";
}
<script>
        $(function () {

            $('#dialog').parent().appendTo($("form:first"))

            $("#dialog").dialog(
                {
                    autoOpen: false,
                    buttons: {
                        "Ok": function () {
                            $(this).dialog("close");
                        }
                    }
                }

             );

                $("#<%= testButton.ClientID %>")
            .button()
            .click(function openConfirmDialog() {

                $("#dialog").dialog("open")


            });
            <%=PostBackOption %>
        });
<!DOCTYPE html>

<html>
<head runat="server">
    <meta charset="utf-8" />
    <title>jQuery Dialog Demo</title>
    <link rel="stylesheet" type="text/css" href="//ajax.aspnetcdn.com/ajax/jquery.ui/1.8.16/themes/cupertino/jquery-ui.css" />
</head>
<body>
    <form runat="server">
        <div id="dialog" title="Basic dialog" style="display: none;">
            <asp:Label ID="Label1" runat="server"></asp:Label>
        </div>
        <asp:LinkButton ID="testButton" runat="server" onClick="button_Click" text="click me"/>
    </form>

    <script type="text/javascript" src="//ajax.aspnetcdn.com/ajax/jquery/jquery-1.7.2.min.js"></script>
    <script type="text/javascript" src="//ajax.aspnetcdn.com/ajax/jquery.ui/1.8.16/jquery-ui.min.js"></script>
    <script type="text/javascript">
        var $labelText = $("#Label1").html().trim(),
            $dialog = $("#dialog").dialog({
                autoOpen: $labelText.length,
                buttons: { "Ok": function () { $(this).dialog("close"); } }
             });

         $("#testButton").button().click(function() { 
            if ($labelText.length) $dialog.dialog("open");
         });
    </script>
</body>
</html>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class test6 : System.Web.UI.Page
{
    protected void button_Click(object sender, EventArgs e)
    {
        Label1.Text = "Current time in ticks: " + DateTime.Now.Ticks.ToString();
    }
}