Asp.net可輸入下拉框服務器控件 C#版

//備註:改自Ryan Liu ([email protected])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>")


}
 
發佈了34 篇原創文章 · 獲贊 0 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章