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







