代码之家  ›  专栏  ›  技术社区  ›  stombeur

我希望阻止ASP.NET GridView对“输入”按钮做出反应

  •  4
  • stombeur  · 技术社区  · 16 年前

    我有一个ASP.NET页面,上面有一个GridView控件,其中有一个命令按钮列,其中“删除”和“选择”命令处于活动状态。

    按Enter键将触发GridView中的第一个命令按钮,这将删除一行。我不想发生这种事。是否可以更改GridView控件,使其不再对按Enter键做出反应?

    屏幕上还有一个文本框和按钮。它们不需要对输入做出响应,但您必须能够填写文本框。目前,我们弹出一个确认对话框以防止意外删除,但我们需要比这更好的东西。

    这是GridView的标记,如您所见,它位于ASP.NET更新面板中(我忘记提了,抱歉):(我遗漏了大多数列和格式)

    <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>
    
    6 回复  |  直到 13 年前
        1
  •  1
  •   BenF    16 年前

    此解决方案正在阻止整个页面上的Enter键

    Disable Enter Key

        2
  •  5
  •   Timothy Khouri    16 年前

    偶尔我也会遇到这样的愚蠢问题…但通常我只是执行一个快速黑客,然后继续前进:)

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

    像这样的东西应该管用。

        3
  •  1
  •   Derrick    13 年前

    在PreRender事件中,可以切换

    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
    
        4
  •  0
  •   devio    16 年前

    在页面加载中,将焦点设置在文本框上。

        5
  •  0
  •   CMPalmer    16 年前

    这是一个好消息 jQuery 方法。此函数将自动将keydown事件处理程序添加到页面上的所有文本框中。通过使用不同的选择器,您可以将其控制到或多或少的粒度级别:

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

    这将使所有文本框忽略Enter键,并具有自动应用于可能添加到页面(或可能由ASP.NET生成)的任何新HTML或ASP.NET控件的优势。

        6
  •  0
  •   Heather    14 年前

    对于任何其他具有相同问题的人,如果此代码不能阻止事件触发,那么这对我很有用:

    if (window.event.keyCode == 13) {    
        event.returnValue=false;     
        event.cancel = true;
    }
    
    推荐文章