#jqgrid
#jqgrid
Вопрос:
Мне нужно передать или сделать доступным имя столбца jqgrid colModel функции, запускаемой событием jqgrid «onclickSubmit:», определенным в параметрах редактирования navGrid, но я не знаю, как это сделать.
вот фрагменты кода jqgrid и javascript:
..., onclickSubmit: fixpostdata}, // navGrid edit options
.
.
.
var fixpostdata = function(params, postdata){
var rowid = $('#tab3-grid').getGridParam('selrow');
// when the onclickSubmit event fires and calls this function,
// a string containing a jqgrid colmodel column name needs to be
// made available in order to modify that cell's value contained
// in the postdata array prior to posting it to the server.
columnName = ???;
var value = $('#tab3-grid').jqGrid('getCell', rowid, columnName );
postdata[ columnName ] = value;
return;
}
Кто-нибудь может помочь?
кроме того,
что содержится в аргументе params?
Комментарии:
1. Что-то не так в том, что вы хотите заархивировать. Функция обратного вызова onclickSubmit будет вызвана перед отправкой всей формы. Таким образом, это не зависит от любого столбца сетки. Более того, я не вижу никакой связи вашего вопроса с автозаполнением пользовательского интерфейса jQuery. Попробуйте изменить текст вашего вопроса, чтобы описать исходную проблему , с которой вы столкнулись. Использование
onclickSubmit
уже является способом реализации, который может быть не лучшим.2. @Oleg — Хорошо … я переформулировал вопрос, чтобы быть более понятным. Я использую событие onclickSubmit, потому что, согласно документу jqgrid, оно делает массив postdata доступным для модификации после построения и перед отправкой его на сервер. Функции необходимо знать имя столбца, прежде чем она сможет изменить его значение в массиве postdata. Метод отлично работает с именем столбца, встроенным в функцию, но я хочу сделать функцию доступной для других сеток с другими именами столбцов, которые нужны функции.
3. Я все еще не понимаю, что вы имеете в виду, потому что jqGrid автоматически отправляет информацию об измененных столбцах в формате, который вам нужен. Вы не должны ничего делать. В опубликованные данные будут включены
id
и значения всех редактируемых столбцов . Имена столбцов будут использоваться в качестве имен параметров, которые будут отправлены на сервер. Имя параметра rowid по умолчанию —id
. Дополнительно будет отправленoper
параметр со значением «редактировать», «добавить» или «удалить». Вы можете использовать Fiddler или Firebug для проверки HTTP-трафика.4. @Oleg — Ответ, который я ищу, связан с тем, как jqgrid определяет, что помещается в массив postdata в editform submit. В поле jqgrid edittype:’select’ отображается метка выбора, а jqgrid помещает значение выбора в массив postdata. Однако для использования автозаполнения пользовательского интерфейса jquery в jqgrid editoptions dataqinit: требуется поле edittype:’текст’. действие jqgrid по умолчанию заключается в том, чтобы поместить то, что отображается в текстовом поле, в массив postdata. Я хочу отобразить выбранную метку автозаполнения, но необходимо опубликовать значение.
5. Итак, я сохраняю значение в скрытом столбце при запуске события автозаполнения select:. Затем значение извлекается функцией fixpostdata, когда оно запускается событием jqgrid onclickSubmit. затем функция заменяет метку значением в массиве postdata перед отправкой на сервер. Но для извлечения сохраненного значения функции необходимо знать идентификатор строки и имя столбца, в котором хранится значение.
Ответ №1:
Если вам нужно отправить содержимое какого-либо скрытого столбца на сервер вместе с другими редактируемыми столбцами, вам нужно включить editable: true
в скрытый столбец и добавить еще одно свойство
editrules: { edithidden: false }
Комментарии:
1. Если я вас правильно понимаю, вы предпочитаете, чтобы я сделал скрытый столбец редактируемым, чтобы jqgrid увидел его и добавил в массив postdata при отправке, но в то же время скрыл его в форме редактирования. Это устранило бы необходимость в событии onclickSubmit и его запускаемой функции для обновления массива postdata. Затем php-скрипт выполнит поиск и отреагирует на существование скрытого имени столбца, отправленного на сервер. Это сработало бы. Однако, если бы я хотел сделать имя скрытого столбца доступным для запускаемой функции, как бы я это сделал?
2. @NelsonM: Я не понимаю, что вы имеете в виду под «jqgrid увидит это». Если я правильно вас понимаю, вы уже скрыли столбец, данные которого хотите отправить во время редактирования формы. В данном случае мое предложение в основном близко к тому, что вам нужно. Если вы просто добавите в скрытый столбец,
editable: true, editrules: { edithidden: false }
вы получите точно такие же результаты, как в отношенииonclickSubmit
. Я полагаю, что вы внедрили в серверный код все, что вам нужно.3. Я просто имею в виду, что ваше предложение позволит сделать скрытый столбец видимым для jqgrid в форме редактирования с целью включения его в массив postdata, будучи скрытым от просмотра пользователями. В jqgrid скрытый столбец по умолчанию не включается в массив postdata при отправке формы редактирования.
4. Если бы в jqgrid был edittype:’autocomplete’, который функционировал бы подобно типу редактирования ‘select’, у нас не было бы этих вопросов и ответов. Но я все еще хотел бы знать, как передать данные в функцию fixpostdata.
5. @NelsonM: Мое предложение означает, что скрытый столбец, который вы хотите отправить, будет не виден , но информация из столбца будет включена в форму как скрытые данные , а затем она будет отправлена на сервер в точно таком же формате, который вы описали в своем вопросе. Просто попробуйте это, и вы увидите результаты. Их нет
edittype:'autocomplete'
. Вопрос оfixpostdata
функции заключается в неправильном состоянии. Если вы хотите отправить некоторую информацию из какого-либо скрытого столбца на сервер, вы должны знать, какая информация вам нужна. Итак, я не понимаю кодcolumnName = ???