• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
a511029
博客园    首页    新随笔    联系   管理    订阅  订阅

可输入的下拉列表

 

下面是他的cs文件的内容:

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 Newsease.Common.Web.UI.WebControls

{

    /**/

    /// <summary>

    /// DropDownList 的摘要说明。

    /// </summary>

    [ToolboxData("<{0}:DropDownListExtend runat=\"server\" />")]

    public class DropDownListExtend : System.Web.UI.WebControls.TextBox

    {

        private Hashtable _values;

        public DropDownList _DropDownList;

 

        public DropDownListExtend()

        {

            _values = new Hashtable();

            _DropDownList = new DropDownList();

        }

 

        public Hashtable Values

        {

            get

            {

                return _values;

            }

            set

            {

                _values = value;

            }

        }

 

        /**/

        /// <summary>

        /// 将此控件呈现给指定的输出参数。

        /// </summary>

        /// <param name="output"> 要写出到的HTML 编写器</param>

        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; WIDTH:122px;top:-13px;height:8px\">");

            output.Write("<span style=\"MARGIN-LEFT:" + spanWidth.ToString() + "px;OVERFLOW:hidden;WIDTH:18px;\">");

 

            _DropDownList.Width = Unit.Parse(sWidth.ToString() + "px");

            _DropDownList.Style.Add("MARGIN-LEFT", "-" + spanWidth.ToString() + "px");

            _DropDownList.Attributes.Add("onchange", "this.parentNode.nextSibling.value=this.options[this.selectedIndex].text");

 

            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);

                }

            }

 

            if (_DropDownList.Items.Count == 1)

            {

                ListItem item = new ListItem();

                item.Value = "";

                item.Text = " ";

                _DropDownList.Items.Add(item);

                _DropDownList.SelectedIndex = 1;

            }

 

            _DropDownList.RenderControl(output);

 

            output.Write("</span>");

 

            base.Style.Clear();

            base.Width = Unit.Parse(iWidth.ToString() + "px");

            base.Style.Add("POSITION", "absolute");

            base.Style.Add("left", "0px");

            base.Render(output);

 

            output.Write("</div>");

        }

    }

}

首先新建一个类库项目,在项目新建一个新建web自定义控件,将上述内容放入到这个CS文件中,然后生成,将生成的debug文件中的DLL文件拖动到工具栏中。这样就可以直接使用了。也可以在自己的项目中新建一个CS文件将上述的代码复制到里面去,然后编译生成,在工具箱中就有这个控件。

注意:

在网页中使用这个控件时,如果网页中使用的是IE6的话,该控件不能实现可输入的功能,可以在IE7.0以上的版本可以正常使用。这也可能是应为我使用的网页标准的原因。我采用的

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">标准

如果换成Html4.0就可以正常使用。

posted @ 2008-08-15 14:24  zongjian  阅读(4493)  评论(2)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3