是否有一种方法可以重置asp:向导上后退按钮中的所有数据
本文关键字:向导 数据 asp 按钮 一种 方法 是否 | 更新日期: 2023-09-27 18:01:46
我有一个带有几个页面的<asp:Wizard>
标记,每个步骤页面都有一个返回按钮,允许返回到上一个向导页面。
这引起了我的问题,因为这个流程:
- 1 -例如用户在第3页;
- 2 -他填写了一些数据,然后意识到他在第2页做了错误的选择;
- 3 -点击返回,转到第2页;
- 4 -修复了他的选择(第3页的数据现在不会有任何用处)
- 5 -他点击下一步,转到第3页。这是我的问题。数据被持久化,当用户在第3页看到他的旧数据时。我怎么清除这个?
我是ASP新手。净WebForms。请帮帮我,我被这个困住了,甚至不知道如何处理它。但我假设我不需要手动重置所有字段!!
Try
<asp:WizardStep ID="Step3" runat="server" Title="Step 3" EnableViewState="False">
有一些简单的方法可以重置WebForm中的所有字段。
HTML重置按钮:
input type="reset" value=" reset Form!"/>
Javascript: function resetforms() {document.forms[0].reset(); return false;}
从代码后面调用相同的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解决相同任务的方法。