Как отключить контекстное меню кроме как в сетке телерика FileExplorer?

Я пытался отключить ненужное контекстное меню, когда устанавливал сетку с помощью ContextMenus. По умолчанию, если щелкнуть пустую часть сетки, меню «Удалить» отключается.

Однако после добавления настраиваемого меню, такого как «Загрузка», оно отображается в контекстном меню, даже если элемент не выбран (т. Е. Как я могу его загрузить?). Поэтому я хочу отключить ненужное меню или сделать его невидимым, кроме как в контекстном меню строки сетки.

Я использую телерик ASP.NET AJAX contorl 2009 Q2.

Заранее спасибо.


person San    schedule 23.07.2009    source источник


Ответы (1)


Этот фрагмент кода должен помочь - в основном вам нужно прикрепить обработчик к меню, показывающему событие, проверить целевой элемент (элемент, по которому вы щелкнули правой кнопкой мыши) и, если это сама область сетки, - отключить элемент меню.

<script type="text/javascript">
function OnClientLoad(explorer)
{
    explorer.get_gridContextMenu().add_showing(disableItem);
}
function disableItem(sender, args)
{
    var target = args.get_targetElement();
    if (target && target.className == "rgDataDiv")
    {
        var dlItem = sender.findItemByValue("download");
        dlItem.set_enabled(false);
    }
}</script><telerik:RadFileExplorer runat="server" ID="RadFileExplorer1" OnClientLoad="OnClientLoad"></telerik:RadFileExplorer>
person lingvomir    schedule 24.07.2009
comment
Отличное решение! Тем не менее, я все еще включил элемент в контекстном меню заголовка. - person San; 24.07.2009
comment
Вам просто нужно добавить еще несколько проверок в функцию disableItem(). Этот код проверяет только пустую область сетки. верхний/нижний колонтитулы - это разные элементы, поэтому пункт меню не будет отключен там, если не будет еще нескольких IF :) - person lingvomir; 25.07.2009