国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

asp.net 簡單實現禁用或啟用頁面中的某一類型的控件

2024-07-10 13:18:41
字體:
來源:轉載
供稿:網友
比如,我們在提交一個表單的時候,可能由于網絡或服務器的原因,處理很慢,而用戶在處理結果出來之前反復點擊按鈕提交。這樣很容易造成不必要的麻煩甚至是錯誤。說了這么多,其實就是要實現一個禁用某些控件的一種功能。好了,下面我就介紹自己簡單實現的這個小功能,貼代碼:

復制代碼 代碼如下:


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
namespace DotNet.Common.Util
{
/// <summary>
/// 控件枚舉,我們在禁用或啟用時,就是根據這個枚舉來匹配合適的項
/// </summary>
public enum ControlNameEnum
{
Panel = 0, //容器 這個比較常用
TextBox = 1,
Button = 2, //這個也比較常用 比如 按鈕提交后的禁用,返回結果后啟用
CheckBox = 3,
ListControl = 4,
All = 100 //所有
}
public static class ControlHelper
{
#region 同時禁用或者啟用頁面的某些控件
/// <summary>
/// 設置是否啟用控件
/// </summary>
/// <param></param>
/// <param></param>
/// <param></param>
public static void SetControlsEnabled(Control control, ControlNameEnum controlName, bool isEnabled)
{
foreach (Control item in control.Controls)
{
/* 我們僅僅考慮幾種常用的asp.net服務器控件和html控件 */
//Panel
if (item is Panel && (controlName == ControlNameEnum.Panel || controlName == ControlNameEnum.All))
{
((Panel)item).Enabled = isEnabled;
}
//TextBox,HtmlTextBox
if (controlName == ControlNameEnum.TextBox || controlName == ControlNameEnum.All)
{
if (item is TextBox)
{
((TextBox)(item)).Enabled = isEnabled;
}
else if (item is HtmlInputText)
{
((HtmlInputText)item).Disabled = isEnabled;
}
else if (item is HtmlTextArea)
{
((HtmlTextArea)(item)).Disabled = isEnabled;
}
}
//Buttons
if (item is Button && (controlName == ControlNameEnum.Button || controlName == ControlNameEnum.All))
{
if (item is Button)
{
((Button)(item)).Enabled = isEnabled;
}
else if (item is HtmlInputButton)
{
((HtmlInputButton)(item)).Disabled = !isEnabled;
}
else if (item is ImageButton)
{
((ImageButton)(item)).Enabled = isEnabled;
}
else if (item is LinkButton)
{
((LinkButton)(item)).Enabled = isEnabled;
}
}
//CheckBox
if (controlName == ControlNameEnum.CheckBox || controlName == ControlNameEnum.All)
{
if (item is CheckBox)
{
((CheckBox)(item)).Enabled = isEnabled;
}
else if (item is HtmlInputCheckBox)
{
((HtmlInputCheckBox)(item)).Disabled = !isEnabled;
}
}
//List Controls
if (controlName == ControlNameEnum.ListControl || controlName == ControlNameEnum.All)
{
if (item is DropDownList)
{
((DropDownList)(item)).Enabled = isEnabled;
}
else if (item is RadioButtonList)
{
((RadioButtonList)(item)).Enabled = isEnabled;
}
else if (item is CheckBoxList)
{
((CheckBoxList)(item)).Enabled = isEnabled;
}
else if (item is ListBox)
{
((ListBox)(item)).Enabled = isEnabled;
}
else if (item is HtmlSelect)
{
((HtmlSelect)(item)).Disabled = !isEnabled;
}
}
//如果項目還有子控件,遞歸調用該函數
if (item.Controls.Count > 0)
{
SetControlsEnabled(item, controlName, isEnabled);
}
}
}
#endregion
}
}


在aspx頁面中的調用如下:

復制代碼 代碼如下:


protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
ControlHelper.SetControlsEnabled(this.Page, ControlNameEnum.Panel, false); //Panel禁用
}
}


需要注意的是,我這里的實現只是針對幾種常用控件,您可以按照自己項目的需要任意擴展。
測試打包下載
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 武川县| 永胜县| 新建县| 永定县| 和田市| 红河县| 蓬莱市| 吴江市| 灵丘县| 深圳市| 额敏县| 玉山县| 台东县| 乳源| 景德镇市| 田东县| 交口县| 克山县| 从江县| 会宁县| 微博| 伽师县| 永登县| 台江县| 沅陵县| 玉环县| 宣武区| 华安县| 西和县| 怀宁县| 紫云| 永宁县| 宜兴市| 新邵县| 石泉县| 陇西县| 西宁市| 潮州市| 肃北| 高要市| 济阳县|