Ich möchte von ASP.NET Gridview verhindern, auf die Enter-Taste reagieren
-
02-07-2019 - |
Frage
Ich habe eine ASP.NET-Seite mit einem Gridview-Steuerelement auf es mit einer Befehl Spalte mit Lösch- und wählen Sie Befehle aktiv.
Durch Drücken der Enter-Taste bewirkt die erste Befehlsschaltfläche in der gridview zu feuern, die eine Zeile löscht. Ich will nicht, dass dies geschehen kann. Kann ich das Gridview-Steuerelement in einer Art und Weise ändern, dass es nicht mehr reagiert, die Enter-Taste zu drücken?
Es gibt eine Textbox und Taste auf dem Bildschirm als auch. Sie müssen nicht ansprechbar sein zu schlagen geben, aber Sie müssen in der Lage in der Textbox zu füllen. Derzeit Popup wir einen Bestätigungsdialog versehentlichen Löschungen zu verhindern, aber wir brauchen etwas besser als diese.
Dies ist das Markup für das Gridview ist, wie Sie es im Inneren eines asp.net Update sehen kann (ich das vergessen zu erwähnen, sorry): (von links ich die meisten Spalten und die Formatierung out)
<asp:UpdatePanel ID="upContent" runat="server" UpdateMode="Conditional">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="btnFilter" />
<asp:AsyncPostBackTrigger ControlID="btnEdit" EventName="Click" />
</Triggers>
<ContentTemplate>
<div id="CodeGrid" class="Grid">
<asp:GridView ID="dgCode" runat="server">
<Columns>
<asp:CommandField SelectImageUrl="~/Images/Select.GIF"
ShowSelectButton="True"
ButtonType="Image"
CancelText=""
EditText=""
InsertText=""
NewText=""
UpdateText=""
DeleteImageUrl="~/Images/Delete.GIF"
ShowDeleteButton="True" />
<asp:BoundField DataField="Id" HeaderText="ID" Visible="False" />
</Columns>
</asp:GridView>
</div>
</ContentTemplate>
</asp:UpdatePanel>
Lösung
Diese Lösung blockiert die Enter-Taste auf der gesamten Seite
Andere Tipps
Jeder einmal in eine Weile ich doof Fragen wie diese auch ... aber ich in der Regel implementieren nur einen schnellen Hack, und ziehen weiter:)
myGridView.Attributes.Add("onkeydown", "if(event.keyCode==13)return false;");
So etwas sollte funktionieren.
Im PreRender Ereignisse können Sie umschalten
Private Sub gvSerials_PreRender(ByVal sender As Object, ByVal e As System.EventArgs) Handles gvSerials.PreRender
If gvSerials.EditIndex < 0 'READ ONLY MODE
'Enables the form submit during Read mode on my 'search' submit button
Me.bnSearch.UseSubmitBehavior = True
Else 'EDIT MODE
'disables the form submit during edit mode, this allows the APPLY/Update button to be activated after Enter Key is pressed (which really is creating a form submit)
Me.bnSearch.UseSubmitBehavior = False
End If
In Page_Load, stellen Sie den Fokus auf das Textfeld ein.
Hier ist eine gute jQuery Art und Weise tun. Diese Funktion wird die keydown Event-Handler für alle Textfelder auf der Seite automatisch hinzuzufügen. Durch verschiedene Selektoren verwenden, können Sie es zu mehr oder weniger körnigen Ebenen steuern:
//jQuery document ready function – fires when document structure loads
$(document).ready(function() {
//Find all input controls of type text and bind the given
//function to them
$(":text").keydown(function(e) {
if (e.keyCode == 13) {
return false;
}
});
});
Damit wird alle Textfelder die Enter-Taste ignorieren und hat den Vorteil, auf jede neue HTML automatisch angewendet wird oder ASP.Net Steuerelemente, die Sie auf der Seite hinzufügen könnte (oder dass von ASP.Net erzeugt werden kann).
Für alle anderen das gleiche Problem, wenn dieser Code nicht das Ereignis von Feuern verhindert, das für mich gearbeitet:
if (window.event.keyCode == 13) {
event.returnValue=false;
event.cancel = true;
}