为服务器控件加入客户端事件处理的几种方法
服务器端的处理虽然方便,但因为每次都要PostBack,因而效率不高,很多时候需要为服务器端控件写入客户端事件处理。把各种方法总结一下:
1)在HTML代码的标签中直接写。如下
<asp:Button id="Button5" onmouseover='javascript:alert("hello")' style="Z-INDEX: 109; LEFT:
注意:
A、如果是HTML控件,这样写没有任何问题,写的事件处理将直接反映到输出的网页中
B、如果是web控件,一般不能直接写,因为这种事件处理都会被认为是服务器端的事件处理,在输出的网页中也不会看到。如果写的是客户端的事件的话,如onmouseover,会提示没有找到这个属性,但可以正常运行,并且这个事件的处理也会被传送到输出的网页中。
C、注意格式,根据情况选择形式
onmouseover='javascript:alert("hello")'
onmouseover="javascript:alert("hello")"
2)如果控件是动态生成的或者想在代码中加入上面的内容,可以这样
Button1.Attributes.Add ("onmouseover","javescript:alert(\"hello\")");
3)如果控件就没有Atrributes,还要加入客户端响应(虽然这种情况很离奇,但是却真有这种需求,比如为一个树控件的节点添加一个onclick客户端事件响应),还有一招从网上学来的奇招。
Button2.ID="ID2" + "\" onmouseover=\"javascript:alert("hello")";
为ID赋值,得到的结果是 ID="***",这样,可以自己去拼中间的内容,最后实际得到的是ID="***" onmouseclick="***"这样的效果。
1)在HTML代码的标签中直接写。如下
<asp:Button id="Button5" onmouseover='javascript:alert("hello")' style="Z-INDEX: 109; LEFT:
注意:
A、如果是HTML控件,这样写没有任何问题,写的事件处理将直接反映到输出的网页中
B、如果是web控件,一般不能直接写,因为这种事件处理都会被认为是服务器端的事件处理,在输出的网页中也不会看到。如果写的是客户端的事件的话,如onmouseover,会提示没有找到这个属性,但可以正常运行,并且这个事件的处理也会被传送到输出的网页中。
C、注意格式,根据情况选择形式
onmouseover='javascript:alert("hello")'
onmouseover="javascript:alert("hello")"
2)如果控件是动态生成的或者想在代码中加入上面的内容,可以这样
Button1.Attributes.Add ("onmouseover","javescript:alert(\"hello\")");
3)如果控件就没有Atrributes,还要加入客户端响应(虽然这种情况很离奇,但是却真有这种需求,比如为一个树控件的节点添加一个onclick客户端事件响应),还有一招从网上学来的奇招。
Button2.ID="ID2" + "\" onmouseover=\"javascript:alert("hello")";
为ID赋值,得到的结果是 ID="***",这样,可以自己去拼中间的内容,最后实际得到的是ID="***" onmouseclick="***"这样的效果。