如何在按钮单击时重新加载同一页面,使用数据库中的数据并忽略更改

War*_*ior 9 asp.net

我有一个带有转发器控件的aspx页面用于显示数据.用户可以修改转发器内的数据,但是在点击SAVE按钮之前数据不会被保存.我的页面上还有一个UNDO按钮.如果用户单击此按钮,我想重新加载页面并丢弃用户所做的更改(类似于MS Office中的UNDO功能)我需要向他显示第一次加载页面时显示的相同数据.

请帮助我.

谢谢 !

Ari*_*tos 12

这个核心按原样读取,并将你重定向到同一页面,不带新帖子.将它放在按钮上,在后面的代码上.

Response.Redirect(Request.RawUrl);
Run Code Online (Sandbox Code Playgroud)

PS如果您只是发帖,输入控件将保留其数据,因此您需要使用重定向从头开始重新加载页面.如果您不进行重定向,则需要处理控件并清除它们.

另外,您可以避免回发和往返服务器,并在客户端使用javascript调用OnClientClick="return ReloadPage();"javascript代码执行相同的操作:

function  ReloadPage()
{
    top.location.replace( updateURLParameter(document.location.href, "_rnd", Math.random()) );
    return false;
}
//
// this function is an improved version of
// http://stackoverflow.com/a/10997390/159270
//
function updateURLParameter(url, param, paramVal)
{
    var TheAncor = null;
    var newAdditionalURL = "";
    var tempArray = url.split("?");
    var baseURL = tempArray[0];
    var additionalURL = tempArray[1];
    var temp = "";

    if (additionalURL) 
    {
        var tmpAncor = additionalURL.split("#");
        var TheParams = tmpAncor[0];
            TheAncor = tmpAncor[1];
        if(TheAncor)
            additionalURL = TheParams;

        tempArray = additionalURL.split("&");

        for (i=0; i<tempArray.length; i++)
        {
            if(tempArray[i].split('=')[0] != param)
            {
                newAdditionalURL += temp + tempArray[i];
                temp = "&";
            }
        }        
    }
    else
    {
        var tmpAncor = baseURL.split("#");
        var TheParams = tmpAncor[0];
            TheAncor  = tmpAncor[1];

        if(TheParams)
            baseURL = TheParams;
    }

    if(TheAncor)
        paramVal += "#" + TheAncor;

    var rows_txt = temp + "" + param + "=" + paramVal;
    return baseURL + "?" + newAdditionalURL + rows_txt;
}
Run Code Online (Sandbox Code Playgroud)

上面的代码是在url的末尾添加一个随机数,或者如果存在则更新它以避免将页面保留在缓存中.如果您都准备避免将页面保留在缓存中,则可以使用额外的随机参数执行相同操作.