您的位置:首页 > 编程语言 > ASP

Asp.net可输入下拉框服务器控件 C#版

2006-09-21 09:51 447 查看
//备注:改自Ryan Liu (dpliu@cbdsystem.com.cn)vb.net
using System;
using System.Collections;
using System.ComponentModel;
using System.Web.UI;
using System.Web.UI.Design;
using System.Web.UI.WebControls;

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

public TextBox()
{
_DropDownList = new DropDownList();
_values = new Hashtable();
}

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

protected override void Render(System.Web.UI.HtmlTextWriter Output)
{
int iWidth = Convert.ToInt32(base.Width.Value);
if (iWidth == 0)
{
iWidth = 102;
}
int sWidth = iWidth + 16;
int spanWidth = sWidth - 18;
Output.Write("<div style=/"POSITION:relative/">");
Output.Write("<span style=/"MARGIN-LEFT:" + spanWidth + "px;OVERFLOW:hidden;WIDTH:18px/">");
_DropDownList.Width = Unit.Parse(sWidth + "px");
_DropDownList.Style.Add("MARGIN-LEFT", "-" + spanWidth + "px");
_DropDownList.Attributes.Add("onchange", "this.parentNode.nextSibling.value=this.value");
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 + "px");
base.Style.Add("left", "0px");
base.Style.Add("POSITION", "absolute");
base.Render(Output);
Output.Write("</div>");
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