0

クリックすると次の 2 つのことを行う 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() を使用できません。

ありがとう、

4

1 に答える 1

0

このように、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 
}
于 2015-01-19T05:49:36.937 に答える