数据保存后显示OK对话框,然后重定向到同一页面(或刷新)

时间:2015-02-23 15:41:53

标签: javascript jquery asp.net vb.net

我有一个aspx页面,允许用户编辑数据库记录上的数据。保存记录后,重定向会将您带回到同一页面。我想要的是一个带有“Record saved”的弹出窗口。在它和一个“确定”按钮。我意识到这是非常基本的,但弹出在保存之前发生,如果我只使用javascript(无论是在前面还是从代码隐藏),这意味着你在任何可能的错误之前得到一条保存消息,并且如果我没有弹出窗口使用我发现的大多数代码隐藏解决方案。例如,在我的页面中:

<ajaxToolkit:TabPanel runat="server" ID="JobPanel" HeaderText="Job Info">
    <ContentTemplate>
        <table>
            <tr>
                <td class="left_column" colspan="2">
                    <asp:Button ID="btnSave" OnClick="SaveAll" 
                        OnClientClick="setConfirmUnload(false);" 
                        runat="server" Text="Save" />
                </td>
            </tr>
        </table>
    </ContentTemplate>
</ajaxToolkit:TabPanel>

在我的代码隐藏中,我尝试过:

ScriptManager.RegisterStartupScript(Me, Me.GetType(), "popup", 
    "alert('Record saved successfully.');
    window.location='EditJob.aspx?
    JOBID='" & txtJobID.Text, True)

然后

Dim msg As String = "Job saved."
Dim script As String = "alert('" & msg & "');"
script += "window.location.href = 'EditJob.aspx?JOBID='" & txtJobID.Text
System.Web.UI.ScriptManager.RegisterClientScriptBlock(Me, Me.[GetType](), "saved", script, True)

然后

Response.Redirect("EditJob.aspx?JOBID=" & txtJobID.Text & "&MSSG=Job%20Saved")

在pre_render中使用:

If strMSSG <> "" Then
    ScriptManager.RegisterClientScriptBlock(Me, Me.GetType(), 
    "generateSuccess", "generate('Job Saved.', 'success', 'center');", True)
End If

这在aspx中:

function generate(text, type, layout) {
    var n = noty({
        text: text,
        type: type,
        dismissQueue: true,
        layout: layout,
        theme: 'defaultTheme',
        buttons: [
            {
                addClass: 'btn btn-primary', text: 'Ok', onClick: function ($noty) {
                    $noty.close();
                }
            }
        ]
    });
    console.log('html: ' + n.options.id);
}
//calls generator with success
function generateSuccess() {
    generate('Success', 'success', 'center');
}

我喜欢Noty的外观和感觉,我在这里的另一个问题的答案中找到了。但是如果我点击F5或刷新按钮,由于URL中的查询字符串,会再次显示noty。

我有一个可用的jquery弹出窗口,但我似乎无法在一个页面上获得多个。我只喜欢另一个jquery popup,但这不起作用。

非常感谢任何帮助。我对javascript或jquery一点都不好。

1 个答案:

答案 0 :(得分:1)

无需重定向回同一页面即可显示更新的数据。只需更新需要显示新数据的任何控件的数据源。

请记住

Request =&gt;过程数据=&gt;响应

请求进来,您处理数据,返回响应。不要使用大量重定向和在查询字符串中传递消息来解决整个问题,除非您有真正的理由这样做(例如,您希望将消息传递到另一个页面)。