如何在按钮上重新加载相同的页面单击,并使用数据库中的数据并忽略更改[英] How to reload the same page on a button click , with the data from database and ignoring the changes

问题描述

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

请帮助我.

谢谢!

推荐答案

此代码行是读取的URL,并将您重定向到与新帖子的同一页面.将其放在按钮上单击,在后面的代码上.

Response.Redirect(Request.RawUrl);

p.s.如果您只需发布帖子,输入控件将保持其数据,因此您需要从开头重新加载页面,重定向.如果您不进行重定向,则需要处理控件并清除它们.

额外您可以避免帖子回到服务器和往返服务器,并在客户端与JavaScript使用JavaScript代码(

)对OnClientClick="return ReloadPage();"进行操作
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;
}

上面的代码是在URL的末尾添加一个随机数,或者如果存在以避免在缓存上保持页面的情况下更新它.如果您完全准备好避免在缓存中保留页面,则可以使用额外的随机参数执行此操作.

其他推荐答案

您只能在事件处理程序中添加一个没有代码的提交按钮,这将触发页面加载,除了重新加载页面外,不会执行任何操作.

其他推荐答案

我建议您使用ViewState

保存DataTable
protected void Page_Load (object sender, EventArgs e)
{
    if(!isPostBack)
    {
        DataTable Dt = new DataTable();
        ProcessIt();//I assume you know better how to process your data)
        ViewState("Tbl") = Dt;
    } 

}

protected void BtnSave_Click (object sender, EventArgs e)
{
     SaveIt();//Save your changes first
     ViewState("Tbl") = Dt;//store back the datatable

}

protected void BtnCancel_Click (object sender, EventArgs e)
{
     DataTable Dt = ViewState["tbl"];
     GridView.DataSource = Dt;
     GridView.DataBind(); 
}

我希望这能为您提供想法!

本文地址:https://www.itbaoku.cn/post/1395128.html