ASP.NET自定义Web服务器控件-DropDownList/Select下拉列表控件
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
//自定义web服务器控件-下拉列表
namespace MyControls
{
[DefaultProperty("Text")]
[ToolboxData("<{0}:MySelect runat=server></{0}:MySelect>")]
[ParseChildren(true,"Items")] //规定
public class MySelect : WebControl
{
[Bindable(true)]
[Category("Appearance")]
[DefaultValue("")]
[Localizable(true)]
public string Text
{
get
{
String s = (String)ViewState["Text"];
return ((s == null) ? String.Empty : s);
} set
{
ViewState["Text"] = value;
}
}
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)] //以内容的形式打印标签
public List<SelectItem> Items{
get{
if(ViewState["Items"]==null){
ViewState["Items"] = new List<SelectItem>();
}
return (List<SelectItem>)ViewState["Items"];
}
set{
ViewState["Items"] = value;
}
} [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]//以内容的形式打印标签
public Size Size
{
get
{
if (ViewState["Size"] == null)
{
ViewState["Size"] = new Size();
}
return (Size)ViewState["Size"];
}
set
{
ViewState["Size"] = value;
}
}
public override void RenderBeginTag(HtmlTextWriter writer)
{
this.Style.Add("Width", Size.Width + "px"); //增加样式,宽度
this.Style.Add("Height", Size.Height + "px"); //增加样式,高度
base.RenderBeginTag(writer);
}
protected override HtmlTextWriterTag TagKey
{
get
{
return HtmlTextWriterTag.Select;//下拉列表标签
}
}
protected override void RenderContents(HtmlTextWriter output)
{
//打印下拉列表内容
foreach(SelectItem item in Items){
output.Write("<option value='"+item.Value+"'>"+item.Text+"</option>");
}
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; //<!--自定义服务器下拉列表控件的子标签
namespace MyControls
{
public class SelectItem
{
public string Value { set; get; } //选择的值
public string Text { set; get; } //选择的文本内容
public SelectItem() { }
public SelectItem(string text, string value) {
this.Text = text;
this.Value = value;
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; //<cc1:MyButton ID="MyButton1" Size-Height="30" Size-Width="290" />用法,用于这种内部属性
//定义一个大小的类,里面包含了宽高
namespace MyControls
{
public class Size
{
public int Width { set; get; }
public int Height { set; get; }
public Size(int width,int height) {
this.Width = width;
this.Height = height;
}
public Size() : this(100,100) { }
}
}
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> <%@ Register assembly="MyControls" namespace="MyControls" tagprefix="cc1" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<!--自定义服务器下拉列表控件-->
<cc1:MySelect Size-Height="100" Size-Width="100" ID="MySelect1" runat="server">
<cc1:SelectItem Value="1" Text="选择一" />
<cc1:SelectItem Value="2" Text="选择二" />
<cc1:SelectItem Value="3" Text="选择三" />
</cc1:MySelect>
</div>
</form> </body>
</html>
ASP.NET自定义Web服务器控件-DropDownList/Select下拉列表控件的更多相关文章
- 专用于ASP.Net Web应用程序的日期控件
		
原文引入:http://blog.csdn.net/nileel/article/details/1566051 专用于ASP.Net Web应用程序的日期控件 分类: ASP.NET/C#2007 ...
 - 基于Jquery的下拉列表控件(个人觉得实用)
		
Selectize.js Selectize 是一个基于 jQuery 的 <select> UI 控件,对于标签选择和下拉列表功能非常有用. Selectize 的目标是通过简单而强大的 ...
 - 【番外篇】ASP.NET MVC快速入门之免费jQuery控件库(MVC5+EF6)
		
目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...
 - 2017年12月17日 ASP.NET 12个表单元素&&简单控件/复合控件
		
12个表单元素可以分为三大类 第一类:文本类 <input type = "text" /> //普通文本框 <input type = "passwo ...
 - FineUI第八天----下拉列表控件
		
下拉列表控件 3.模拟树的下拉列表: 其他的控件都跟Asp.net的差不多.
 - ASP.NET MVC中加载WebForms用户控件(.ascx)
		
原文:ASP.NET MVC中加载WebForms用户控件(.ascx) 问题背景 博客园博客中的日历用的是ASP.NET WebForms的日历控件(System.Web.UI.WebControl ...
 - 安卓开发16:Spinner 下拉列表控件
		
Spinner 下拉列表控件 创建一个activity_main.xml文件: <RelativeLayout xmlns:android="http://schemas.androi ...
 - Android 自定义View 三板斧之一——继承现有控件
		
通常情况下,Android实现自定义控件无非三种方式. Ⅰ.继承现有控件,对其控件的功能进行拓展. Ⅱ.将现有控件进行组合,实现功能更加强大控件. Ⅲ.重写View实现全新的控件 本文重点讨论继承现有 ...
 - Atitit. .net c# web 跟clientwinform 的ui控件结构比較
		
Atitit. .net c# web 跟clientwinform 的ui控件结构比較 .net 4.5 webform Winform 命名空间 System.Web.UI.WebContro ...
 
随机推荐
- 如果不用jQuery,Ajax你还能写出多少?
			
许久之前发过一篇关于Ajax的博客,通篇讲的都是通过jQuery编写Ajax,可能因为jQuery在这方面做的实在太好,以至于突然发现不用jQuery的话自己都模糊了Ajax的写法,这里重温一下. F ...
 - ASM下裸设备的路径更改是否会影响数据库的执行
			
通过asm来存储数据库文件,在linux下能够通过asmlib的方式来管理块设备,也能够直接使用裸设备来建立asm磁盘.在asmlib方式下,磁盘设备启动顺序和名称的改变不会影响到asm的使用.但假设 ...
 - Android -- 触摸Area对焦区域(更新)
			
老早就想找关于不同点击不同地方的对焦,但是一直没有找到,现在项目又需要这个功能,又跑出来找找,最后还是找到啦~~关于对焦更多的是关于自动对焦. 废话不多说,直接来干货,主要是setFocusAreas ...
 - 网络结构设计——负载均衡之LVS学习笔记(二)
			
LVS按个人理解的说就是将一台Linux服务器当作路由器等功能的技术.LVS---Linux虚拟服务器. LVS实现了三种IP负载均衡技术VS/NAT.VS/TUN.VS/DR. 今天简单分享一下我在 ...
 - Back Track 5 之 漏洞攻击 && 密码攻击 && Windows下渗透工具
			
网络漏洞攻击工具 Metasploit 先msfupdate升级: 然后选择msfconsole: 接下来: set LHOST 本机IP地址 setLPORT setg PAYLOAD window ...
 - 【Linux】Linux中 “there are stopped jobs”问题的解决方案
			
在用管理员执行一个命令后,我用Ctrl+Z把命令转移到了后台天.导致我无法退出root的. 输入命令:logout终端显示:There are stopped jobs. 解决方法:输入命令:jobs ...
 - (转)Overview : Writing Scripts in C# 使用C#书写脚本
			
Apart from syntax, there are some differences when writing scripts in C# or Boo. Most notable are: 除 ...
 - Node.js中的HTTPS示例
			
需要openssl的支持, openssl本身不提供windows的安装程序,可以按照如下的步骤进行安装: (参考https://conetrix.com/Blog/how-to-install- ...
 - Python网络爬虫 - 下载图片
			
下载博客园的logo from urllib.request import urlretrieve from urllib.request import urlopen from bs4 import ...
 - Java从零开始学二十(集合简介)
			
一.为什么需要集合框架 数组的长度是固定的,但是如果写程序时并不知道程序运行时会需要多少对象.或者需要更复杂的方式存储对象,---那么,可以使用JAVA集合框架,来解决这类问题 二.集合框架主要接口 ...