asp.net DropDownList 可输可选 下拉菜单

原创 2013年12月04日 18:15:05

自定义Controls类

using System;
using System.Collections;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace Controls
{
    [ToolboxData("<{0}:DropDownListExtend runat=\"server\" />")]
    public class DropDownListExtend : System.Web.UI.WebControls.TextBox
    {
        private Hashtable _values;
        private DropDownList _DropDownList;
        public DropDownListExtend()
        {
            _values = new Hashtable();
            _DropDownList = new DropDownList();
        }

        public Hashtable Values
        {
            get { return _values; }
            set { _values = value; }
        }

        protected override void Render(HtmlTextWriter output)
        {

            int iWidth = Convert.ToInt32(base.Width.Value);
            if (iWidth == 0)
            {
                iWidth = 102;
                base.Width = Unit.Parse("102px");
            }
            int sWidth = iWidth + 20;
            int spanWidth = sWidth - 18;
            output.Write("<div style=\"POSITION:relative;\">");
            output.Write("<span style=\"MARGIN-LEFT:" + spanWidth.ToString() + "px;OVERFLOW:hidden;WIDTH:14px;\">");
            _DropDownList.Width = Unit.Parse(sWidth.ToString() + "px");
            _DropDownList.Height = Unit.Parse("21px");
            _DropDownList.Style.Add("MARGIN-LEFT", "-" + spanWidth.ToString() + "px");
            _DropDownList.ID = base.ID + "_Select";
            _DropDownList.Attributes.Add("onchange", "this.parentNode.nextSibling.value=this.value");
            _DropDownList.Attributes.Add("onfocus", "" + this.getFocusScript() + "");

            if (_values.Count > 0)
            {
                foreach (string key in _values.Keys)
                {
                    ListItem item = new ListItem();
                    item.Value = key;
                    item.Text = _values[key].ToString();
                    _DropDownList.Items.Add(item);
                }
            }
            _DropDownList.RenderControl(output);
            output.Write("</span>");
            base.Style.Clear();
            base.Width = Unit.Parse(iWidth.ToString() + "px");
            base.Style.Add("left", "0px");
            base.Style.Add("POSITION", "absolute");
            base.Render(output);

            output.Write("</div>");
        }
        private string getFocusScript()
        {
            string strScript = "\n";
            strScript += "var isExist = -2;\n";
            strScript += "var obj = event.srcElement;\n";
            strScript += "var str = this.parentNode.nextSibling.value;\n";
            strScript += "var ary = obj.options;\n";
            strScript += "for(var i=0;i<ary.length;i++){\n";
            strScript += " if(str == ary[i].text){\n";
            strScript += "  isExist = i;\n";
            strScript += "  break;\n";
            strScript += " }\n";
            strScript += "}\n";
            strScript += "if(isExist != -2){\n";
            strScript += " obj.selectedIndex = isExist;\n";
            strScript += "}\n";
            strScript += "else{\n";
            strScript += " obj.selectedIndex = -1;\n";
            strScript += "}\n";

            return strScript;
        }
    }
}


在.aspx页面引用

页面最上边添加

<%@ Register Assembly="Controls" Namespace="Controls" TagPrefix="hc" %>

调用自定义的可输入可选择的下拉菜单

<hc:DropDownListExtend runat ="server" ID ="NewDropDownList"  Width="100px">
</hc:DropDownListExtend>

在后台.aspx.cs给控件添加数据

添加using Controls;并且在bin文件添加Controls引用

protected void Page_Load(object sender, EventArgs e)
{
	if (!IsPostBack)
        {
		NewDropDownList.Values.Add("1", "A");
		NewDropDownList.Values.Add("2", "B");
		NewDropDownList.Values.Add("3", "C");
		//用NewDropDownList.Text.ToString()取值
	}
}


[Asp.Net]4种方法把数据绑定到Dropdownlist

第一种,把Array数组绑到dropdownlist 程序代码string[] Month =new string[7]{ "January", "February", "March", "April...
  • david_520042
  • david_520042
  • 2015年04月28日 19:12
  • 2464

asp.net中DropDownList控件各种属性研究汇总

.aspx代码如下: AutoPostBack="True" > ...
  • yayun0516
  • yayun0516
  • 2014年12月08日 10:02
  • 1754

关于下拉菜单(dropdownlist)一些用法心得

1.与数据库绑定 SqlConnection conn= new SqlConnection(ConfigurationSettings.AppSettings["job"]);//数据库连接信息 S...
  • limshirley
  • limshirley
  • 2017年04月17日 14:16
  • 599

asp.net js实现dropdownlist二级联动(动态)

ASPX端代码: http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> http://www.w3.org/1999/...
  • lishimin1012
  • lishimin1012
  • 2014年06月26日 21:06
  • 3195

两种添加数据到dropdownlist控件的方法_asp.net技巧

给dropdownlist添加数据
  • u011069590
  • u011069590
  • 2015年09月10日 09:43
  • 1487

【.net基础】--DropDownList控件:两级联动

最近学习Asp.Net,发现很多控件都很有意思,例如:Canlender,AdRotator等。以前只知道有这样的页面效果,但是对这些控件了解并不多。不怕不知道,就怕不知道。...
  • successA
  • successA
  • 2015年05月11日 16:45
  • 1662

为下拉式菜单(DropDownList)添加第一个选项

很多方法可以为为下拉式菜单(DropDownList)添加第一个选项,下面是Insus.NET小结了几个方法,仅供参考: Html code: View Code   数据...
  • linshichen
  • linshichen
  • 2016年07月13日 19:21
  • 3206

asp DropDownList下拉列表的使用(转)

下拉列表也是Web开发中常用的控件之一,用来从一组可选项中选取一项。FineUI中的下拉列表不仅可以通过ASPX标签声明,也可以绑定到各种数据源。FineUI还根据实际项目的需要,扩展了一种模拟树的下...
  • langjian2012
  • langjian2012
  • 2014年03月06日 16:56
  • 2254

ASP.NET中DropDownList控件的简单使用--DDL绑定数据库表中值,选择DDL中值直接检索数据

这篇博客主要说一下DropDownList绑定数据库表中数据,及选择相应DropDownList表中的值会根据此值从数据库中查询相应的数据信息。       一、简单介绍一下我要实现的功能   ...
  • mazhaojuan
  • mazhaojuan
  • 2013年01月22日 14:59
  • 15142

【Unity3D】Unity3D 4.x利用原生UGUI完成下拉列表DropDownList

我本以为UGUI至少是C#控件有的控件它就有,其实上这货所提供的组件少的可怜,如图所示,但是没有枪没有炮我们自己造。比如一个简单的下拉列表DrowDownList,这货到处都有,连那最SB的HTML都...
  • yongh701
  • yongh701
  • 2017年04月25日 10:23
  • 1884
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:asp.net DropDownList 可输可选 下拉菜单
举报原因:
原因补充:

(最多只允许输入30个字)