Asp .Net Textbox OnKeyDown

Valamiért sikerült kihagyni pár Event kezelését az ASP .Net kontrolokból. Lehet annyira biztosra akartak menni, hogy senki nem csinál “butaságot”, hogy inkább kihagyták az ilyen jellegű eventeket. Nincs onKeyDown, nincs probléma.
De ha mégis kell, akkor mi a teendő?
Első körben illik írni egy scriptet, ami elfedi a különböző böngészők által megvalósított event kezelés problémáját. A Példa projektben ez a WebApplication1\WebApplication1\js\EventAddon.js fájl.
Ezt használjuk majd ügyesen, hogy kliens oldali JavaScript eseményekre feliratkozzunk. Mivel a .Net az .Net ezért illik szépen (.Net-esen) használni a JavaScriptet, azt pedig az alábbi módon kell:

1; A Script managernek megmondjuk mi az a script amit használni akarunk:

<asp:ScriptManager ID="ScriptManager1" runat="server">
<Scripts>
<asp:ScriptReference path="js/EventAddon.js" />
</Scripts>
</asp:ScriptManager>

2; Ha már betöltöttünk egy scriptet, használjuk is:

<script type="text/javascript">
Sys.Application.add_init(appInitHandler); //ha betöltésre került az oldal, akkor inicializáljuk a scriptet
function appInitHandler() {
var textBoxKD = $get("TextBox1"); //elkérjük a textbox kontrollt
XBrowserAddHandler(textBoxKD, "keyup", KeyDownHandler); //lekezeljük a keyup eventet
}

function KeyDownHandler(e) {
__doPostBack('TextBox1', 'TextChanged'); //ha keyup event van szólunk a .net-nek hogy textchanged (ez alap esetben csak enternél vagy fókuszvesztésnél történik meg)
}
</script>

3; örülünk

A teljes project (VS 2008 SP1 C#) megtalálható itt:
http://voji.hu/media/blogs/voji/development/csharp/OnKeyDown_WebApplication1.zip

Leave a Reply