Я хочу, чтобы ASP.NET GridView не реагировал на кнопку ввода - PullRequest
4 голосов
/ 30 сентября 2008

У меня есть страница ASP.NET с элементом управления gridview со столбцом CommandButton с активными командами удаления и выбора.

При нажатии клавиши ввода срабатывает первая командная кнопка в виде сетки, которая удаляет строку. Я не хочу, чтобы это случилось. Могу ли я изменить элемент управления 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 ]

5 голосов
/ 24 октября 2008

Время от времени у меня возникают глупые проблемы, подобные этой ... но обычно я просто реализую быстрый взлом и иду дальше:)

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

Нечто подобное должно работать.

1 голос
/ 29 сентября 2011

В событии 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
1 голос
/ 31 октября 2008

Это решение блокирует клавишу ввода на всей странице

Отключить клавишу ввода

0 голосов
/ 27 апреля 2010

Для тех, у кого возникла та же проблема, когда этот код не препятствует запуску события, это сработало для меня:

if (window.event.keyCode == 13) {    
    event.returnValue=false;     
    event.cancel = true;
}
0 голосов
/ 24 октября 2008

Вот хороший 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 и имеет преимущество в том, что автоматически применяется к любым новым элементам управления HTML или ASP.Net, которые вы можете добавить на страницу (или которые могут быть созданы ASP.Net). *

0 голосов
/ 24 октября 2008

В Page_Load установите фокус на текстовое поле.

...