Het leek mij handig om voor een textbox op een ASP.NET-webform een 'default-button' in te kunnen stellen zodat ik het text_changed event van asp.net niet hoef te gebruiken. Als de entertoets wordt ingedrukt terwijl een bepaalde textbox de focus heeft wordt het Click-event van een bepaalde button uitgevoerd i.p.v. text_changed.
Dit is volgens mij alleen client-side op te lossen en ik ben dus op zoek gegaan. Ik heb onderstaande code gevonden. In sub 'defaultbutton' staat het scriptje en in de page_load stel ik vervolgens de standaardbutton voor een bepaalde textbox in via 'DefaultButton(Page, TextBox, Button)':
Echter, dit werkt niet in een datagrid. Ik wil dat als er gegevens worden ingevoerd via een datagrid (datagrid in EditItem) en de gebruiker drukt op enter terwijl een bepaalde textbox in de datagrid de focus heeft dat het UpdateCommand-event van de datagrid wordt uitgevoerd, dit blijkt niet te werken als ik de updatebutton aanroep in mijn code. Dit heb ik toegevoegd aan het Page_Load event:
Het lijkt er dus op dat ik i.p.v. de button (cmdUpdate) direct het DataGrid.UpdateCommand event moet aanroepen, hiervoor moet ik dus waarschijnlijk wat wijzigen in de DefaultButton SUB. Ik krijg dit echter niet voor elkaar.
Dit is volgens mij alleen client-side op te lossen en ik ben dus op zoek gegaan. Ik heb onderstaande code gevonden. In sub 'defaultbutton' staat het scriptje en in de page_load stel ik vervolgens de standaardbutton voor een bepaalde textbox in via 'DefaultButton(Page, TextBox, Button)':
Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
| Public Sub DefaultButton(ByRef Page As System.Web.UI.Page, _ ByRef objTextControl As TextBox, ByRef objDefaultButton As Button) ' Sets default buttons. Dim sScript As New System.Text.StringBuilder() sScript.Append("<SCRIPT language=""javascript"">" & vbCrLf) sScript.Append("function fnTrapKD(btn){" & vbCrLf) sScript.Append(" if (document.all){" & vbCrLf) sScript.Append(" if (event.keyCode == 13)" & vbCrLf) sScript.Append(" { " & vbCrLf) sScript.Append(" event.returnValue=false;" & vbCrLf) sScript.Append(" event.cancel = true;" & vbCrLf) sScript.Append(" btn.click();" & vbCrLf) sScript.Append(" } " & vbCrLf) sScript.Append(" } " & vbCrLf) sScript.Append("}" & vbCrLf) sScript.Append("</SCRIPT>" & vbCrLf) objTextControl.Attributes.Add("onkeydown", _ "fnTrapKD(document.all." & objDefaultButton.ID & ")") Page.RegisterStartupScript("ForceDefaultToScript", sScript.ToString) End Sub Private Sub Page_Load(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles MyBase.Load 'Put user code to initialize the page here DefaultButton(Page, TextBox, Button) End Sub |
Echter, dit werkt niet in een datagrid. Ik wil dat als er gegevens worden ingevoerd via een datagrid (datagrid in EditItem) en de gebruiker drukt op enter terwijl een bepaalde textbox in de datagrid de focus heeft dat het UpdateCommand-event van de datagrid wordt uitgevoerd, dit blijkt niet te werken als ik de updatebutton aanroep in mijn code. Dit heb ik toegevoegd aan het Page_Load event:
Visual Basic .NET:
1
2
3
4
5
6
7
8
| If DataGrid.EditItemIndex <> -1 Then Dim txtInput As TextBox = _ dgOrderRegels.Items(dgOrderRegels.EditItemIndex).FindControl("txtInput") Dim cmdUpdate As Button = _ dgOrderRegels.Items(dgOrderRegels.EditItemIndex).FindControl("cmdUpdate") DefaultButton(Page, txtInput, cmdUpdate) End If |
Het lijkt er dus op dat ik i.p.v. de button (cmdUpdate) direct het DataGrid.UpdateCommand event moet aanroepen, hiervoor moet ik dus waarschijnlijk wat wijzigen in de DefaultButton SUB. Ik krijg dit echter niet voor elkaar.