Question

J'ai une page ASP.NET avec un contrôle gridview avec une colonne de bouton de commande avec les commandes delete et select actives.

En appuyant sur la touche Entrée, le premier bouton de commande de la vue en grille se déclenche, ce qui supprime une ligne. Je ne veux pas que cela se produise. Puis-je modifier le contrôle gridview de manière à ce qu'il ne réagisse plus lorsque l'utilisateur appuie sur la touche Entrée?

Il y a également une zone de texte et un bouton à l'écran. Ils n'ont pas besoin de réagir à la saisie, mais vous devez être capable de remplir la zone de texte. Actuellement, nous ouvrons une boîte de dialogue de confirmation pour empêcher les suppressions accidentelles, mais nous avons besoin de quelque chose de mieux que cela.

C’est le balisage pour gridview, comme vous pouvez le voir dans un updatepanel asp.net (j’ai oublié de le mentionner, désolé): (j’ai oublié la plupart des colonnes et la mise en forme)

<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>
Était-ce utile?

La solution

Cette solution bloque la touche Entrée de la page entière

Désactiver la clé d'entrée

Autres conseils

De temps en temps, je rencontre également des problèmes loufoques comme celles-ci ... mais d'habitude, je mets simplement en œuvre un piratage rapide et je passe à autre chose:)

myGridView.Attributes.Add("onkeydown", "if(event.keyCode==13)return false;");

Quelque chose comme ça devrait marcher.

Dans l'événement PreRender, vous pouvez basculer

.
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

Dans Page_Load, définissez le focus sur la zone de texte.

Voici un jQuery moyen de le faire. Cette fonction ajoutera automatiquement le gestionnaire d’événements keydown à toutes les zones de texte de la page. En utilisant différents sélecteurs, vous pouvez le contrôler à des niveaux plus ou moins granulaires:

//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;
       }
   });

});

Cela fera que toutes les zones de texte ignoreront la touche Entrée et aura l’avantage d’être automatiquement appliqué à tout nouveau contrôle HTML ou ASP.Net que vous pourriez ajouter à la page (ou qui pourrait être généré par ASP.Net).

Pour ceux qui ont le même problème où ce code n'empêche pas l'événement de se déclencher, cela a fonctionné pour moi:

if (window.event.keyCode == 13) {    
    event.returnValue=false;     
    event.cancel = true;
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top