【问题标题】:Display jquery dialog on postback in ASP.NET after saving a new record保存新记录后在 ASP.NET 中回发时显示 jquery 对话框
【发布时间】:2011-04-14 17:38:39
【问题描述】:

我想做的是让用户向数据库添加一条新记录并弹出一个 JQuery 对话框,确认新记录已保存。我认为这将是一个简单的练习。我有一个绑定到 LINQDataSource 的 gridview 以允许用户查看和编辑现有记录以及一个文本框和一个按钮来添加新代码。

在文档的头部,我有以下内容:

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

在我拥有的标记中进一步向下:

<div id="dialog" title="New Code Added">
<p>"<asp:Literal runat="server" ID="LiteralNewCode"></asp:Literal>" was successfully added.</p>
</div>

所以当用户输入一个新的描述并且它通过所有的验证时,它被添加到数据库中并且gridview被重新显示以显示新的记录。

protected void ButtonSave_Click(object sender, EventArgs e)
{
    if (Page.IsValid)
    {
        CCRCode.Add( <long list of paramters> );
        GridCode.DataBind();

        IsNewCode = true;
        NewDescription = <new description saved to database>;
    }
}

现在,在这里(我想)我设置了一个布尔属性来指示已添加新描述以及新描述的文本。见下文:

protected bool IsNewCode
{
    get { return ViewState["IsNewCode"] != null ? (bool)ViewState["IsNewCode"] : false; }
    set { ViewState["IsNewCode"] = value; }
}

private string NewDescription
{
    get { return ViewState["NewDescription"] != null ? ViewState["NewDescription"].ToString() : string.Empty; }
    set { ViewState["NewDescription"] = value; }
}

这就是我失控的地方。我的猜测是我想添加功能以包含类似于以下内容的代码:

$('#dialog').dialog('open');

我在 page_load 事件中添加了一个 registerscriptblock 方法,但这不起作用。有任何想法吗?还是我完全错了?

谢谢。

【问题讨论】:

    标签: asp.net postback jquery-ui-dialog


    【解决方案1】:

    没有真正得到你想做的事。但是,我在我的项目中大量使用 jquery 和 .NET。这是我的做法,可能会给你一个提示。

    foo.aspx.cs

    public String ScriptToRun = "$('#dialog').dialog('open');";
    

    在您的 C# 代码中更改 ScriptToRun 的值

    foo.aspx

    $(document).ready(function() {<%=ScriptToRun %>});
    

    请记住,无论您在后端做什么,都会为浏览器生成 HTML、Css 和 javascript。

    【讨论】:

      【解决方案2】:

      两种方法:一,在您的服务器端代码中编写 javascript。或者,定义一个 JS 方法来显示对话框(比如名为 showDialog),并通过以下方式调用它:

      Page.ClientScript.RegisterStartupScript(... "showDialog();" ..);
      

      RegisterStartupScript 将方法调用放在最后,确保您的脚本在它之上才能工作。您也可以使用 document.ready 调用来包装它,以确保正确加载 JQuery。

      【讨论】:

        【解决方案3】:

        我认为你唯一想念的是在 Dom 准备好时创建对话框。

        $(document).ready(function() {$('#dialog').dialog('open');});
        

        【讨论】:

          【解决方案4】:

          我在另一个问题中为我编写的自定义“MessageBox”类发布了代码: ASP.NET Jquery C# MessageBox.Show dialog uh...issue

          该代码默认使用 javascript alert() 函数,但您可以定义回调,以便它调用您的自定义 javascript 方法来显示消息。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-07-24
            • 1970-01-01
            • 1970-01-01
            • 2013-04-10
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多