2009-06-17 9 views
1

イメージボタンを更新ボタンとして使用するグリッドビューがあります。ユーザーが行を編集するときに、ユーザーがEnterキーを押して行を更新できるようにしたいと思います。私がいる問題は、私がやったことでテキストボックスにいくつかのJavaScriptをフックアップです。RowCommandイベントが発生するものの、のCommandNameはまだので、私の更新コードが実行されることは決してありません代わりに更新 」の「編集」であるということですRowDataBoundハンドラ:次のようにEnterキーを押してGridview行を更新できない問題

Protected Sub uxShoppingCart_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) 
     If e.Row.RowType = DataControlRowType.DataRow Then 
      Dim gvr As GridViewRow = DirectCast(e.Row, GridViewRow) 
      If (e.Row.RowState And DataControlRowState.Edit) = DataControlRowState.Edit Then 
       Dim edit_Qty As TextBox = DirectCast(gvr.FindControl("edit_Qty"), TextBox) 
       Dim uxUpdateButton As ImageButton = DirectCast(gvr.FindControl("uxUpdateButton"), ImageButton) 
       uxQty.Attributes.Add("onkeypress", "return clickButton(event,'" & uxUpdateButton.ClientID & "')") 
       edit_Qty.Focus() 
      End If 
     End If 
    End Sub 

javascript関数は次のとおりです。

function clickButton(e, buttonid) { 
    var bt = document.getElementById(buttonid); 
    if (typeof bt == 'object') { 
     if (navigator.appName.indexOf("Netscape") > (-1)) { 
      if (e.keyCode == 13) { 
       bt.click(); 
       return false; 
      } 
     } 
     if (navigator.appName.indexOf("Microsoft Internet Explorer") > (-1)) { 
      if (event.keyCode == 13) { 
       bt.click(); 
       return false; 
      } 
     } 
    } 
} 

そしてここでは、ボタンの宣言は、私が

<EditItemTemplate> 
    <span style="display: inline; white-space: nowrap;"> 
     <asp:ImageButton ID="uxUpdateButton" runat="server" CausesValidation="True" CommandName="Update" ImageUrl="~/images/icons/accept.png" AlternateText="Update" ToolTip="Update"></asp:ImageButton> 
     <asp:ImageButton ID="uxCancelButton" runat="server" CausesValidation="False" CommandName="Cancel" ImageUrl="~/images/icons/cancel.png" AlternateText="Cancel" ToolTip="Cancel"></asp:ImageButton> 
    </span> 
</EditItemTemplate> 

ですf更新ボタンをマウスでクリックすると、CommandNameの "Update"が期待どおりに渡されます。javascriptを使用して "クリック"しないでください。どんな助けもありがとう。

答えて

0

私は最終的に、新鮮な目でこれに戻ることができました。問題は、フィールドで使用しているajaxcontroltoolkitのmaskededextenderです。エクステンダーがonkeypressイベントをインターセプトしていると思います。

私の解決策です。私はmaskededitextenderを取り除く、代わりにストレートJavaScriptを使用して、テキストボックスのOnKeyPressイベントに私のjavascriptの機能が割り当てられてしまった:

AddQty.Attributes.Add("onkeypress", "return NumericInput(event,'" & uxAddButton.ClientID & "')") 

そして、ここではjavascriptのだ:

<script type="text/javascript"> 
    function NumericInput(e, id) { 
     if (!e) e = window.event; 
     if (e.keyCode > 31 && (e.keyCode < 48 || e.keyCode > 57)) { 
      return false; 
     } else { 
      if (e.keyCode == 13) { 
       var bt = document.getElementById(id); 
       if (bt != null) { 
        bt.click(); 
        return false; 
       } 
      } 
     } 
    } 
</script> 
関連する問題