Asp.net清空控件值的方法(可自定义控件类型)

由于项目收尾,最近忙着做一些方法的优化,整理了一些分享给大家。

当页面内有许多控件,我们在需要清空其值的时候,一个个清空未免太麻烦。于是写了这么一个方法,可以自定义清空控件的类型,灵活应对业务需求。


代码如下:

/// <summary>重置方法控件类型枚举</summary>
/// <remarks>求知域http://www.qqextra.com 2012-12-28</remarks>
public enum ReSetType
{
/// <summary>
/// TextBox
/// </summary>
TXT,
/// <summary>
/// DropDownList
/// </summary>
DDL,
/// <summary>
/// RadioButtonList
/// </summary>
RBL,
/// <summary>
/// 全部ReSetType类型
/// </summary>
ALL
}
/// <summary>重置控件的值</summary>
/// <remarks>求知域http://www.qqextra.com 2012-12-28</remarks>
/// <param name="control">this</param>
/// <param name="rst">ReSetType.ALL为清空ReSetType枚举中包含的所有控件类型</param>
public static void ReSet(Control control, params ReSetType[] rst)
{
bool blTxt = false;
bool blDdl = false;
bool blRbl = false;
foreach (ReSetType type in rst)
{
if (type == ReSetType.ALL)
{
blTxt = true;
blDdl = true;
blRbl = true;
break;
}
else
if (type == ReSetType.TXT)
blTxt = true;
else if (type == ReSetType.DDL)
blDdl = true;
else if (type == ReSetType.RBL)
blRbl = true;
}
foreach (Control c in control.Controls)
{
//文本框
if (c is TextBox && blTxt == true)
{
((TextBox)c).Text = "";
}
else
//下拉列表
if (c is DropDownList && blDdl == true)
{
DropDownList ddl = (DropDownList)c;
if (ddl.Items.Count > 0)
{
ddl.SelectedIndex = 0;
}
}
else
//单选按钮列表
if (c is RadioButtonList && blRbl == true)
{
((RadioButtonList)c).SelectedIndex = -1;
}
else
if (c.HasControls())
{
//递归
ReSet(c, rst);
}
}
}

时间: 2013-04-05

Asp.net 动态加载用户自定义控件,并转换成HTML代码

