-1

-テキストボックスがたくさんあるフォームがあります。-「クリア」をクリックすると、すべてをリセットするか、.Text 値を「 」に設定する必要があります。. " (Textbox1.text=""; ) " を 14 回または 15 回書く必要はありません。・必要以上に難しくしないでください。-asp.net 4.5 を使用しています。

4

6 に答える 6

1

階層の深いコンテナー コントロール上にあるかどうかに関係なく、親コントロール上の指定された型のすべての子コントロールを列挙するこの便利なメソッドがあります。

public List<T> FindControl<T>(Control holder) where T : Control
{
  var result = new List<T>();
  foreach (Control control in holder.Controls)
  {
    if (control is T)
      result.Add(control as T);
    result.AddRange(FindControl<T>(control));
  }
  return result;
}

したがって、あなたの場合、すべてのコントロールをPage_Load次のように取得できます。

var pageTextBoxes = FindControl<TextBox>(this);

でこれを行うと、Page_Loadこれが現在のページになり、ページ上のすべてのテキスト ボックスが取得されるので、クリアするだけです。

  foreach (var txtControl in pageTextBoxes)
  {
    txtControl.Text = "";
  }

TextBox ID が LeftControl で始まる場合など、さらに条件が必要な場合:

  foreach (var txtControl in pageTextBoxes.Where(tx => tx.ID.StartsWith("LeftControl")))
  {
    txtControl.Text = "";
  }
于 2013-10-18T18:23:24.453 に答える
0

次の 2 つの方法のいずれかを使用できます。

  1. HTMLリセットボタンを追加します。ボタンをクリックすると、値が最後の値に自動的にリセットされます

こちらをご覧ください http://www.w3schools.com/tags/tryit.asp?filename=tryhtml5_input_type_reset

  1. 最初のものはポストバック後に機能しませんが、サーバー側のコードを記述する代わりに JavaScript を使用してそれを行うことができます。次のメソッドを使用してフォームを渡すか、それに応じて変更できます。

http://www.javascript-coder.com/javascript-form/javascript-reset-form.phtml

于 2013-10-18T20:11:46.187 に答える
0

ページ上のすべてのコントロールをループして、テキスト ボックスであるコントロールをクリアすることができます。このようなものがあなたが始めるのに役立つかもしれません:

public void ClearTextBoxes(Control parent)
{
    foreach (Control c in parent.Controls)
    {
        if ((c.GetType() == typeof(TextBox)))
        {
            // Clear the text box
            ((TextBox)(c)).Text = "";
        }
    }
}

したがって、ボタンのクリック時にこの関数を呼び出すことができます。

ClearTextBoxes(this);
于 2013-10-18T18:01:12.623 に答える