asp.net 簡(jiǎn)單實(shí)現(xiàn)禁用或啟用頁(yè)面中的某一類(lèi)型的控件
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>
/// 控件枚舉,我們?cè)诮没騿⒂脮r(shí),就是根據(jù)這個(gè)枚舉來(lái)匹配合適的項(xiàng)
/// </summary>
public enum ControlNameEnum
{
Panel = 0, //容器 這個(gè)比較常用
TextBox = 1,
Button = 2, //這個(gè)也比較常用 比如 按鈕提交后的禁用,返回結(jié)果后啟用
CheckBox = 3,
ListControl = 4,
All = 100 //所有
}
public static class ControlHelper
{
#region 同時(shí)禁用或者啟用頁(yè)面的某些控件
/// <summary>
/// 設(shè)置是否啟用控件
/// </summary>
/// <param name="control"></param>
/// <param name="controlName"></param>
/// <param name="isEnable"></param>
public static void SetControlsEnabled(Control control, ControlNameEnum controlName, bool isEnabled)
{
foreach (Control item in control.Controls)
{
/* 我們僅僅考慮幾種常用的asp.net服務(wù)器控件和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;
}
}
//如果項(xiàng)目還有子控件,遞歸調(diào)用該函數(shù)
if (item.Controls.Count > 0)
{
SetControlsEnabled(item, controlName, isEnabled);
}
}
}
#endregion
}
}
在aspx頁(yè)面中的調(diào)用如下:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
ControlHelper.SetControlsEnabled(this.Page, ControlNameEnum.Panel, false); //Panel禁用
}
}
需要注意的是,我這里的實(shí)現(xiàn)只是針對(duì)幾種常用控件,您可以按照自己項(xiàng)目的需要任意擴(kuò)展。
測(cè)試打包下載
- ASP.NET:把a(bǔ)shx寫(xiě)到類(lèi)庫(kù)里并在頁(yè)面上調(diào)用的具體方法
- 遞歸輸出ASP.NET頁(yè)面所有控件的類(lèi)型和ID的代碼
- asp.net 數(shù)據(jù)訪問(wèn)層基類(lèi)
- Asp.net 字符串操作基類(lèi)(安全,替換,分解等)
- Asp.net 彈出對(duì)話框基類(lèi)(輸出alet警告框)
- Asp.net 時(shí)間操作基類(lèi)(支持短日期,長(zhǎng)日期,時(shí)間差)
- Asp.Net 通用數(shù)據(jù)操作類(lèi) (附通用數(shù)據(jù)基類(lèi))
- Asp.Net+XML操作基類(lèi)(修改,刪除,新增,創(chuàng)建)
- Asp.Net 文件操作基類(lèi)(讀取,刪除,批量拷貝,刪除,寫(xiě)入,獲取文件夾大小,文件屬性,遍歷目錄)
- asp.net實(shí)現(xiàn)非常實(shí)用的自定義頁(yè)面基類(lèi)(附源碼)
相關(guān)文章
.net實(shí)體類(lèi)與json相互轉(zhuǎn)換
這篇文章主要為大家詳細(xì)介紹了.net實(shí)體類(lèi)與json相互轉(zhuǎn)換的相關(guān)資料,感興趣的小伙伴們可以參考一下2016-07-07在ASP.NET Core中用HttpClient發(fā)送POST, PUT和DELETE請(qǐng)求
這篇文章主要介紹了在ASP.NET Core中用HttpClient發(fā)送POST, PUT和DELETE請(qǐng)求的方法,幫助大家更好的理解和學(xué)習(xí)使用ASP.NET Core,感興趣的朋友可以了解下2021-03-03ASP.NET MVC如何使用Unity實(shí)現(xiàn)Ioc詳解
這篇文章主要給大家介紹了關(guān)于ASP.NET MVC如何使用Unity實(shí)現(xiàn)Ioc的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-07-07在ASP.Net中實(shí)現(xiàn)flv視頻轉(zhuǎn)換的代碼
在ASP.Net中實(shí)現(xiàn)flv視頻轉(zhuǎn)換的代碼...2007-09-09asp.net(C#)防sql注入組件的實(shí)現(xiàn)代碼
經(jīng)常要寫(xiě)一些.net的程序,對(duì)于數(shù)據(jù)庫(kù)的防注入要求要比較高。這時(shí)我從網(wǎng)上搜了一些代碼。查看了一下主要是通過(guò)HTTPModel來(lái)進(jìn)行對(duì)客戶端轉(zhuǎn)過(guò)來(lái)的數(shù)據(jù)進(jìn)行處理。2009-12-12ASP.NET調(diào)用WebService服務(wù)的方法詳解
這篇文章主要介紹了ASP.NET調(diào)用WebService服務(wù)的方法,較為詳細(xì)的分析了WebService服務(wù)的功能,創(chuàng)建步驟與使用方法,需要的朋友可以參考下2016-05-05ASP.NET中各種連接數(shù)據(jù)庫(kù)的配置的方法及json數(shù)據(jù)轉(zhuǎn)換
本篇文章主要介紹了ASP.NET中各種連接數(shù)據(jù)庫(kù)的配置的方法,詳細(xì)的介紹了MSSQL、Access、Oracle、SQLite、MySQL數(shù)據(jù)庫(kù)配置,具有一定的參考價(jià)值,有興趣的可以了解一下。2017-01-01ASP.NE網(wǎng)站發(fā)布注意事項(xiàng)簡(jiǎn)析
ASP.NET網(wǎng)站部署到IIS中的關(guān)鍵點(diǎn),本文介紹了一些ASP.NE網(wǎng)站在發(fā)布是需要注意事項(xiàng),需要了解的朋友可以參考下2012-12-12微信公眾平臺(tái)開(kāi)發(fā)之處理圖片.Net代碼解析
這篇文章主要為大家詳細(xì)解析了微信公眾平臺(tái)開(kāi)發(fā)之處理圖片.Net代碼,感興趣的小伙伴們可以參考一下2016-06-06