asp.net gridview가 Enter 버튼에 반응하는 것을 방지하고 싶습니다.
-
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;
}