C# 使用ASP.NET回发问题在JQuery对话框中加载动态数据
我很清楚我的问题以前被问过,也被讨论过,但是我已经读了无数遍了,没有一本能帮我解决问题。 我正在使用Visual studio、ASP.NET和C# 下面是我想要做的: 我有一个JQuery对话框,里面有一个标签。我还有一个按钮。 当按下该按钮时,我想跳入按钮的click事件,并在JQuery对话框中为标签设置文本。然后,我希望打开对话框,显示标签以及刚刚在按钮的单击处理程序中设置的文本 以下是我的JQuery对话框中应该包含的内容(注意,我已经简化了这个问题的代码): 这确实有效,但不是我想要的 我的问题是: 由于某些原因,标签的文本仅在我按下按钮的秒时设置。这意味着,当我第一次点击按钮时,对话框打开,没有显示任何内容,然后对话框消失,页面返回。第二次按下按钮时,我看到标签上的文本已经设置好,但是对话框立即消失,页面返回 我已尝试将以下内容添加到按钮:OnClientClick=“return false;” 当我这样做的时候,回发问题就消失了,但是现在我的按钮的点击事件没有触发 我还尝试将以下内容添加到脚本中:event.preventDefault();这会导致与返回false相同的问题;,页面不会回发,但不会跳转到按钮的单击事件中 以下是我的对话脚本:C# 使用ASP.NET回发问题在JQuery对话框中加载动态数据,c#,jquery,asp.net,C#,Jquery,Asp.net,我很清楚我的问题以前被问过,也被讨论过,但是我已经读了无数遍了,没有一本能帮我解决问题。 我正在使用Visual studio、ASP.NET和C# 下面是我想要做的: 我有一个JQuery对话框,里面有一个标签。我还有一个按钮。 当按下该按钮时,我想跳入按钮的click事件,并在JQuery对话框中为标签设置文本。然后,我希望打开对话框,显示标签以及刚刚在按钮的单击处理程序中设置的文本 以下是我的JQuery对话框中应该包含的内容(注意,我已经简化了这个问题的代码): 这确实有效,但不是我想要
<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();
}
}