2011-07-27 25 views
0

我有一個RadPanelBar這樣...如何停止RadPanelBar導航到一個哈希

<telerik:RadPanelBar 
    ID="ResourcesSubMenuRadPanelBar1" 
    Width="195px" 
    OnItemClick="RadPanelItemClick" 
    ExpandMode="MultipleExpandedItems"  
    OnClientItemClicked="RadPanelClientItemClicked"  
    OnClientLoad="RadPanelBarClientLoad"  
    runat="server" 
    AppendDataBoundItems="true" 
    EnableEmbeddedSkins="false" 
    OnClientItemCollapse="RadPanelClientItemClicked" 
    OnClientItemExpand="RadPanelClientItemClicked">  
</telerik:RadPanelBar> 

這一切都如預期,除了一個小東西的作品。在後面的代碼中,我明確地將NavigateUrl屬性設置爲string.Empty,但是當單擊某個項目時,它會向網址添加散列。顯然,這是因爲當控件呈現HTML時,href屬性已設置爲"#"

我知道我可以簡單地從OnClientItemClicked事件中調用return false,但這會停止在服務器上觸發ItemClick事件。

正如我所說的,這段代碼並沒有真正的錯誤,它只是給我(並且更重要的是,最終用戶)添加了一個#的URL。

有誰知道如何阻止這種情況發生?

+0

我懷疑你可以刪除哈希符號,除非你使用一些JavaScript手動去除它。但是您確定將面板欄的NavigateUrl屬性留空,結果爲空href? –

回答

1

OnClientItemClicking事件試試這個: eventArgs.set_cancel(真);

編號:http://www.telerik.com/help/aspnet-ajax/panelbar-onclientitemclicking.html


而且,如果萬一你想回發的情況發生,我想有一個item.PostBack屬性(服務器端)。將其設置爲true。如果NavigateUrl是空的(或#),它應該回發。

+0

這並不能解決我的問題,因爲我不想停止默認設置。我需要點擊來觸發服務器來觸發由telerik ajax經理處理的事件。我已經辭職了,不得不忍受它。 – simonlchilds

+0

如果能解決您的問題,請查看我的更新評論。對不起,不知道這裏有一個小的「添加評論」按鈕:P. – Krishnan

0

在幾乎所有的瀏覽器兼容,IE9和最多:

的Javascript(無jQuery的):

stripTelerikHashtag = function() { 
    [].forEach.call(
     document.querySelectorAll(".rpLink"), 
     function (a) { a.removeAttribute("href") } 
    ); 
}; 

的JavaScript(用jQuery):

stripTelerikHashtag = function() { $(".rpLink").removeAttr("href"); }; 

在你的ASP,設置將RadPanelBar上的OnClientLoad設置爲stripTelerikHashtag