我有一个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
事件在服务器上被触发。
正如我所说,这段代码没有真正的错误,它只是让我(以及更重要的是,最终用户)在网址上添加了#
。
有谁知道如何阻止这种情况发生?
答案 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
。