今天做一個輸入界面,有一需求根據一個DropDownList選擇不同,後面部分出現不同的輸入界面,若把響應事件放在服務端去做,得頻繁刷頁面。就想放在客戶來處理顯示和隱藏相應的輸入界面。
放在服務器端,也可以用ajax來實現,不刷頁面。但我覺得有更直接更簡單方法,用一個js事件是可以實現的。
但,DropDownList不偈Button等控件提供了一些像"OnClientClick"前台事件,只有服務端事件。
想到,所有C#頁面代碼,最終都是生成HTML,js事件也是最終運在浏覽器中,以Html為基礎的。服務端控件最終生成的HTML控件有什麼js事件,我們應該就能在aspx中給它添加相應的事件。
DropDownList 生成的Htm是元素<Select>是有onchange事件的,所以我們也是可以給DropDownList添加onchange()事件,我們通常用的方法,在後台文件的Page_Load 事件中,給id為ddlExamType的DropDownList 添加onchange()事件:
ddlExamType.Attributes.Add("onchange","SelecteChanged("+this.ddlExamType.ClientID")");
前台定義的js 函數:SelecteChanged()
<script language="javascript">
function selectChange(objID) {
var ddlExamType = document.getElementById(objID);
if (bool) {
……
}
else {
……
}
}
</script>
總結: C#的服務端控件,生成html時對應控件有什麼js事件,我們都能通過對控件 Attributes.Add()添加。