我有一个带有几页的<asp:Wizard>
标签,每个步骤页面都有一个返回按钮,可以返回上一个向导页面。
由于这个流程,这引起了我的问题:
我是ASP.NET WebForms的新手。请帮助,我坚持这个,甚至不知道如何接近它。但我认为我不需要手动重置所有字段!!!
答案 0 :(得分:0)
尝试
<asp:WizardStep ID="Step3" runat="server" Title="Step 3" EnableViewState="False">
<强>更新强>
有一些简单的方法可以重置WebForm中的所有字段。
HTML重置按钮:
input type =“reset”value =“重置表单!” /&GT;
使用Javascript:
function resetforms() {document.forms[0].reset(); return false;}
从代码隐藏中调用相同的javascript:
Page.ClientScript.RegisterStartupScript(this.GetType(), "MyScript", "document.forms[0].reset();return false;", true);
不幸的是,这三个在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解决相同任务的方法。