2012-01-12 12 views
2

、このようになりまし無効radmenuクリックイベント

MenuList = new Telerik.Web.UI.RadMenuItem(); 
    MenuChild1 = new Telerik.Web.UI.RadMenuItem(); 
    MenuList.Text = "Orders"; 
    MenuList.Value = "Orders"; 

    RadMenu_Control.Items.Add(MenuList); 

    if (genRights.Find(delegate(UserRights u) { return u.RIGHT_NAME == "Group Master"; }) != null`enter code here`) 
    { 
     CategoryList = new Telerik.Web.UI.RadMenuItem(); 
     CategoryList.Text = "Purchase Order"; 
     CategoryList.Value = "order"; 
     MenuList.Items.Add(CategoryList); 
     //MenuChild1 = new Telerik.Web.UI.RadMenuItem(); 
     //MenuChild1.Text = "PURCHASE ORDER"; 
     //MenuChild1.Value = "order"; 
     //MenuList.Items.Add(MenuChild1); 
    } 
    else 
    { 

    } 

私はそれが子アイテムであるため、「買付注文」の「受注」ではないをクリック無効にします。

答えて

3

まず、イベント「OnClientItemClicking」をRadMenuに追加する必要があります。あなたはこれがあなたの問題を解決していませんが、私は実装しています:)

0

を行く

function DisableRootClick (sender, args) { 
    if (args.get_item().get_items().get_count() != 0 && args.get_item().get_level() == 0) { 
      args.get_item().set_selected(false); 
      args.get_item().set_focused(false); 

      args.set_cancel(true); // Cancel the event 
    } 

} 

そして、ここで:

<telerik:RadMenu ID="RadMenu1" runat="server" OnClientItemClicking="DisableRootClick"> 

そして、ここではjavascript関数DisableRootClickの本体である。このようなドキュメントのこの例の行に沿った何か:RadMenu Client Side Events Documentationと役立つかもしれません。ランダムな子供やトップアイテムを無効にする必要があります。

navigateUrlは、指定されていない場合、常に偽のアンカー「#」になります。問題は、サーバー上で処理したいクリックイベントに対してもこれを行います。ラッドメニューはネストされたサイトマップへのバインディングと動的にメニュー項目を追加するので、テキストのテストをすることにしました。次の手順を実行して、メニュー項目の:

<script type="text/javascript"> 

    function mainRadMenu_OnClientItemClicking(sender, eventArgs) { 

     var item = eventArgs.get_item(); 

     var itemText = item.get_text(); 

     var textOfMenuItemsToNotBeClicked = ['Tools', 'Links', 'No Links', 'Services', 'Summary Reports', '<%= GetOrganizationsAcronymMenuText %>']; 

     var totalMenuItemsToNotBeClicked = textOfMenuItemsToNotBeClicked.length; 

     while (totalMenuItemsToNotBeClicked--) { 

      if (itemText.indexOf(textOfMenuItemsToNotBeClicked[totalMenuItemsToNotBeClicked]) !== -1) { 

       eventArgs.set_cancel(true); 

      } 
     } 
    } 
</script> 


     <telerik:RadMenu ID="RadMenu1" runat="server" OnClientItemClicking="onClicking"> 
     ... 
     </telerik:RadMenu> 

私はよりエレガントな解決策があります、私は、少なくともリソースファイルに文字列を移動し、それらを参照することができ確信しているが、これは今のために働く...

1

もっと簡単な解決策があります。

サーバー側:

RadMenuItem.PostBack = False 

そして、もちろん、あなたは

<telerik:RadMenu runat="server" ID="RadMenu1"> 
    <Items> 
     <telerik:RadMenuItem runat="server" Text="RootMenu" PostBack="False" /> 
    </Items> 
</telerik:RadMenu> 
を使用してコントロールに宣言型の方法でそれを行うことができます
関連する問題