2015-02-12 4 views
0

Я хочу добавить дополнительный параметр в jqgrid. Нижеприведенный код не работаетКак добавить дополнительный параметр в ссылку базовой ссылки для jqgrid

formatoptions:{baseLinkUrl:'loadHoldCode/id=?', addParam: '&customerId='+$('#custIdHidden').val()}, 

, но если я жестко кодирую значение параметра, значение передается так, как я хотел.

formatoptions:{baseLinkUrl:'loadHoldCode/id=?', addParam: '&customerId="123"}, 

Пожалуйста, помогите мне, что я должен изменить или должен ли я следовать другому подходу.

UPDATE: с использованием пользовательских Formater, я пытался и до сих пор я не вижу какой-либо связи

name: 'holdCode', 
    width: 100, 
    formatter:function (cellvalue, options, rowObject) { 
     return '<a src="loadHoldCode/id=?&customerId=' + rowObject.customerId + '">' + 
      cellvalue + "</a>";},       
    searchoptions:{sopt: ['cn', 'eq', 'ne', 'lt', 'le', 'gt', 'ge', 'nu', 'nn', 'in', 'ni']}, 
    sortable: true, 
    editable: false 

ответ

2

Вместо использования predefinedformatter showlink, я хотел бы реализовать использование пользовательских форматировщиком.

Если у вас есть скрытый столбец, как показано ниже, просто создайте src.

{ name: 'customerId', index: 'customerId', hidden: true }, 
{ name: 'link', index: 'link', title: false, 
    formatter: function (cellvalue, options, rowObject) { 
     return '<a href="loadHoldCode/id=?&customerId=' + rowObject.customerId + '" target="_blank">' + 
      cellvalue + "</a>"; 
    } 
} 
+0

Нет. Я не получаю гиперссылку вообще. – user2375298

+0

У вас возникли ошибки Javascript? Обновите сообщение с помощью кода colModel. –

+0

Если rowObject.customerId возвращает вас «undefined», то вместо этого используйте rowObject [columnIndex], чтобы получать данные из любого столбца строки. Обновлен мой код, а также использовать атрибут href в теге . –

0

Прежде всего я хочу, чтобы очистить почему исходный код

formatoptions: { 
    baseLinkUrl: 'loadHoldCode/id=?', 
    addParam: '&customerId='+$('#custIdHidden').val() 
}, 

не может работать правильно. Это означает только то, что formatoptions имущество соответствующего colModel должно быть начато с объектом с двумя свойствами baseLinkUrl и addParam. Значение обоих свойств будет вычисляться после во время инициализации. Таким образом, у вас будет $('#custIdHidden').val() значение на момент создания сетки.

Было бы лучше использовать конструкцию как

formatoptions: { 
    baseLinkUrl: 'loadHoldCode/id=?', 
    addParam: function() { 
     return '&customerId=' + $('#custIdHidden').val(); 
    } 
}, 

, но он будет работать только в том случае jqGrid будет проверить, является ли значение addParam является функция или нет. Форматировщик "showlink" не проверяет какие-либо параметры для функции (см. the line кода jqGrid). Поэтому ** вы не можете использовать formatter: "showlink" для выполнения вашего требования.

Я хотел бы предложить вам использовать custom formatter (см here соответствующий пример кода, где $.param поддерживает свойства как функции) или использовать formatter: "dynamicLink", которые вы можете скачать here (см jqGrid.dynamicLink.js). Это очень простой и очень гибкий форматтер. Вы можете увидеть более подробную информацию и примеры использования форматирования here и here.

+0

Привет, Олег, если мне нужно добавить параметр, который является частью строки jqgrid? возможно ли тогда? – user2375298

+0

@ user2375298: Это возможно, и я предложил вам некоторые варианты реализации. Если вы хотите использовать пользовательский форматтер, то реализация должна соответствовать ** входным данным сетки **, которые вы используете. Вы использовали '$ ('# custIdHidden'). Val()' в исходном коде. Это означает, что вы хотели бы разместить ** то же значение ** во всех ячейках столбцов. Значение 'rowObject.customerId' означает, что у вас есть свойство customerId' в каждом элементе ввода. Таким образом, это означает разные значения для каждой строки. Более того, если вы используете 'rowObject.customerId', а не' rowObject [12] 'или какой-либо другой синтаксис. Он должен быть в данных – Oleg

+0

@ user2375298: В каком формате есть входные данные из сетки? Не могли бы вы предоставить тестовые данные (по крайней мере, одну строку). Если формат данных соответствует использованию 'jsonReader: {repeatitems: true}' или 'xmlReader: {repeatitems: true}', тогда синтаксис 'rowObject.customerId' будет неправильным. Какой тип данных вы используете («json», «xml», «local», ...)? Используете ли вы 'loadonce: true' (в случае использования' datatype: "json" или 'datatype:" xml "') или нет? Какую версию jqGrid вы используете? – Oleg