我们在提交一个表单的时候,可能由于网络或服务器的原因,处理很慢,而用户在处理结果出来之前反复点击按钮提交。这样很容易造成不必要的麻烦甚至是错误。说了这么多,其实就是要实现一个禁用某些控件的一种功能。好了,下面我就介绍自己简单实现的这个小功能。
<div class="codetitle" style="border-left-color: rgb(0, 153, 204); border-left-width: 1px; border-left-style: solid; padding: 0px 3px; margin: 3px auto 0px; width: 640px; clear: both; font-size: 14px; border-top-color: rgb(0, 153, 204); border-top-width: 1px; border-top-style: solid; border-right-color: rgb(0, 153, 204); border-right-width: 1px; border-right-style: solid; line-height: 25.2000007629395px; font-family: Tahoma, Helvetica, Arial, 宋体, sans-serif; background: rgb(242, 246, 251);">代码如下:</div><div class="codebody" id="code97423" style="border: 1px solid rgb(0, 153, 204); padding: 0px 3px 0px 5px; margin: 0px auto 3px; width: 638px; clear: both; font-size: 14px; line-height: 25.2000007629395px; font-family: Tahoma, Helvetica, Arial, 宋体, sans-serif; background: rgb(221, 237, 251);">
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 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服务器控件和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 

} </div>

在aspx页面中的调用如下:

复制代码代码如下:


protected void Page_Load(object sender, EventArgs e) 



if (!IsPostBack) 



ControlHelper.SetControlsEnabled(this.Page, ControlNameEnum.Panel, false); //Panel禁用 



asp.net 简单实现禁用或启用页面中的某一类型的控件的更多相关文章

  1. 在asp.net页面上按回车会触发Imagebutton控件的Click事件

    原文:在asp.net页面上按回车会触发Imagebutton控件的Click事件 问题: 用asp.net做的aspx页面,无论是否有文本框.下拉框.复选框……获得焦点,只要在当前页面上按一下回车就 ...

  2. ASP.NET中页面加载时文本框(texbox控件)内有文字获得焦点时文字消失

    代码如下: <asp:TextBox ID="TextBox1" runat="server" Height="26px" MaxLe ...

  3. ASP.NET MVC页面UI之联动下拉选择控件(省、市、县联动选择)

    地区选择操作在WEB应用中比较常见的操作,本文在.net mvc3下实现了省市县三级联动选择功能. 本文博客出处:http://www.kwstu.com/ArticleView/admin_2013 ...

  4. ASP.NET中共有哪几种类型的控件?其中,HTML控件、HTML服务器控件和WEB服务器控件之间有什么区别

    ASP.NET的控件包括WEB服务器控件.WEB用户控件.WEB自定义控件.HTML服务器控件和HTML控件.HTML控件.HTML服务器控件和WEB服务器控件之间的区别如下所示.q      HTM ...

  5. ASP.NET中的FileUpload文件上传控件的使用

    本篇文章教大家如何将客户端的图片或者文件上传到服务器: 无论是上传图片(.jpg .png .gif等等) 文档(word excel ppt 等等). 第一步:放入以下三个控件 Image控件,Fi ...

  6. ASP.NET中多个相同name的控件在后台正确取值

    有兽,   页面上可能有多个相同name的Html表单控件,   一般在后台使用Request.Form[“name”]取值,并用‘,’分隔.   但是当值中包含逗号时,   取值就会出现异常,   ...

  7. .net mvc页面UI之Jquery博客日历控件

    摘要:最近在做一个博客系统,其他需要用到博客日历控件,网上搜索了很多资料,其中大部分都是javascript的,经过总结使用jquery实现了博客日历效果.代码如下: 原文链接转载请注明:http:/ ...

  8. IOS中UITextView(多行文本框)控件的简单用法

    1.创建并初始化 UITextView文本视图相比与UITextField直观的区别就是UITextView可以输入多行文字并且可以滚动显示浏览全文.UITextField的用处多,UITextVie ...

  9. python简单爬虫 用lxml解析页面中的表格

    目标:爬取湖南大学2018年在各省的录取分数线,存储在txt文件中 部分表格如图: 部分html代码: <table cellspacing="0" cellpadding= ...

随机推荐

  1. C#学习笔记1:正则表达式和数据库连接

    1.using System.Text.RegularExpressions; 只有导入该命名空间,才能引入Regex对象,IsMatch是Regex中的一个方法,作用是来判断(输入)内容是否满足正则 ...

  2. Java与Android开发环境配置以及遇到的问题解决

    0 概述 所有文章涉及的下载地址在文章下方会有汇总,所有软件的版本最好与系统版本一致 建议安装安卓开发软件至一个目录中,以方便查找 1 Java环境配置 1.1 JDK下载: 据说JDK6用的比较多, ...

  3. 初试zabbix

    一.zabbix简介    zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案.       zabbix由zabbix server与可选组件zabbix a ...

  4. zxing.dll生成条码

    引入zxing.dll using System; using System.Drawing; using ZXing.QrCode; using ZXing; using ZXing.Common; ...

  5. 为 Date 对象添加 ago 属性

    /* * 此处,__defineGetter__与__defineSetter__相当于C#实体中类中的get与set **/ Date.prototype.__defineGetter__('ago ...

  6. Java编程思想读书笔记--第21章并发

    1.基本的线程机制 定义任务 public class LiftOff implements Runnable{ protected int countDown = 10; private stati ...

  7. 04_SSM框架整合(Spring+SpringMVC+MyBatis)

    [SSM的系统架构] [整合概述] 第一步: MyBatis和Spring整合,通过Spring管理mapper接口. 使用mapper的扫描器自动扫描mapper接口在Spring中进行注册. 第二 ...

  8. android开发之GenyMotion与intelliJ的配置

    (注意:这是在你的电脑上安装了intelliJ和安卓SDK后才进行的工作,如果没有intelliJ和安卓SDK,请先安装以上两样东西) 号称史上最快乐的模拟器GenyMotion,试一下. 第一步:下 ...

  9. PHP学习笔记——上传文件到服务端的文件夹下

    环境 开发包:appserv-win32-2.5.10 服务器:Apache2.2 数据库:phpMyAdmin 语言:php5,java 平台:windows 10 需求 编写一个PHP脚本页面,可 ...

  10. [翻译][MVC 5 + EF 6] 12[完结]:高级场景

    原文:Advanced Entity Framework 6 Scenarios for an MVC 5 Web Application 1.执行原生SQL查询: EF Code First API ...