有没有办法重置asp中的所有数据:向后按钮?

时间:2011-07-08 15:17:28

标签: c# asp.net navigation reset web-controls

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

由于这个流程,这引起了我的问题:

  • 1 - 例如用户在第3页;
  • 2 - 他在填写第2页之前做出错误选择之前填写了一些数据;
  • 3 - 他点击Back并转到第2页;
  • 4 - 修复了他的选择(第3页中的数据现在没有任何用处)
  • 5 - 他点击下一步并转到第3页。这是我的问题。 数据已保留,在第3页中,用户会看到他的旧数据。我该如何清除这个?

我是ASP.NET WebForms的新手。请帮助,我坚持这个,甚至不知道如何接近它。但我认为我不需要手动重置所有字段!!!

1 个答案:

答案 0 :(得分:0)

尝试

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

<强>更新

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

  1. HTML重置按钮:

    input type =“reset”value =“重置表单!” /&GT;

  2. 使用Javascript:

    function resetforms() {document.forms[0].reset(); return false;}
    
  3. 从代码隐藏中调用相同的javascript:

     Page.ClientScript.RegisterStartupScript(this.GetType(), "MyScript", "document.forms[0].reset();return false;", true);
    
  4. 不幸的是,这三个在asp:Wizard中不起作用,因为它们都将控件重置为PostBack后ViewState中持久存在的值。

    所以我找到的最合适的选项是使用一个手动编码的递归方法,该方法将从Wizard的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()方法中添加适当的代码。

    代码改编自this帖子。在那里,您可以找到有关该方法如何工作的更多详细信息,以及使用jQuery解决相同任务的方法。