Необходимо передать имя столбца jqgrid функции, запускаемой событием «onclickSubmit»

#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 = ???