0

我有一个这样的 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 falseOnClientItemClicked事件中,但这将阻止ItemClick事件在服务器上被触发。

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

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

4

2 回答 2

1

在您的OnClientItemClicking事件中尝试此操作: eventArgs.set_cancel(true);

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


而且,如果您希望回帖发生,我想有一个 item.PostBack 属性(服务器端)。将其设置为真。如果 NavigateUrl 为空(或 #),它应该将您发回。

于 2011-08-08T11:36:15.943 回答
0

几乎兼容所有浏览器,IE9 及更高版本:

Javascript(无 jQuery):

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

Javascript(使用 jQuery):

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

在您的 ASP 中,将OnClientLoadRadPanelBar 设置为stripTelerikHashtag.

于 2014-08-04T19:32:55.887 回答