如何阻止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添加一个哈希值。显然,这是因为当控件呈现HTML时,href属性被设置为"#"

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

正如我所说的,这段代码没有真正的错误,它只是让我(更重要的是,最终用户)感到困扰,因为URL中添加了一个#

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

onclientitemclicked 事件中试试:

eventArgs.set_cancel(真正的);

裁判:http://www.telerik.com/help/aspnet-ajax/panelbar-onclientitemclicking.html


并且,如果你想要post back发生,我想有一个项目。PostBack属性(服务器端)。将其设置为true。如果NavigateUrl是空的(或#),它应该会把你送回。

几乎兼容所有浏览器,IE9及以上版本:

Javascript(不含jQuery):

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

Javascript (with jQuery):

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

在您的ASP中,将RadPanelBar上的OnClientLoad设置为stripTelerikHashtag

最新更新