asp.net简单实现禁用或启用页面中的某一类型的控件

最近在一个winform项目中碰到的一个功能,勾选一个checkbox后窗体中的其他控件不可用。由此想到asp.net项目中有时候也要用到这种功能。比如,我们在提交一个表单的时候,可能由于网络或服务器的原因,处理很慢,而用户在处理结果出来之前反复点击按钮提交。这样很容易造成不必要的麻烦甚至是错误。说了这么多,其实就是要实现一个禁用某些控件的一种功能。好了,下面我就介绍自己简单实现的这个小功能,贴代码:
ContractedBlock.gif ExpandedBlockStart.gif Code
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
    }
}
在aspx页面中的调用如下:
ContractedBlock.gif ExpandedBlockStart.gif Code
        protected void Page_Load(object sender, EventArgs e)
        {
            
if (!IsPostBack)
            {
                ControlHelper.SetControlsEnabled(
this.Page, ControlNameEnum.Panel, false); //Panel禁用
            }
        }
需要注意的是,我这里的实现只是针对几种常用控件,您可以按照自己项目的需要任意扩展。
demo下载: demo
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
第2章 ASP.NET运行模型 <br>21.如何在页面应用javascript脚本-示例1 <br>21.如何在页面应用javascript脚本-示例2 <br>22.如何实现从服务器端向页面动态添加javascript脚本-示例1 <br>22.如何实现从服务器端向页面动态添加javascript脚本-示例2 <br>24.如何处理多页面重定向到同一页面后的返回问题 <br>25.如何用Response.Redirect方法传递汉字 <br>29.如何利用输出缓存技术缓存整个页面 <br>30.如何利用片段缓存技术对用户控件进行缓存 <br>31.如何利用数据缓存技术提高程序的性能 <br>33.如何实现页面产生错误时重定向到自定义错误界面 <br>35.如何在程序读写Web.config文件 <br>37.如何使用CSS文件定义控件的样式 <br>38.如何启用禁用ViewState保存状态信息的功能 <br>39.如何应用IsPostBack控制页面的加载 <br>41.如何使用Trace对象进行跟踪调试(页面级) <br>42.如何使用#Include语法将文件添加到页面 <br>43.如何使用编程的方式处理异常信息 <br>44.如何将网页错误信息写入事件日志 <br> 第3章 常用Web服务控件 <br>46.如何使用Label控件动态显示文本信息 <br>47.如何实现当鼠标移到控件时显示提示信息 <br>48.如何在Web应用程序实现快捷键功能(使用脚本实现) <br>48.如何在Web应用程序实现快捷键功能(使用属性实现) <br>49.如何设置页面控件的Tab键顺序 <br>50.如何实现用回车键代替Tab键的功能 <br>51.如何为按钮键添加消息框 <br>52.Button、LinkButton和ImageButton服务控件的区别及应用 <br>54.如何使用CheckBox和CheckBoxList控件(CheckBox示例) <br>54.如何使用CheckBox和CheckBoxList控件(CheckBoxList示例) <br>55.如何使用RadioButton和RadioButtonList控件(RadioButton示例) <br>55.如何使用RadioButton和RadioButtonList控件RadioButtonList示例) <br>56.如何使用Panel控件操作一组控件 <br>57.如何使用Table控件组织页面的内容 <br>58.如何实现DropDownList控件选项的添加、删除等操作 <br>59.如何实现间接改变DropDownList控件的当前选项 <br>60.如何实现两个或多个DropDownList控件的联动 <br>61.如何实现ListBox控件选项的上移、下移、添加和删除操作 <br>62.如何实现ListBox控件选项的双击事件 <br>63.如何动态设置ListBox控件各选项的背景颜色 <br>64.如何在页面动态创建控件 <br>65.如何为HTML服务器控件的事件添加自定义方法 <br> 第4章 验证控件 <br>67.如何使用RequiredFieldValidator控件验证用户是否输入信息 <br>68.如何使用RegularExpressionValidator控件验证E-mail地址和邮编等格式 <br>69.如何使用RangeValidator控件验证输入的信息是否在指定范围内 <br>70.如何使用CompareValidator控件对两个输入控件比较验证 <br>71.如何使用CustomValidator控件自定义验证格式 <br>72.如何使用ValidationSummary控件总结所有验证控件的错误信息 <br>73.如何创建自定义功能的验证控件 <br>74.如何禁用服务器控件的验证功能 <br>75.如何控制页面部分验证控件有效 <br>76.如何实现控件即时验证功能 <br>77.如何使用验证控件综合验证用户注册页面 <br>78.如何验证DataGrid控件的编辑列 <br>81.如何使用验证控件验证日期类型的输入(CompareValidator) <br>81.如何使用验证控件验证日期类型的输入(CustomerValidator) <br>81.如何使用验证控件验证日期类型的输入(RegularValidator) <br> 第5章 高级Web控件 <br>82.如何在网页使用Calendar Web控件显示和选择日期 <br>83.如何在Calendar Web控件控制个别日的内容及显示 <br>84.如何在Calendar Web控件控制用户日期选定 <br>86.如何使用XML控件显示XML文件和进行XSLT转换 <br>87.如何使用AdRotator Web控件制作广告发布程序-示例1 <br>87.如何使用AdRotator Web控件制作广告发布程序-示例2 <br>88.如何创建用户控件 <br>89.如何将Web窗体转换成用户控件 <br>90.如何实现动态加载用户控件 <br>92.如何使用TabStrip Web和MultiPage Web控件制作选项卡式页面 <br>93.如何使用Toolbar Web控件制作工具条式页面 <br>94.如何识别Toolbar Web控件哪个按钮激发的ButtonClick事件 <br>95.如何使用TreeView Web控件 <br>96.如何在TreeView Web控件动态添加、删除TreeNode节点 <br>100.如何使用TreeView Web控件的TreeNodeType进行外观控制 <br>101.如何使用TreeView Web控件绑定XML文件-示例1 <br>101.如何使用TreeView Web控件绑定XML文件-示例2 <br> 第6章 数据服务控件 <br>103.如何使用Repeater控件显示数据 <br>104.如何使用Repeater控件的模板 <br>105.如何实现Repeater控件的分页 <br>106.如何使用DataList控件显示数据 <br>107.如何实现选择DataList控件的条目后显示该条目的详细信息 <br>108.如何实现DataList控件的编辑功能 <br>109.如何对DataList控件使用样式 <br>110.如何在DataList控件创建多个列 <br>111.如何实现DataList控件的分页功能 <br>112.如何在DataGrid添加自动编号的功能 <br>113.如何控制DataGrid绑定列绑定的数据类型为日期的显示格式 <br>114.如何把DataGrid某一列的统计值显示在页脚 <br>115.如何在DataGrid让不同条件的行显示不同的背景颜色 <br>116.如何在DataGrid实现分页功能 <br>117.如何实现鼠标移到DataGrid控件的某一行时改变该行的背景 <br>118.如何在DataGrid控件实现自定义分页功能 <br>119.如何在DataGrid弹出一个详细信息窗口-示例1 <br>119.如何在DataGrid弹出一个详细信息窗口-示例2 <br>120. 如何在DataGrid控件添加CheckBox控件列 <br>121.如何为DataGrid控件的删除列添加确认框 <br>122.如何使用DataGrid控件实现主细表 <br>123.如何实现DataGrid控件的双向排序 <br>124.如何动态的显示·隐藏DataGrid控件的某一列 <br>125.如何实现DataGrid控件DropDownList控件的绑定 <br>126.如何在DataGrid控件实现数据项的编辑、更新、取消 <br>127.如何在DataGrid控件删除最后一页的最后一记录 <br>128.如何把数据库的数据以Excel文件的格式在显示浏览器 <br>129.如何给DataGrid控件添加个标题并实现分类显示 <br>130.如何实现DataGrid控件DropDownList控件的联动 <br>131.DataGrid控件使用综合举例 <br> 第7章 数据绑定技术 <br>132.如何单值绑定到控件的属性 <br>133.如何将DataTable绑定到DataGrid Web控件 <br>134.如何将DataSet绑定到DataGrid Web控件 <br>135.如何将DataView绑定到DataGrid Web控件 <br>136.如何将DataReader绑定到DataGrid Web控件 <br>137.如何将表的列绑定到DropDownList Web控件 <br>138.如何使用DataBinder.Eval()方法进行数据绑定 <br>139.如何将ArrayList绑定到ListBox Web控件 <br>140.如何将Hashtable绑定到RadioButtonList Web控件 <br>141.如何将XML作为数据源绑定到控件 <br> 第8章 数据库设计 <br>143.ASP.NET应用程序如何实现与SQL Server数据库的连接<br>144.ASP.NET应用程序如何实现与ACCESS数据库的连接 <br>146.如何使用ADO.NET在数据库执行SQL语句 <br>147.如何使用DataReader快速访问SQL Server数据 <br>148.如何使用DataAdapter将数据填充到DataSet并显示出来 <br>149.如何使用DataTable对象存储数据库表 <br>150.如何对DataTable进行检索和排序 <br>151.如何使用DataView进行数据排序和检索 <br>152.如何在DataSet的DataTable间建立父子表关系 <br>154.如何实现SQL Server数据库操作的异常捕捉和处理 <br>155.如何将数据库的数据填充到XML文件 <br>157.如何使用Web.config配置数据库连接字符串 <br>161.如何编写访问数据库的通用代码 <br>162.如何在SQL Server数据库编程获取用户表的数目和名称 <br>163.如何获取SQL Server服务器端所有数据库列表 <br>164.如何保存图片文件到SQL Server数据库 <br>165.如何将数据库保存的图片显示到页面 <br>166.如何在插入记录后获得记录的标识号 <br>167.如何解决ADO.NET访问ACCESS数据库出现“操作必须使用一个可更新的查询”的问题<br>168.如何从EXCEL文件读取数据 <br>169.如何备份和恢复数据库 <br> 第9章 ASP.NET安全策略 <br> 第10章 常用功能及函数集 <br>180.如何在ASP.NET获得客户端IP地址 <br>181.如何取得一定范围内的随机数 <br>182.如何取得文件的扩展名示例一 <br>182.如何取得文件的扩展名示例二 <br>183.如何把字符串型数据转换为整型 <br>184.如何取得当前系统时间 <br>185.如何取得指定的年份有多少天 <br>186.如何取得客户端的鼠标坐标并反馈到服务器端 <br>187.如何使用JMAIL组件实现邮件的发送 <br>187.如何使用JMAIL组件实现邮件的接收 <br>188.如何使用ASP.NET的类库实现邮件的发送 <br>189.如何生成图片的缩略图 <br>190.如何在ASP.NET动态的创建柱状和饼状统计图 <br>192.如何判断上传图片的高度和宽度 <br>193.如何使用DESCryptoServiceProvider类对数据或者文件进行加密解密 <br>194.如何统计在线人数 <br>195.如何在ASP.NET实现验证码 <br>196.如何在本地取得指定网页的源代码 <br>197.如何在ASP.NET做一个日期选择器 <br>198.如何在弹出对话框的同时保持页面的显示 <br>199.如何点击按钮弹出新页面,输入数据后返回并且不刷新页面 <br> 第11章 文件操作 <br>200.如何读取、修改文本文件 <br>201.如何在ASP.NET实现文件的上传 <br>202.如何在ASP.NET实现多文件的上传 <br>203. 如何取得指定目录下的文件列表 <br>204.如何在ASP.NET创建日志文件 <br>205.如何取得系统日志,并把日志信息写到文本文件 <br>206.如何在ASP.NET创建、删除、复制文件 <br>207.如何动态的创建HTML文件 <br> 第12章 XML相关处理技术

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值