`

.net复合控件之 可输入的下拉控件

阅读更多
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Collections;

namespace QC_Control
{
    /// <summary>
    /// 自定义可输入下拉框类
    /// </summary>
    [ToolboxData("<{0}:CustomInputDropdownControl runat=server></{0}:CustomInputDropdownControl>")]
    public class CustomInputDropdownControl : TextBox
    {
       
        private DropDownList ddlListItem = new DropDownList();       //下拉框
        private TextBox TxtBox = new TextBox();
        private Hashtable _values = new Hashtable();               //用于绑定下拉框框的值

        /// <summary>
        /// 键值引用变量set/get封装方法
        /// </summary>
        public Hashtable Item
        {
            get {
                if (ViewState["Values"] == null)
                {

                    ViewState["Values"] = new Hashtable();

                }
                else { }

                Hashtable s = (Hashtable)ViewState["Values"];
                return s;
            }
            set { ViewState["Values"] = value; }
        }


        /// <summary>
        /// default constructor
        /// initialization DropDownList and Hashtable instance variable
        /// </summary>
        public CustomInputDropdownControl()
        {
           // this._values = new Hashtable();
           // this.ddlListItem = new DropDownList();
        }

        /// <summary>
        /// 重写控件类Render方法体
        /// </summary>
        /// <param name="output"></param>
        protected override void Render(HtmlTextWriter output)
        {   ddlListItem.ID ="Ddl"+ base.ID;
            TxtBox.ID ="Txt"+ base.ID;
            // 框架的开始
            output.Write("<table cellspacing='0' cellpadding='0'  border='0'><tr><td align='left'><span style='position:absolute;border:1pt solid #c1c1c1;overflow:hidden;width:188px;height:19px;clip:rect(-1px 190px 190px 170px);'>");
          
            //此处之所以用clientID是因为当在卡片选项时,.net程序会将base.ID自动命名名字
            ddlListItem.Attributes.Add("onChange", getFocusValue(TxtBox.ID, ddlListItem.ID));
            ddlListItem.Attributes.Add("style", "width:190px;height:23px;margin-top:-2px;");
            TxtBox.Attributes.Add("style", "width:170px;height:15px;border:0pt;");
            //遍历数据到下拉框对象中
            if (this.Item.Count > 0)
            {
                foreach (string key in Item.Keys)
                {
                    ListItem item = new ListItem();
                    item.Value = key;
                    item.Text = Item[key].ToString();
                    ddlListItem.Items.Add(item);
                }
            }
         ddlListItem.RenderControl(output);
         output.Write("</span><span style='position:absolute;border-top:1pt solid #c1c1c1;border-left:1pt solid #c1c1c1;border-bottom:1pt solid #c1c1c1;width:170px;height:19px;'>");
         TxtBox.RenderControl(output);
            // 框架的结尾
            output.Write("</span> </td></t></table>");
        }

      //响应事件方法
        public string getFocusValue(string TxtId,string ddlId)
        {
            return "javas"+"cript:"+"document.getElementById('" + TxtId + "').value=document.getElementById('" + ddlId + "').options[document.getElementById('" + ddlId + "').selectedIndex].value;".ToString();
          
        }
    }
}
分享到:
评论

相关推荐

    asp.net控件基础

    - **用户控件(User Control)**:自定义的复合控件,可重复使用。 - **自定义控件(Custom Control)**:从基类继承,完全自定义行为和外观。 通过深入学习ASP.NET控件,开发者能够高效地创建功能丰富的Web应用...

    C#WinForm控件展系列之ComboBox组合框控件

    ComboBox控件结合了文本输入框和下拉列表的功能,用户既可以手动输入文本,也可以从预设的选项列表中选择。在Windows应用程序中,ComboBox经常用于提供一种灵活的用户交互方式,比如在登录界面中选择用户名、在设置...

    Visual Basic.NET控件时尚编程百例.rar

    - **用户控件(UserControl)**:组合多个控件创建新的复合控件。 5. **控件布局** - **布局容器**:如FlowLayoutPanel和TableLayoutPanel,帮助组织和排列控件。 - **锚定和自动缩放**:设置控件的锚定属性,使...

    asp.net 树型下拉框 (用户自定义控件)

    在ASP.NET中,树型下拉框是一种复合控件,它结合了树形视图(TreeView)和下拉列表(DropDownList)的功能,为用户提供了一种更直观、更丰富的交互方式来选择数据。这种控件通常用于显示层级结构的数据,如组织结构...

    True DBGrid for .NET-基于.NET的企业版网格控件

    作为ComponentOne Studio for .NET 和 ComponentOne Studio Enterprise的一部分,ComponentOne True DBGrid for .NET是我们受欢迎的ActiveX控件-True DBGrid Pro的.NET版本。它使用ADO.NET,最新的数据绑定技术,能...

    用Visual-C.NET编写服务器日期控件.doc

    3. 在DatePicker类中声明所需的服务器控件,如文本框、按钮和内嵌的Calendar控件,形成复合控件。 4. 实现所需的方法,如事件处理程序,以便在用户交互时更新控件状态。例如,按钮的Click事件可以触发日历显示,选择...

    ASP_NET服务器控件与组件开发源代码

    而复合控件则更进一步,允许开发者通过组合多个现有控件和自定义逻辑来创建新的复杂控件。 四、代码分离与数据绑定 在ASP.NET中,代码分离原则鼓励将界面设计与业务逻辑分开,提高代码的可读性和可维护性。"ASP_...

    winform上面实现webform上的自动记录式textbox复合控件C#.rar

    在.NET框架中,Windows Forms(WinForm)和ASP.NET Web Forms是两种常见的应用程序开发平台,分别用于构建桌面应用和Web应用。本主题聚焦于如何在WinForm应用中复用WebForm中的自动记录式TextBox控件功能,这在跨...

    Web用户控件分页

    Web用户控件是ASP.NET提供的一种复合控件,它允许开发者通过组合多个内置服务器控件,以及自定义HTML和样式,创建自己的可重用控件。这些控件可以在不同的页面或应用程序中重复使用,提高开发效率和代码复用性。 **...

    WinForm控件开发总结(完整版)

    这些控件可以分为三大类:复合控件、扩展控件以及自定义控件。 1. **复合控件**:通过组合现有的多个控件形成一个新的控件,以集成这些控件的功能。 2. **扩展控件**:基于现有的控件进行扩展,以增加或修改其功能...

    在工具栏上生成控件 avi

    对于组合框,它是一种复合控件,包含一个下拉列表,用户可以在文本输入框中直接输入或从列表中选择一项。这种控件在各种应用中非常常见,比如设置选项、过滤数据等。 描述中的“动态生成”意味着在程序运行时,而...

    C#的日历控件使用

    为了实现这一需求,我们可以创建一个自定义的复合控件,该控件将包含一个输入框、一个按钮以及一个日历控件。当用户点击按钮时,日历控件将显示出来供用户选择日期;一旦用户选择了一个日期,该日期将被填充到输入框...

    combobox与TreeView结合自定义控件

    通过阅读和理解这段代码,我们可以深入学习如何在VB.NET中创建这样的复合控件。 总结起来,将ComboBox与TreeView结合的自定义控件是一种创新的UI设计,它可以提高用户在浏览和操作层次结构数据时的效率。通过VB.NET...

    vb.net教程

    - **TextBox控件**:允许用户输入文本。 - **MainMenu控件**:提供菜单功能。 - **CheckBox控件**:表示布尔值的选择。 - **RadioButton控件**:用于一组互斥选项中选择一个。 - **GroupBox控件**:将其他控件分组。...

    基于ASP.NET+C#实现的A Multi-Purpose All-In-One Web Control

    自定义控件允许从头创建一个新的控件,而用户控件则允许将现有的HTML元素和服务器控件组合成一个新的复合控件。 在项目部署和使用过程中,需要注意控件的版本兼容性、性能优化以及跨浏览器兼容性。为了方便其他...

    vb.net基础教程(文字版).pdf

    11. **ComboBox控件**:组合了下拉列表和文本框功能。 12. **ListView控件**:用于显示列表项。 13. **TreeView控件**:以树形结构显示数据。 14. **ImageList控件**:管理图像集合。 15. **Timer控件**:定期触发...

    vb.net基础教程

    本教程将深入介绍VB.NET的基础知识,包括语言特性、数据类型、运算符、流程控制、过程与函数、类与对象,以及常用的控件使用。 1. **VB.NET简介** VB.NET引入了.NET Framework,提供了一个全新的开发环境,支持...

    Visual Basic.NET入门

    Visual Basic.NET(简称VB.NET)是一种面向对象的高级编程语言,它基于.NET Framework,并且是Microsoft Visual Studio的重要组成部分之一。VB.NET提供了强大的编程工具,使得开发者能够快速地构建Windows桌面应用...

Global site tag (gtag.js) - Google Analytics