Динамическое контекстное меню в jqGrid - PullRequest
0 голосов
/ 16 ноября 2011

Как мне получить динамическое контекстное меню в jqGrid? Мне нужно отобразить «menu1» для четных строк и «menu2» для нечетных строк? Я пытался использовать плагин contextmenu, но не знаю, как реализовать динамическое переключение между двумя контекстными меню. Спасибо.

Ответы [ 2 ]

0 голосов
/ 16 ноября 2011

Если вам действительно нужно связать просто 'menu1' для четных строк и 'menu2' для нечетных строк, вы можете реализовать привязку к строкам сетки внутри loadComplete.Например, если у вас есть

<div class="contextMenu" id="myMenu1" style="display:none">
    <ul style="width: 200px">
        <li id="edit1">
            <span class="ui-icon ui-icon-pencil" style="float:left"></span>
            <span style="font-size:11px; font-family:Verdana">Edit Row 1</span>
        </li>
        <li id="del1">
            <span class="ui-icon ui-icon-trash" style="float:left"></span>
            <span style="font-size:11px; font-family:Verdana">Delete Row 1</span>
        </li>
    </ul>
</div>
<div class="contextMenu" id="myMenu2" style="display:none">
    <ul style="width: 200px">
        <li id="edit2">
            <span class="ui-icon ui-icon-pencil" style="float:left"></span>
            <span style="font-size:11px; font-family:Verdana">Edit Row 2</span>
        </li>
        <li id="del2">
            <span class="ui-icon ui-icon-trash" style="float:left"></span>
            <span style="font-size:11px; font-family:Verdana">Delete Row 2</span>
        </li>
    </ul>
</div>

, вы можете сделать привязку так:

loadComplete: function () {
    $("tr:even", this).contextMenu('myMenu1', {
        bindings: {
            'edit1': function(trigger) {
                alert ("Edit (menu1) id=" + trigger.id);
            },
            'del1': function(trigger) {
                alert ("Delete (menu1) id=" + trigger.id);
            }
        }
    });
    $("tr:odd", this).contextMenu('myMenu2', {
        bindings: {
            'edit2': function(trigger) {
                alert ("Edit (menu2) id=" + trigger.id);
            },
            'del2': function(trigger) {
                alert ("Delete (menu2) id=" + trigger.id);
            }
        }
    });
}

См. демо .

0 голосов
/ 16 ноября 2011

Хорошо, у вас уже есть контекстное меню для работы, но вам нужно определить, является ли строка четной или нечетной.

Попробуйте следующее:

afterInsertRow: function(rowId, rowData, rowElm) {
  var trElement = $('#' + rowid);
  if(trElement.is(':even'))
    // even contextMenu
  else
    // odd contextMenu
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...