可輸入的Web下拉列表框控制項

2022-02-15 23:12:41 字數 4023 閱讀 8756

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 中設定字型時介面如下圖所示。在列表框控制項中有一些屬性與前面介紹的控制項不同,如下表所示。列表框還提供了一些方法來操作列表框中的選項,由於列表框中的選項是乙...