asp.net gridview가 Enter 버튼에 반응하는 것을 방지하고 싶습니다.

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

  •  02-07-2019
  •  | 
  •  

문제

delete 및 select 명령이있는 명령 부턴 열이있는 gridview 컨트롤이있는 asp.net 페이지가 있습니다.

Enter 키를 누르면 GridView의 첫 번째 명령 버튼이 발생하여 행을 삭제합니다. 나는 이것이 일어나기를 원하지 않는다. GridView 컨트롤을 Enter 키를 누르는 데 더 이상 반응하지 않는 방식으로 변경할 수 있습니까?

화면에 텍스트 상자와 버튼도 있습니다. Enter를 치는 데 반응 할 필요는 없지만 TextBox를 채울 수 있어야합니다. 현재 우리는 우발적 인 삭제를 방지하기 위해 확인 대화 상자를 팝업하지만 이보다 더 나은 것이 필요합니다.

이것은 asp.net updatepanel 내부에 있음을 알 수 있듯이 그리드 뷰의 마크 업입니다 (죄송합니다. 죄송합니다) : (대부분의 열과 서식을 제외했습니다).

<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>
도움이 되었습니까?

해결책

이 솔루션은 전체 페이지의 Enter 키를 차단하고 있습니다.

입력 키를 비활성화합니다

다른 팁

가끔씩 나는 이와 같은 바보 같은 문제를 얻습니다 ... 그러나 보통 나는 단지 빠른 해킹을 구현하고 계속 진행합니다 :)

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

그런 것이 작동해야합니다.

프레 렌더 이벤트에서는 토글을 전환 할 수 있습니다

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

page_load에서 텍스트 상자에 초점을 맞추십시오.

여기 좋은 일이 있습니다 jQuery 그것을하는 방법. 이 기능은 페이지의 모든 텍스트 상자에 키 다운 이벤트 핸들러를 자동으로 추가합니다. 다른 선택기를 사용하면 다소 세분화 된 레벨로 제어 할 수 있습니다.

//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 키를 무시하고 페이지에 추가 할 수있는 새로운 HTML 또는 ASP.NET 컨트롤에 자동으로 적용되는 이점 (또는 ASP.NET에서 생성 할 수 있음).

이 코드가 이벤트가 해고되는 것을 막지 않는 것과 동일한 문제가있는 다른 사람의 경우, 이것은 나에게 효과적이었습니다.

if (window.event.keyCode == 13) {    
    event.returnValue=false;     
    event.cancel = true;
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top