首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> ASP.NET 基礎

ASP.NET 依控制項類型彈性清空表單欄位值

     編輯:ASP.NET 基礎

需求場景

頁面包含大量 TextBox、DropDownList、RadioButtonList 等控制項,需提供「重置」功能,並能依業務需求指定清空哪些類型。

設計:列舉定義清空類型

public enum ReSetType
{
    TXT,  // TextBox
    DDL,  // DropDownList
    RBL,  // RadioButtonList
    ALL   // 全部
}

核心遞迴清空方法

public static void ReSet(Control control, params ReSetType[] rst)
{
    bool doTxt = false, doDdl = false, doRbl = false;

    foreach (var type in rst)
    {
        if (type == ReSetType.ALL) { doTxt = doDdl = doRbl = true; break; }
        if (type == ReSetType.TXT) doTxt = true;
        else if (type == ReSetType.DDL) doDdl = true;
        else if (type == ReSetType.RBL) doRbl = true;
    }

    foreach (Control c in control.Controls)
    {
        if (doTxt && c is TextBox txt) txt.Text = "";
        else if (doDdl && c is DropDownList ddl)
        {
            if (ddl.Items.Count > 0) ddl.SelectedIndex = 0;
        }
        else if (doRbl && c is RadioButtonList rbl) rbl.SelectedIndex = -1;
        else if (c.HasControls()) ReSet(c, rst); // 遞迴處理子控制項
    }
}

使用範例

// 清空所有 TextBox 與 DropDownList
ReSet(this.Page, ReSetType.TXT, ReSetType.DDL);

// 清空全部支援類型
ReSet(this.Page, ReSetType.ALL);

// 僅清空 RadioButtonList
ReSet(this.Panel1, ReSetType.RBL);

擴充建議

  • 加入 CheckBoxList、ListBox、HiddenField 等類型至列舉。
  • 支援自訂介面 IResettable,讓使用者控制項自行實作 Reset()。
  • 搭配 JavaScript 前端重置,減少 PostBack。

注意事項

  1. 遞迴會遍歷整個控制項樹,大型頁面效能需留意。
  2. DropDownList 重置為 SelectedIndex = 0,若第一項非預設值,建議改設 ClearSelection() 再手動選預設項。
  3. RadioButtonList.SelectedIndex = -1 可取消所有選取。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved