vs2005提供的web下拉列表框 不支援輸入,只能選擇,我們可以繼承該控制項來支援輸入功能,實現的原理很簡單,就是增加乙個textbox控制項疊加在下拉列表框上,客戶端通過指令碼來同步這兩個控制項的值,先看看服務端**:
using system;
using system.collections.generic;
using system.text;
using system.collections;
using system.web.ui.webcontrols;
using system.componentmodel;
using system.text.regularexpressions;
using system.drawing;
using system.web.ui;
namespace weiky.web.control
...}
客戶端事件#region 客戶端事件
[categoryattribute("客戶端事件")]
[displaynameattribute("change")]
public string change
...set
...}
[categoryattribute("客戶端事件")]
[displaynameattribute("blur")]
public string blur
...set
...}
[categoryattribute("客戶端事件")]
[displaynameattribute("focus")]
public string focus
...set
...}
[categoryattribute("客戶端事件")]
[displaynameattribute("keydown")]
public string keydown
...set
...}
[categoryattribute("客戶端事件")]
[displaynameattribute("keyup")]
public string keyup
...set
...}
[categoryattribute("客戶端事件")]
[displaynameattribute("keypress")]
public string keypress
...set
...}
#endregion
public void setfont(int size, string name)
...公共屬性#region 公共屬性
public override unit width
...set
..._label.width = unit.pixel((int)(value.value * (1 - textwidthscale)));}}
public int left
...set
...px", value));}}
public int top
...set
...px", value));}}
public override int selectedindex
...set
...}
}[category("外觀")]
[defaultvalue("標題")]
[displaynameattribute("標題")]
public string caption
...set
...", value);}}
[category("外觀")]
[defaultvalue("標題的顏色")]
[displaynameattribute("標題的顏色")]
public color labelcolor
...set
...}
[categoryattribute("外觀")]
[displaynameattribute("錄入框長度比例")]
[description("錄入框佔整個控制項的長度的比例。")]
public float textwidthscale
...set
...}
[categoryattribute("行為")]
[displaynameattribute("是否可編輯")]
[description("控制項是否可編輯")]
public bool editable
...set
...}
}private void setchildcontrolwidth()
...#endregion
protected override void render(system.web.ui.htmltextwriter output)
...px;z-index:1;position:absolute;left:px;top:px", width.value, left,top));
output.writeattribute("cellspacing", "0");
output.writeattribute("cellpadding", "0");
output.write(htmltextwriter.tagrightchar);
output.writebegintag("tr");
output.writeattribute("nowrap", "true");
output.write(htmltextwriter.tagrightchar);
output.writebegintag("td");
output.writeattribute("valign", "baseline");
output.writeattribute("align", "left");
output.writeattribute("width", ((1 - textwidthscale) * 100).tostring() + "%");
output.write(htmltextwriter.tagrightchar);
_label.rendercontrol(output);
output.writeendtag("td");
output.writebegintag("td");
output.writeattribute("width", (textwidthscale * 100).tostring() + "%");
output.write(htmltextwriter.tagrightchar);
if (change != "")
...else if(editable)
...base.render(output);
if (editable)
...else
...if (keydown != "")
...if (keyup != "")
...if (keypress != "")
...if (focus != "")
..._textbox.rendercontrol(output);
}output.writeendtag("td");
output.writeendtag("tr");
output.writeendtag("table");
}public void settextboxvalue(string value)
...}}}
這個控制項還包括字首標籤,說明該控制項的名稱,組合成乙個完整的控制項。
客戶端通過兩個指令碼函式同步輸入框控制項和下拉框控制項的值:
function dropdownlist_onchange(id,thecontrol)
...function dropdownlist_oninputblur(id,theinput)
...}
if(!valueisvalid)
...else
...}
下拉列表框指令碼
目錄 一 概述 二 select標籤 三 option標籤 四 新增移除選項 下拉列表框是通過select和option標籤建立的,為了方便與這個控制項互動,除了所有表單字段共有的屬性和方法外,js還提供了一些屬性和方法。select標籤用來定義下拉列表,包含任意數量的option和optgroup...
下拉列表框和組合框
組合框被操作時會向父視窗傳送通知訊息,這些通知訊息及其含義如下 cbn closeup 組合框的列表框元件被關閉,簡易組合框不會傳送該通知訊息 cbn dblclk 使用者在某列表項上雙擊滑鼠,只有簡易組合框才會傳送該通知訊息 cbn dropdown 組合框的列表框元件下拉,簡易式組合框不會傳送該...
C ListBox 列表框控制項
列表框 listbox 將所提供的內容以列表的形式顯示出來,並可以選擇其中的一項或多項內容,從形式上比使用核取方塊更好一些。例如,在 word 中設定字型時介面如下圖所示。在列表框控制項中有一些屬性與前面介紹的控制項不同,如下表所示。列表框還提供了一些方法來操作列表框中的選項,由於列表框中的選項是乙...