2014-02-13 84 views
1

我有一個鏈接按鈕,在點擊時不會發送回傳。下面是代碼LinkBut​​ton不會觸發回發

<script type="text/javascript"> 
    $(function() { 
     $('#divTabs').tabs({ 
      show: function() { 
       var sel = $('#divTabs').tabs('option', 'selected'); 
       $('#<%= hfLastTab.ClientID %>').val(sel); 
      }, 
      selected: '<%= hfLastTab.Value %>' 
     }); 
    }); 
</script> 

<div id="divTabs"> 
    <ul> 
     <li runat="server" id="TabBar1" ><asp:LinkButton ID="TabLink1" runat="server" OnClick="TabLink1_Click" >&nbsp;Link1&nbsp;</asp:LinkButton></li> 
     <li runat="server" id="TabBar2" ><asp:LinkButton ID="TabLink2" runat="server" OnClick="TabLink2_Click">&nbsp;Link2&nbsp;</asp:LinkButton></li> 
     <li runat="server" id="TabBar3" ><asp:LinkButton ID="TabLink3" runat="server" OnClick="TabLink3_Click">&nbsp;Link3&nbsp;</asp:LinkButton></li> 
    </ul> 
    .... 
</div> 

而後面的代碼:

protected void TabLink1_Click(object sender, System.EventArgs e) 
{ 
    SelectTopBar(); 
    SetSelectTab("TabBar1"); 
} 

protected void TabLink2_Click(object sender, System.EventArgs e) 
{ 
    SelectTopBar(); 
    SetSelectTab("TabBar2"); 
} 

protected void TabLink3_Click(object sender, System.EventArgs e) 
{ 
    SelectTopBar(); 
    SetSelectTab("TabBar3"); 
} 

我試圖把斷點在代碼隱藏,並沒有擊中。頁面也不刷新。如果我使用,那麼它會做提交,一切似乎都很好。 我也試着看看是否有多個<form>標籤,但沒有。 我也確保在aspx頁面中,這些點擊事件是綁定的。

[編輯]:鏈接按鈕位於jquery選項卡內。因此,而不是使用普通的<a href...作爲jQuery的例子,它不做任何回發,我用asp鏈接按鈕,並希望回發。

任何想法?

+0

點擊事件是否不會觸發它們的全部或僅爲'TabLink1'? – ekad

+0

@ekad他們都不工作 – rcs

+0

或者,也許這三個linkbuttons'

'標籤? – ekad

回答

0

找到了一些解決方法。我在<div id="divTabs">之外定義了另一個鏈接按鈕,並且<div id="divTabs">內部的鏈接按鈕將調用外部鏈接按鈕。因此,代碼變得像

<asp:LinkButton ID="LinkButton1" runat="server" OnClick="TabLink1_Click" ></asp:LinkButton> 
<asp:LinkButton ID="LinkButton2" runat="server" OnClick="TabLink2_Click" ></asp:LinkButton> 
<asp:LinkButton ID="LinkButton3" runat="server" OnClick="TabLink3_Click" ></asp:LinkButton> 

<div id="divTabs"> 
    <ul> 
     <li runat="server" id="TabBar1" ><asp:LinkButton ID="TabLink1" runat="server">&nbsp;Link1&nbsp;</asp:LinkButton></li> 
     <li runat="server" id="TabBar2" ><asp:LinkButton ID="TabLink2" runat="server">&nbsp;Link2&nbsp;</asp:LinkButton></li> 
     <li runat="server" id="TabBar3" ><asp:LinkButton ID="TabLink3" runat="server">&nbsp;Link3&nbsp;</asp:LinkButton></li> 
    </ul> 
    .... 
</div> 

在後面的代碼中,Page_Load功能

TabLink1.OnClientClick = "document.getElementById('" + LinkButton1.ClientID + "').click();"; 
TabLink2.OnClientClick = "document.getElementById('" + LinkButton2.ClientID + "').click();"; 
TabLink3.OnClientClick = "document.getElementById('" + LinkButton3.ClientID + "').click();"; 

我猜jQuery庫可能會產生一定的影響,使得該鏈接不叫回傳裏面,所以我正在使用上面的解決方法。

0

您是否嘗試過將responseredirect作爲每個事件的最後一行,如下例所示?

protected void TabLink1_Click(object sender, System.EventArgs e) 
{ 
    SelectTopBar(); 
    SetSelectTab("TabBar1"); 
    Response.Redirect(Request.Url.AbsoluteUri); 


} 
+0

試過了,但不起作用,我把斷點在函數的開頭(SelectTopBar),它不被調用,所以Response.Redirect也不會被調用。 – rcs

-1

也許是.NET框架的錯, 我__doPostBack沒有在所有的頁面,因爲我編譯我的項目使用Visual Studio的較新版本。我將「目標框架」從「.NET框架4.0」更改爲「.NET框架3.0」,並在此之後重建項目,並已工作。

0

萬一其他人在尋找。我有LinkBut​​ton的OnClick事件沒有觸發的相同問題,並通過簡單地使用「OnCommand =」而不是「OnClick =」來修復它。

+0

沒有爲我做任何事,同樣的行爲 –

0

<script type="text/javascript"> 
 
    $(function() { 
 
     $('#divTabs').tabs({ 
 
      show: function() { 
 
       var sel = $('#divTabs').tabs('option', 'selected'); 
 
       $('#<%= hfLastTab.ClientID %>').val(sel); 
 
      }, 
 
      selected: '<%= hfLastTab.Value %>' 
 
     }); 
 
    }); 
 
</script> 
 

 
<div id="divTabs"> 
 
    <ul> 
 
     <li runat="server" id="TabBar1" ><asp:LinkButton ID="TabLink1" CauseValidation="false" runat="server" OnClick="TabLink1_Click" >&nbsp;Link1&nbsp;</asp:LinkButton></li> 
 
     <li runat="server" id="TabBar2" ><asp:LinkButton ID="TabLink2" runat="server" CauseValidation="false" OnClick="TabLink2_Click">&nbsp;Link2&nbsp;</asp:LinkButton></li> 
 
     <li runat="server" id="TabBar3" ><asp:LinkButton ID="TabLink3" runat="server" CauseValidation="false" OnClick="TabLink3_Click">&nbsp;Link3&nbsp;</asp:LinkButton></li> 
 
    </ul> 
 
    .... 
 
</div>

使用的CausesValidation =「假」

0

如果有人在尋找實際有效的解決方案,這是因爲你用JavaScript莫名其妙地擺弄和壓倒一切的.NET回傳行爲。

在我的情況下,它只是使用Bootstrap並添加data-toggle="buttons" e。標記的按鈕組,如:

<div class="btn-group btn-group-sm btn-group-justified" data-toggle="buttons"> 

,是由引導JavaScript的認可,因爲它需要在羣裏看這些按鈕能夠正確顯示其切換狀態(即添加/刪除「激活」類/來自孩子)。

解決方案:刪除了該數據切換並使用一些C#內聯代碼實現切換狀態高亮顯示。

相關問題