如果页面单纯的使用js来创建,要写大量的代码,而且不直观. 在asp.net中,其实我们可以创建用户自定义控件,通过Ajax请求返回用户自定义控件HTML代码. 复制代码 代码如下: public static string RangerUsControl(string controlName) { StringBuilder build = new StringBuilder(); HtmlTextWriter htmlWriter = new HtmlTextWriter(new Strin

asp.net自定义控件回发数据实现方案与代码

在实现asp.net的自定义控件中,若要实现数据的回发或者post数据,那自义控件必须实现IPostBackDataHandler接口, 在该接口中有两个方法一个是LoadPostData,另一个是RaisePostDataChangedEvent.第一个方法用于在回发数据时,填充自定义控件的相关属性,第二个方法用于激发控件相关的事件.也就是说这两个方法,应该是在提交数据的时候进行调用的. 可是,我们在实现自己的控件时,虽然继承了 IPostBackDataHandler,但是在提交数据的时候确

asp.net DropDownList自定义控件,让你的分类更清晰

看到Discuz是2个下拉列表进行合并的,网上找了一些资料,然后写了这个小源码,在这里和大家分享一下! 运行效果图,如下所示(深黑的地方选不中,因为那是上一级的分类): 项目结构图如下所示: Controls类库SmartDropDownList.cs代码如下所示: SmartDropDownList.cs 复制代码 代码如下: using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using Syste

Asp.net自定义控件之加载层

本文旨在给大家开发自定义控件(结合js)一个思路,一个简单的示例,可能在实际项目中并不会这样做.  先来看看效果: 1.在静态页面里开发好想要的效果 jQuery.extend({ openloading: function (options) { var defaults = { msg: '数据提交中...', img: 'loading.gif' }; var opts = $.extend(defaults, options); $("body").append("&

asp.net自定义控件代码学习笔记

效果:在放这个控件的页面: XML/HTML 复制代码 代码如下: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="test6.aspx.cs" Inherits="test6" %> <%@Register TagPrefix="custom" Namespace="myComponents" %>

asp.net中使用自定义控件的方式实现一个分页控件的代码

一.概述 在web开发中,常常需要显示一些数据,而为了方便排版及浏览,我们只需要显示所有记录中的一部分.一般情况下,我们采用分页来实现这个需求.实现分页的方法多种多样,在本文中,我们采用了一个分页空间来记录记录总数.当前页.总页数及页面大小等.为了有一个直观上的印象,先展示该控件运行后的效果,效果如下图所示: 二.实现方案 为了实现该效果图,在asp.net中,可以使用Custom Controls and User Controls两种方式,User Controls的实现方式及其简单,而且使

asp.net 自定义控件实现无刷新上传图片,立即显示缩略图,保存图片缩略图

如图: 点击浏览,选择图片之后,右面显示图片 第一步: 创建CtFileUpLoad.ascx 复制代码 代码如下: <%@ Control Language="C#" AutoEventWireup="true" CodeFile="CtFileUpLoad.ascx.cs" Inherits="WebParts_CtFileUpLoad" %> <table cellpadding="0&quo

asp.net动态加载自定义控件的方法

本文实例讲述了asp.net动态加载自定义控件的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: //usercontrol.IndexOper为自定义控件 usercontrol.IndexOper uc=(usercontrol.IndexOper)Page.LoadControl("自定义控件路径"); uc.ID = "uc";  //定义唯一标示 //OperContent为PlaceHolder控件 OperContent.Contr

asp.net自定义控件中注册Javascript问题解决方案

复制代码 代码如下: protected override void OnPreRender(EventArgs e) { base.OnPreRender(e); RenderJS(); } private void RenderJS() { if (!Page.ClientScript.IsClientScriptBlockRegistered(SCRIPT_ID))//如果还没有注册语句,则注册 { Page.ClientScript.RegisterClientScriptBlock(t

浅谈ASP.NET中最简单的自定义控件

ASP.NET用户控件一般适用于产生相对静态的内容,所以没有builtin的事件支持.本文讨论用户控件返回事件的方法. 假定用户控件(UserControl.ascx)中包含按钮控件AButton,希望实现按AButton按钮时,包含该用户控件的页面可以接收到事件.为此,小鸡射手在用户控件和页面的代码中分别作了处理. UserControl.ascx.cs中的处理:         1. 定义public的事件委托,如ClickEventHandler;         2. 在UserCont

浅谈ASP.NET中多层架构

很多人对开发多层应用程序感到一定的困难.来看一个例子:对于一个只有一两个人的小公司,一个人可能同时担当老板.出纳.会计.市场.销售.开发等多项工作.而对于一个大公司,就会进行比较严密的分工,每个人只完成一部分工作,需要彼此配合才能保证正常运转.以前的开发程序就类似于一个小公司,从用户界面到数据库访问等所有功能都在一个页面内完成,这样的缺点有: 1. 开发起来比较困难,很难实现多人协作开发 2. 一旦数据库或规则有变,就可能要重新修改整个页面,加大维护成本 3. 因为所有功能都混合在一起,程序重用

浅谈ASP.NET中MVC 4 的JS/CSS打包压缩功能

今天在使用MVC4打包压缩功能@Scripts.Render("~/bundles/jquery") 的时候产生了一些疑惑,问什么在App_Start文件夹下BundleConfig.cs文件内 bundles.Add(new ScriptBundle("~/bundles/jquery").Include( "~/Scripts/jquery-{version}.js", "~/Scripts/jquery.unobtrusive-a

浅谈ASP.NET Core 中jwt授权认证的流程原理

1,快速实现授权验证 什么是 JWT ?为什么要用 JWT ?JWT 的组成? 这些百度可以直接找到,这里不再赘述. 实际上,只需要知道 JWT 认证模式是使用一段 Token 作为认证依据的手段. 我们看一下 Postman 设置 Token 的位置. 那么,如何使用 C# 的 HttpClient 访问一个 JWT 认证的 WebAPI 呢? 下面来创建一个 ASP.NET Core 项目,尝试添加 JWT 验证功能. 1.1 添加 JWT 服务配置 在 Startup.cs 的 Confi

浅谈Linux系统中的异常堆栈跟踪的简单实现

在Linux中做C/C++开发经常会遇到一些不可预知的问题导致程序崩溃,同时崩溃后也没留下任何代码运行痕迹,因此,堆栈跟踪技术就显得非要重要了.本文将简单介绍Linux中C/C++程序运行时堆栈获取,首先来看backtrace系列函数--使用范围适合于没有安装GDB或者想要快速理清楚函数调用顺序的情况 ,头文件execinfo.h int backtrace (void **buffer, int size); 该函数用来获取当前线程的调用堆栈,获取的信息将会被存放在buffer中,它是一个指针

浅谈ASP.NET MVC 防止跨站请求伪造(CSRF)攻击的实现方法

在HTTP POST请求中,我们多次在View和Controller中看下如下代码: 1.View中调用了Html.AntiForgeryToken(). 2.Controller中的方法添加了[ValidateAntiForgeryToken]注解. 这样看似一对的写法其实是为了避免引入跨站请求伪造(CSRF)攻击. 这种攻击形式大概在2001年才为人们所认知,2006年美国在线影片租赁网站Netflix爆出多个CSRF漏洞,2008年流行的视频网址YouTube受到CSRF攻击,同年墨西哥一

浅谈java Collection中的排序问题

这里讨论list.set.map的排序,包括按照map的value进行排序. 1)list排序 list排序可以直接采用Collections的sort方法,也可以使用Arrays的sort方法,归根结底Collections就是调用Arrays的sort方法. public static <T> void sort(List<T> list, Comparator<? super T> c) { Object[] a = list.toArray(); Arrays.

浅谈react.js中实现tab吸顶效果的问题

在react项目开发中有一个需求是,页面滚动到tab所在位置时,tab要固定在顶部. 实现的思路其实很简单,就是判断当滚动距离scrollTop大于tab距离页面顶部距离offsetTop时,将tab的position变为fixed. 在react中,我在state中设置一个navTop属性,切换这个属性的值为true或者false,然后tab标签使用classnames()这个方法来利用navTop的值添加类名fixed. 一开始我是这样写的: import cs from 'classnam

浅谈python字符串方法的简单使用

学习python字符串方法的使用,对书中列举的每种方法都做一个试用,将结果记录,方便以后查询. (1) s.capitalize() ;功能:返回字符串的的副本,并将首字母大写.使用如下: >>> s = 'wwwwww' >>> scap = s.capitalize() >>> scap 'Wwwwww' (2)s.center(width,char); 功能:返回将s字符串放在中间的一个长度为width的字符串,默认其他部分用空格填充,否则使用c

浅谈MySQL存储过程中declare和set定义变量的区别

在存储过程中常看到declare定义的变量和@set定义的变量.简单的来说,declare定义的类似是局部变量,@set定义的类似全局变量. 1.declare定义的变量类似java类中的局部变量,仅在类中生效.即只在存储过程中的begin和end之间生效. 2.@set定义的变量,叫做会话变量,也叫用户定义变量,在整个会话中都起作用(比如某个应用的一个连接过程中),即这个变量可以在被调用的存储过程或者代码之间共享数据.如何理解呢?可以看下面这个简单例子,很好理解. (1)先执行下面脚本,创建一