Как получить доступ к RadMenuItem, добавленному во время выполнения, из Javascript / Jquery?

#javascript #c# #jquery #telerik

#javascript #c# #jquery #telerik

Вопрос:

Я добавляю RadMenuItem в ContextMenu во время выполнения в Telerik RadFileExplorer, как показано ниже: я хочу знать, как я могу получить доступ к этой кнопке radmenuitem с помощью JS / Jquery. Я хочу включить / отключить эту кнопку на стороне клиента :

 RadMenuItem lastModifiedDate = new RadMenuItem("Last Modified Date");
lastModifiedDate.PostBack = false;               
lastModifiedDate.Value = "LastModifiedDate";
FileExplorer.TreeView.ContextMenus[0].Items.Add(lastModifiedDate);
FileExplorer.GridContextMenu.Items.Add(lastModifiedDate.Clone());
  

aspx:

  <telerik:RadFileExplorer runat="server" ID="FileExplorer" </telerik:RadFileExplorer>
  

Обновленный код :

 function attachHandlers(explorer, args) {
            var toolbar = explorer.get_toolbar();
            toolbar.add_buttonClicked(toolbarClicked);
            //support for grid context menu
            var gridContextMenu = explorer.get_gridContextMenu();  
            var menuItem = gridContextMenu.get_items().getItem(0).set_enabled(false);       
            gridContextMenu.add_itemClicked(gridContextMenuClicked); 
           
        }

 function gridContextMenuClicked(toolbar, args)
            {          
             var buttonValue = args.get_item().get_value();
             if (buttonValue == "LastModifiedDate")
             {
                //Do Something          
               
             } 
         }

function toolbarClicked(toolbar, args) {              
            if (args.get_item().get_value() == "folderCommand") 
            {
                // Do something
            }
        } 

    
  

Ответ №1:

Вы проверили эту статью: https://docs .telerik.com/devtools/aspnet-ajax/controls/fileexplorer/how-to/adding-custom-command-buttons

По сути, вы подписываетесь на событие OnClientLoad radFileExplorer:

 <telerik:RadFileExplorer RenderMode="Lightweight" ID="RadFileExplorer1" runat="server" OnClientLoad="attachHandlers">
</telerik:RadFileExplorer>
  

И в его обработчике событий вы можете получить доступ к контекстному меню (и его элементам) следующим образом:

 <script>
function attachHandlers(explorer, args)
{
    //support for grid context menu
    var gridContextMenu = explorer.get_gridContextMenu();

    // disable the menu item if some conditions are met
    var menuItem = gridContextMenu.get_items().getItem(0).disable();
}
</script>
  

Комментарии:

1. Спасибо, я дошел до этого момента, но я хочу отключить одну из опций контекстного меню в событии щелчка контекстного меню в функции ниже и включить ее обратно при нажатии OnClientItemSelected — функция gridContextMenuClicked(панель инструментов, аргументы) { var buttonValue = args.get_item().get_value(); если (buttonValue == «custom_Menu») оповещение («пользовательский элемент контекстного меню нажат»); }

2. Эта строка возвращает undefined — var MenuItem = gridContextMenu.get_items().GetItem(0).disable();

3. можете ли вы проверить, что именно не определено в этой строке — это ContextMenu или get_items() возвращает 0 элементов?

4. .disable() делает его неопределенным, контекстное меню , get_items() возвращает правильные элементы

5. и GetItem(0) также возвращает элемент? можете ли вы попробовать set_enabled(false) вместо disable() ? если это все еще не работает — можете ли вы обновить свой вопрос с помощью имеющегося у вас кода?