2012-09-18 153 views
0

我目前正在研究一個需要在JavaScript代碼中執行一系列事件後觸發一個asp:按鈕單擊事件的項目。使用javascript觸發asp:按鈕單擊事件

請參考下面我的代碼:

這是我的按鈕,它的Click事件:

<asp:Button ID="btnRefresh" name="btnRefresh" runat="server" Text="btnRefresh" onclick="btnRefresh_Click" /> 

protected void btnRefresh_Click(object sender, EventArgs e) 
{ 
    MyGrid.DataSource = null; 
    MyGrid.DataSource = GetDataForGrid(); 
    MyGrid.DataBind(); 
} 

我已引用保存用於該頁面所有我的JavaScript代碼的JavaScript文件。我這樣做,因爲我真的不喜歡在我的.aspx文件中混合我的JavaScript代碼。

這是函數怎麼看起來像我的外部js文件:

function Refresh() { 
    var btn = $(document).getElementById('btnRefresh'); 
    if (btn) { 
     btn.click(); 
    } 
    else { 
     alert('false'); 
    } 
} 

我也嘗試過其他的方法,我在互聯網上看到了如下所有這些,沒有運氣的:

document.getElementById('btnRefresh'); 
__doPostBack('btnRefresh', ''); 
__doPostBack('btnRefresh', 'Click'); 
$('#btnRefresh').click(); 

有人可以指點我一個好辦法嗎?謝謝!

編輯:

我想這樣做是: 我有一個UpdatePanel內一個gridview。當點擊btnRefresh時,我觸發了一個觸發器。所以基本上,它刷新我的GridView。因此,我不能使用按鈕的OnClick屬性來調用我的javascript函數,因爲我不會首先單擊該按鈕。我需要能夠從我的外部javascript調用btnRefresh_Click事件,以便觸發我的Trigger來更新我的GridView。

編輯2:

我試着用下面的一行在.aspx頁面本身的定義我btn

VAR BTN = $( 「#」);

,我也改變了我的JS代碼如下:

函數刷新(){ 如果(BTN){ btn.click(); } else { alert('false'); }}

的JS能夠看到btn,並通過事件線路btn.click() 去不過,我btnRefresh_Click仍然沒有火起來。我在這裏錯過了什麼嗎?

回答

0

在這裏,您可以使用OnClientClick屬性和提到的功能,這是在外部JS調用的名稱,該物業服務器端事件的執行之前實際執行。

+0

實際上,這個按鈕是隱藏的。請參閱我上面的編輯。我添加了一些關於我希望我的代碼如何工作的註釋。感謝您的迴應! :) – Smiley

0

看看ClientID屬性。

您可以使用該屬性獲取客戶端按鈕的ID,並使用ID觸發點擊。

function Refresh() { 
    var btn = $("#<%=btnRefresh.ClientID%>"); 
    if (btn) { 
     btn.click(); 
    } 
    else { 
     alert('false'); 
    } 
} 

但要留意的是<%=btnRefresh.ClientID%>只能在同一頁面上工作作爲btnRefresh,而不是在外部JS文件。 ClientID由ASP.NET動態生成。

+0

我也試過這個。但是,我正在使用外部JS文件。你有沒有運氣可能知道一種方法來實現這一目標?謝謝。 – Smiley

+0

在你的頁面中定義你的javascript按鈕變量。 – mauris

+0

我試過了,但是我的'btnRefresh_Click'事件仍然沒有啓動。請參閱我上面的編輯。 :( – Smiley

0

既然你引用了你的JS文件,你有兩個選擇。或者將按鈕的ClientID或設置按鈕的ClientIDMode傳遞到Static

我建議你把id傳給JS函數。

function Refresh(id) { 
    var btn = $(document).getElementById(id); 
    if (btn) { 
     btn.click(); 
    } 
    else { 
     alert('false'); 
    } 
} 

當你想它調用另一個JS功能,通過在ClientID

function doSomthing(){ 
    //do this 
    //do that 
    Refresh('<%=btnRefresh.ClientID%>'); 
} 

但正如你說,如果你不喜歡把JS在你的aspx頁面,則只需設置你的按鈕的ClientIDMode = Static

<asp:Button ID="btnRefresh" ClientIDMode="Static" name="btnRefresh" runat="server" Text="btnRefresh" onclick="btnRefresh_Click" /> 
+0

但我怎麼能夠''ClientID'從我的.aspx文件傳遞到外部.js文件,而不必在我的.aspx文件中創建額外的js函數?感謝您。 – Smiley

+0

你打電話怎麼樣以及在哪裏打電話您的刷新js功能? –

相關問題