2008-09-30 3 views
4

У меня есть страница ASP.NET с элементом управления gridview на ней с столбцом CommandButton с активными командами delete и select.Я хочу, чтобы ASP.NET GridView не реагировал на кнопку ввода

Нажатие клавиши ввода приводит к срабатыванию первой кнопки команды в gridview, которая удаляет строку. Я не хочу, чтобы это произошло. Могу ли я изменить элемент управления gridview таким образом, чтобы он больше не реагировал на нажатие клавиши ввода?

На экране есть текстовое поле и кнопка. Им не нужно реагировать на попадание, но вы должны иметь возможность заполнить текстовое поле. В настоящее время мы открываем диалоговое окно подтверждения, чтобы предотвратить случайное удаление, но нам нужно что-то лучше этого.

Это разметка для GridView, как вы можете видеть это внутри 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> 
+0

Я не могу воспроизвести это, что заставляет меня поверить, что есть что-то вне Gridview, заставляя кнопку удаления отвечать на клавишу Enter. У вас есть несколько javascript, работающих в форме. Если вы можете опубликовать свою разметку, которая также будет полезна. – dbugger 2008-10-03 13:12:26

ответ

0

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

4

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

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

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

+0

Работает ли onkeydown одинаково во всех браузерах для общих элементов ввода? Кто-то здесь сказал использовать onkeyup из-за некоторой причуды Firefox. – CMPalmer 2008-10-24 15:42:48

0

Это хороший способ использования 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; 
     } 
    }); 

}); 

Это сделает все текстовые поля игнорировать клавишу ввод и имеют преимущество быть автоматически применены к любому новому HTML или ASP.Net управления, которые вы можете добавить на страницу (или которая может быть сгенерирована ASP.Net).

0

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

if (window.event.keyCode == 13) {  
    event.returnValue=false;  
    event.cancel = true; 
} 
1

В случае 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 
Смежные вопросы