保存新记录后,在ASP.NET中回发时显示jquery对话框

时间:2010-09-20 14:53:00

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

我想要做的是让用户向数据库添加一条新记录并弹出一个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>

因此,当用户输入新的描述并通过所有验证时,它会被添加到数据库中并且网格视图会被反弹以显示新记录。

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方法但是没有用。有任何想法吗?或者我只是完全错了?

感谢。

4 个答案:

答案 0 :(得分:2)

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

foo.aspx.cs

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

在C#代码中更改ScriptToRun的值

foo.aspx

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

请记住,无论你在后端做了什么,都会生成HTML,Css&amp; javascript到浏览器。

答案 1 :(得分:2)

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

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

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

答案 2 :(得分:0)

我认为唯一的想法就是在Dom准备就绪时创建对话框。

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

答案 3 :(得分:0)

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

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