是否有一种方法可以重置asp:向导上后退按钮中的所有数据

本文关键字:向导 数据 asp 按钮 一种 方法 是否 | 更新日期: 2023-09-27 18:01:46

我有一个带有几个页面的<asp:Wizard>标记,每个步骤页面都有一个返回按钮,允许返回到上一个向导页面。

这引起了我的问题,因为这个流程:

  • 1 -例如用户在第3页;
  • 2 -他填写了一些数据,然后意识到他在第2页做了错误的选择;
  • 3 -点击返回,转到第2页;
  • 4 -修复了他的选择(第3页的数据现在不会有任何用处)
  • 5 -他点击下一步,转到第3页。这是我的问题。数据被持久化,当用户在第3页看到他的旧数据时。我怎么清除这个?

我是ASP新手。净WebForms。请帮帮我,我被这个困住了,甚至不知道如何处理它。但我假设我不需要手动重置所有字段!!

是否有一种方法可以重置asp:向导上后退按钮中的所有数据

Try

<asp:WizardStep ID="Step3" runat="server" Title="Step 3" EnableViewState="False">

有一些简单的方法可以重置WebForm中的所有字段。

  1. HTML重置按钮:

    input type="reset" value=" reset Form!"/>

  2. Javascript:
  3. function resetforms() {document.forms[0].reset(); return false;}
    
  4. 从代码后面调用相同的javascript:

     Page.ClientScript.RegisterStartupScript(this.GetType(), "MyScript", "document.forms[0].reset();return false;", true);
    

不幸的是,这三个将不工作的情况下,asp:向导,因为他们都重置控件的值在PostBack后,在ViewState持久

所以我发现最合适的选择是使用一个手工编码的递归方法,它将从向导的PreviousButtonClick事件处理程序调用:

    private void ClearInputs(ControlCollection ctrls)
    {
        foreach (Control ctrl in ctrls)
        {
            if (ctrl is TextBox)
                ((TextBox)ctrl).Text = string.Empty;
            else if (ctrl is DropDownList)
                ((DropDownList)ctrl).ClearSelection();
            else if (ctrl is CheckBox)
                ((CheckBox)ctrl).Checked = false;
            ClearInputs(ctrl.Controls);
        }
    }
    protected void YourWizardName_PreviousButtonClick(object sender, WizardNavigationEventArgs e)
    {
        ClearInputs(YourWizardName.WizardSteps[e.CurrentStepIndex].Controls);
    }

如果用户点击上一步按钮(在将用户转发到上一步之前),上面的方法将重置当前WizardStep的所有文本框、下拉列表和复选框。因此,如果您需要清除任何其他控件,您将不得不在ClearInputs()方法中添加适当的代码。

代码改编自这篇文章。在这里你可以找到更多关于这个方法如何工作的细节,以及使用jQuery解决相同任务的方法。