2012-10-10 72 views
0

我有一個自定義的web控件* .ascx文件。我試圖模擬用戶使用java腳本在gridview中單擊更新按鈕。我有我的.ascx頁面頂部的這個腳本:模擬用戶點擊gridview javascript中的udate按鈕

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" type="text/javascript"> 

     $(document).keypress(function (e) { 
      if (e.which == 13) { 
       document.getElementById("LinkButton1").click(); 
      } 
     }); 

    </script> 

的「LinkBut​​ton1」就設在這個模板字段:

<asp:TemplateField ShowHeader="False"> 
         <EditItemTemplate> 
          <asp:LinkButton ID="LinkButton1" runat="server" onKeyPress="" UseSubmitBehavior="True" CausesValidation="True" 
           CommandName="Update" TabIndex="13" Text="Update" ></asp:LinkButton> 
          &nbsp;<asp:LinkButton ID="LinkButton2" runat="server" CausesValidation="False" 
           CommandName="Cancel" Text="Cancel"></asp:LinkButton> 
         </EditItemTemplate> 
         <ItemTemplate> 

我缺少什麼或者做錯了嗎?

回答

0

嘗試將無法工作,因爲點擊僅適用於連接事件不是一個錨這就是一個LinkBut​​ton呈現爲。

可以使用此..

$(document).keypress(function (e) { 
     if (e.which == 13) { 
    simulate(document.getElementById("LinkButton1"), "click"); 

     } 
    }); 

函數模擬(元件,eventName的){ VAR選項=延伸(defaultOptions,參數[2] || {}); var oEvent,eventType = null;

for (var name in eventMatchers) { 
    if (eventMatchers[name].test(eventName)) { eventType = name; break; } 
} 

if (!eventType) 
    throw new SyntaxError('Only HTMLEvents and MouseEvents interfaces are supported'); 

if (document.createEvent) { 
    oEvent = document.createEvent(eventType); 
    if (eventType == 'HTMLEvents') { 
     oEvent.initEvent(eventName, options.bubbles, options.cancelable); 
    } 
    else { 
     oEvent.initMouseEvent(eventName, options.bubbles, options.cancelable, document.defaultView, 
      options.button, options.pointerX, options.pointerY, options.pointerX, options.pointerY, 
      options.ctrlKey, options.altKey, options.shiftKey, options.metaKey, options.button, element); 
    } 
    element.dispatchEvent(oEvent); 
} 
else { 
    options.clientX = options.pointerX; 
    options.clientY = options.pointerY; 
    var evt = document.createEventObject(); 
    oEvent = extend(evt, options); 
    element.fireEvent('on' + eventName, oEvent); 
} 
return element; 

}

功能擴展(目的地,源){ 爲(在源VAR屬性) 目的地[屬性] =源[屬性]; 返回目的地; }

變種eventMatchers = { 'HTMLEvents':/ ^(?:負載|卸載|中止|誤差|選擇|變化|提交|復位|焦點|模糊|調整大小|滾動)$ /, 「MouseEvents ':/ ^(?: click | dblclick | mouse(?:down | up | move | out))$/ };

變種defaultOptions = { pointerX:0, pointerY:0, 按鈕:0, 中ctrlKey:假, 方altKey:假, Shift鍵,:假, metaKey:假, 氣泡:真, 取消:true };

+0

編輯器顯然搞亂了格式。 順便說一句,你正在控制權呈現靜態ID? –

+0

是的,ID是靜態的。我只是用設計器來創建沒有C#代碼的網格。 – briskovich

+0

也沒有工作。我很卡住! – briskovich

0

您可以

document.getElementById('<%# ((GridViewRow)Container).FindControl("LinkButton2").ClientID %>').click(); 
+0

我試過了,它沒有工作。 「GridViewRow」應該是gridview的Id嗎? – briskovich

+0

你在你的控制鏈接上調用你的函數,但它不是id,它是type,鏈接:http://msdn.microsoft.com/fr-fr/library/system.web.ui.webcontrols.gridviewrow%28v=vs.80% 29.aspx –