我有一个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
。