Web- und Software Development

KeyDown in ASP .NET – CSharp

Written By: Mario Priebe - Jan• 13•09

Ich hatte ja schon hier einmal beschrieben, wie man in C# via Entertaste  eine TextBox bestätigt und so den eingegebenen Wert weiterverarbeitet.
Ich wollte dies nun in ASP.NET nutzen, musste jedoch feststellen, das es dort kein Eventhandler für KeyDown gibt.

Nach einer Suche im Netz, bin ich dann auf folgende VB.NET Lösung gestossen*, welche ich in C# umgeschrieben habe.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#region EnterButton
void EnterButton(WebControl _textBox, Control _button)
{
    StringBuilder sb = new StringBuilder();
 
    sb.Append(("<SCRIPT language=\"javascript\">" + Environment.NewLine));
    sb.Append(("function fnTrapKD(btn){" + Environment.NewLine));
    sb.Append((" if (document.all){" + Environment.NewLine));
    sb.Append(("   if (event.keyCode == 13)" + Environment.NewLine));
    sb.Append(("   { " + Environment.NewLine));
    sb.Append(("     event.returnValue=false;" + Environment.NewLine));
    sb.Append(("     event.cancel = true;" + Environment.NewLine));
    sb.Append(("     btn.click();" + Environment.NewLine));
    sb.Append(("   } " + Environment.NewLine));
    sb.Append((" } " + Environment.NewLine));
    sb.Append(("}" + Environment.NewLine));
    sb.Append(("</SCRIPT>" + Environment.NewLine));
 
    _textBox.Attributes.Add("onkeydown", "fnTrapKD(document.all." + _button.ClientID + ")");
    Page.ClientScript.RegisterStartupScript(GetType(), "ForceDefaultToScript", sb.ToString());
}
#endregion


Aufgerufen wird dann das ganze im Load und zwar so:

1
EnterButton(txtBoxAddField, btnSave_Method);

Viel Spass damit ; )

* Um den Codeschnipsel in VB.NET beim Janus Kamp Hansen zu sehen, solltest du den IE benutzen und dann im Menu den Punkt Default Button in ASP.NET unter Usefull in ASP.NET wählen

Ähnliche Beiträge

You can follow any responses to this entry through the RSS 2.0 feed. Both comments and pings are currently closed.