【问题标题】:telerik radmenu cancel postback after actiontelerik radmenu 在操作后取消回发
【发布时间】:2012-10-17 19:09:59
【问题描述】:

我有一个 radmenu(Telerik 控件),单击它时应该做两件事:1. 打开菜单,2. 取消回发。

这里是菜单:

<telerik:RadMenu ID="radMnu1" runat="server" ClickToOpen="true" OnClientItemClicked="MenuItemClicked" OnClientItemClicking="MenuItemClickingCancelPostback">
   <Items>...
   </Items>
</telerik:RadMenuItem>

这里是 JS 方法:

function MenuItemClicked(sender, args) {
        var itemValue = args.get_item().get_value();

        var menu = $find("ctl00_radMnu1");
        var menuItem = menu.findItemByText(itemText);
        if (menuItem) menuItem.open();
        }
    }

    function MenuItemClickingCancelPostback(sender, args) {
        args.set_cancel(true); // Cancel the postback 
    }

问题是,如果我启用 OnItemClicking 事件,它会执行它,取消回发然后永远不会进入 OnItemClicked(因为回发已被取消)。如果我禁用 OnItemClicking,它会触发 OnItemClicked 并正确打开菜单,但也会进行回发。

如何同时取消打开菜单和回发?不知何故,我需要执行这两个事件。我会取消 OnItemClicked 事件的回发,但 set_cancel() 在其参数中不可用。

谢谢,

【问题讨论】:

  • 为什么两个动作都不使用 ItemClicking 事件?顺便说一句,您不需要在菜单客户端事件中调用 $find 方法,因为您已经从发件人参数中获得了它
  • 还有,为什么不使用PostBack 菜单项属性来防止回发? telerik.com/help/aspnet-ajax/…
  • 您的第一条评论有效,请写为答案,以便我给予积分

标签: javascript telerik client-side radmenu


【解决方案1】:

请使用 onitemclicking 编写代码,它肯定会起作用, 像这样

function MenuItemClickingCancelPostback(sender, args) {       
    // first open the menu then cancel the postback.
    var menu = $find("ctl00_radMnu1");
    var menuItem = menu.findItemByText(itemText);
    if (menuItem) menuItem.open();
    args.set_cancel(true); // Cancel the postback 
}

【讨论】:

    猜你喜欢
    • 2016-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多