2010-09-25 49 views
17

是否有简单的方法来重置表单中的所有字段?清除ASP.net表格中的所有字段

我在asp.net窗体中有大约100个控件,并且有提交和重置按钮。

当用户点击重置按钮时,如何使字段中的所有值为空?

我有很多下拉框,文本框,复选框。

+0

检查这里http://stackoverflow.com/questions/680241/blank -out-a-form-with-jquery – 2010-09-25 14:18:50

+1

@Claudio,OP询问如何在ASP.NET应用程序中重置表单的所有字段。没有提到关于jQuery和投票关闭这个答案,因为一个确切的重复似乎是错误的我。 – 2010-09-25 14:32:03

+0

@Darin Dimitrov:也许你是对的。假设每个人都在使用/愿意使用jquery(即使是现在)也可能太过于自命不凡。对不起,但我不能恢复我的投票,我知道。顺便说一句:我仍然认为输入类型重置可能会导致混淆。 – 2010-09-25 14:54:06

回答

13

遍历所有页面上的控件,如果控件是TextBox类型,设置Text属性的String.Empty

protected void ClearTextBoxes(Control p1) 
{ 
    foreach (Control ctrl in p1.Controls) 
    { 
     if(ctrl is TextBox) 
     { 
      TextBox t = ctrl as TextBox; 

      if(t != null) 
      { 
        t.Text = String.Empty; 
      } 
     } 
     else 
     { 
      if (ctrl.Controls.Count > 0) 
      { 
       ClearTextBoxes(ctrl); 
      } 
     } 
    } 
} 

然后调用它在点击事件是这样的:

ClearTextBoxes(Page); 
7

尝试添加:

<input type="reset" value="Clear" /> 

到表单中。

+4

到目前为止,我知道会将表单字段初始化为初始状态。如果texbox的初始状态是“HELLO”,它将重置为该值。我不认为这是用户需要的。 – 2010-09-25 14:16:54

17

这对取消按钮的服务器端处理程序添加:

Response.Redirect("~/mypage.aspx", false); 
+0

这将失去所有视图状态数据,这可能不合意。 – Tomasi 2010-09-26 04:09:30

+5

如果我们清除所有的字段,我们显然不需要首先保留ViewState ...我们只是重新加载页面,这是做这件事最简单的方法。他指定所有字段都被清除:-) – IrishChieftain 2010-09-26 04:45:01

+0

请问为什么你用第二个参数'true'调用重定向?你不愿意使用'false'来防止'AbortThreadException'吗? ([相关链接](https://blogs.msdn.microsoft.com/tmarq/2009/06/25/correct-use-of-system-web-httpresponse-redirect/)。) – 2018-02-02 10:55:08

7

可以使使用OnClientClick事件。这将重置表单上的所有控件。 OnClientClick="this.form.reset();return false;"

见代码:

<asp:Button ID="Reset_Button" runat="server" Text="Reset" 
    Width="81px" OnClientClick="this.form.reset();return false;" /> 
+0

它只在提交表单前工作。当我提交表格,然后如果我点击重置,表单不会被清除。 – 2013-06-03 13:44:06

+0

OnClientClick始终在服务器端代码之前调用,那么请在提交/ ????之前清空表单? – dnxit 2014-03-03 15:51:01

+0

这对我有用,但是如何在1页上清除所有表单,我有一个包含4种表单的页面,出于某种奇怪的原因,但我想要单击一下即可清除所有表单 – Anton 2016-03-16 07:49:02

1

如果您正在使用asp.net FormView的对象,只是在你的复位按钮点击事件中使用myFormView.DataBind();

4

从我身边最好的办法是

Response.Redirect(Request.RawUrl); 

刚上你的asp.net控制的取消或重新设置按钮添加该代码。

0

或者如果您正在使用Angular。

这对您的按钮添加CSHTML页:

<input type="button" value="Cancel" id="cancel" ng-click="cancel();" /> 

这对您的.js文件:

$scope.cancel = function() { 
    if (!$('form').dirtyForms('isDirty')) { 
     $('form').dirtyForms('setClean'); 
    } 
    else { 
     $('form').dirtyForms('isDirty', true); 
    } 
    var that = this; 
    var method = that.getUrl('CONTROLLER', 'ACTION', 'id', 'querystring'); 
    window.location = method;