Пользовательские значения для элементов контекстного меню в JQgrid - PullRequest
1 голос
/ 10 декабря 2011

Я использую эту ссылку от Олега и Демо для создания контекстного меню. Есть ли способ передать некоторые динамические значения в каждую строку, кроме rowId. Одним из способов может быть установить скрытые значения для каждой строки и получить значения этих скрытых столбцов, но не уверен, как реализовать эту функцию. Спасибо за любую помощь или предложения ..

    loadComplete: function(data) {
        // Fix the Grid Width...
        fixGridWidth($("#grid"));
        // Context Menu
        $("tr.jqgrow", this).contextMenu('contextMenu', {
            bindings: {
                'abc1': function(trigger) {
        // would like to pass some custom values
                },
                'abc2': function(trigger) {
            // open a link in new window using a hyperlink
                },
                'abc3': function(trigger) {
            // custom logic
                }
            },
            onContextMenu : function(event, menu) {
                //var rowId = $(event.target).parent("tr").attr("id");
                //var grid = $("#grid");
                //grid.setSelection(rowId);                                    
                //return true;                                    
             }
        });

1 Ответ

2 голосов
/ 10 декабря 2011

Вы можете использовать параметр trigger, для которого id инициализирован как идентификатор строки.Таким образом, вы можете использовать getCell или getRowData.Например, метод abc1 может быть похож на следующий

loadComplete: function () {
    var $this = $(this); // it will be the same like $("#grid")
    $("tr.jqgrow", this).contextMenu('contextMenu', {
        bindings: {
            abc1: function(trigger) {
                var rowData = $(this).jqGrid('getRowData', trigger.id);
                // now you can access any data from the row including
                // hidden columns with the syntax: rowData.colName
                // where colName in the value of 'name' property of
                // the column
            },
            ...
        },
        onContextMenu : function(event, menu) {
            ...
        },
        // next settings 
        menuStyle: {
            backgroundColor: '#fcfdfd',
            border: '1px solid #a6c9e2',
            maxWidth: '600px', // to be sure
            width: '100%' // to have good width of the menu
        },
        itemHoverStyle: {
            border: '1px solid #79b7e7',
            color: '#1d5987',
            backgroundColor: '#d0e5f5'
        }
    });

см. здесь еще одна демонстрация, которая использует menuStyle и itemHoverStyle, которые немного улучшают видимость контекстаменю.Демоверсия взята из запроса об ошибке , который я недавно опубликовал.

...