代码之家  ›  专栏  ›  技术社区  ›  Andy Evans

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

  •  1
  • Andy Evans  · 技术社区  · 14 年前

    我想做的是让用户向数据库添加一条新记录,并弹出一个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\u load事件中添加了registerscriptblock方法,但是没有起作用。有什么想法吗?还是我完全错了?

    谢谢。

    4 回复  |  直到 14 年前
        1
  •  2
  •   jebberwocky    14 年前

    没有真正得到你想要的。但是,我在我的项目中使用了很多jquery和.NET。我是这样做的,也许能给你一个提示。

    foo.aspx.cs文件

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

    更改C代码中Scriptorun的值

    食品.aspx

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

        2
  •  2
  •   Brian Mains    14 年前

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

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

    RegisterStartupScript将方法调用放在末尾,确保您的脚本在其上方才能工作。你也可以把它包起来文件准备就绪调用,以确保JQuery已正确加载。

        3
  •  0
  •   Aristos    14 年前

    我认为您唯一错过的是在Dom就绪时创建对话框。

    $(document).ready(function() {$('#dialog').dialog('open');});
    
        4
  •  0
  •   Community CDub    8 年前

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

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