Ich möchte von ASP.NET Gridview verhindern, auf die Enter-Taste reagieren

StackOverflow https://stackoverflow.com/questions/152099

  •  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>
War es hilfreich?

Lösung

Diese Lösung blockiert die Enter-Taste auf der gesamten Seite

deaktivieren Eingabetaste

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;
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top