KeyDown in ASP .NET – CSharp

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



Auch wenn Du nichts zu diesem Thema sagen möchtest, bringst du mit einem Klick auf den Like- oder KickButton zum Ausdruck, dass dir dieser Artikel gefällt. Vielen Dank : )

Kick it on dotnet-kicks.de

  1. Noch keine Kommentare.

  1. Noch keine Trackbacks.