如何阻止RadPanelBar导航到哈希

时间:2011-07-27 09:17:46

标签: asp.net ajax telerik 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,但是当单击某个项时,它会向该URL添加一个哈希值。显然,这是因为当控件呈现href时,"#"属性已设置为HTML

我知道我可以在return false事件中OnClientItemClicked,但这会阻止ItemClick事件在服务器上被触发。

正如我所说,这段代码没有真正的错误,它只是让我(以及更重要的是,最终用户)在网址上添加了#

有谁知道如何阻止这种情况发生?

2 个答案:

答案 0 :(得分:1)

OnClientItemClicking 事件中尝试此操作:     eventArgs.set_cancel(真);

参考:http://www.telerik.com/help/aspnet-ajax/panelbar-onclientitemclicking.html


并且,如果你想要发回帖子,我想有一个item.PostBack属性(服务器端)。将其设置为true。它应该发回你 - 如果NavigateUrl是空的(或#)。

答案 1 :(得分: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