Установка значения по умолчанию Inline Add Jqgrid
В настоящее время у меня есть требование в системе, где мне нужно повторить большую часть данных из последней введенной строки. На самом деле это моя Сетка:
$('#list').jqGrid({
colNames: ['VendedorId', 'Vendedor', 'Especie', 'Cabezas', 'Kilos', 'Precio', 'Guías Venta', 'Vencimiento'],
colModel: [
{ hidden: true, name: 'VendedorId' },
{ editable: true, width: 160, edittype: 'select', editoptions: { dataUrl: '/Clientes/CmbClientes' }, editrules: { required: true }, name: 'Vendedor' },
{ editable: true, width: 70, edittype: 'select', editoptions: { dataUrl: '/Especies/CmbEspecie' }, editrules: { required: true }, name: 'Especie' },
{ align: 'right', width: 50, editable: true, editoptions: { size: 3, maxlength: 3 }, editrules: { number: true }, formatter: 'number', formatoptions: { decimalPlaces: 0 }, name: 'Cabezas' },
{ align: 'right', width: 50, editable: true, editrules: { number: true }, formatter: 'number', formatoptions: { decimalPlaces: 0 }, name: 'Kilos' },
{ align: 'right', width: 50, editable: true, editrules: { number: true, required: true }, formatter: 'currency', formatoptions: { prefix: '$',decimalPlaces: 2 }, name: 'Precio' },
{ editable: true, width: 50, editoptions: { maxlength: 20 }, name: 'GuiasVenta' },
{ align: 'right', width: 70, editable: true, editoptions: { size: 3, maxlength: 3 }, editrules: { number: true, required: true }, formatter: 'number', formatoptions: { decimalPlaces: 0 }, name: 'Vencimiento' }
],
url: '@Url.Action("ListVendedores")',
datatype: 'json',
editurl: '@Url.Action("SaveVendedor")',
mtype: 'POST',
pager: '#vendedoresPager',
prmNames: { id: 'RemateId' },
rowList: [5, 10, 15, 20],
sortname: 'FeriaId',
viewrecords: true,
width: 850
}).jqGrid('navGrid', '#vendedoresPager', { add: false, edit: false, del:true ), search: false },{},{},{ url: '/Remates/BorrarVendedor' }).
jqGrid('inlineNav', '#vendedoresPager',
{
add : true,
edit : true,
save : true,
addParams: {
addRowParams: {
position: "afterSelected",
keys: true,
extraparam: {
...
}
}
},
editParams: {
keys: true,
extraparam: {
...
}
}
});
При добавлении первой строки нет данных по умолчанию, но затем поля Vendedor, Especie, Guías Venta и Vencimiento должны повторять последние введенные данные.
В этом сценарии я представляю два возможных решения: одно использует событие jqGridInlineEditRow, а другое использует автозаполнение. Прочитал этот вопрос о qGridInlineEditRow. Но в этом случае, как я могу получить данные из последней строки сетки и как он должен загрузить данные в новую строку. И прочитайте этот вопрос об автозаполнении.
Может быть, есть другие решения, которые можно прочитать, чтобы получить лучшее приближение к решению.
Кто-нибудь может помочь?
обновление 15/04/2013
Я заменяю кнопку Добавить для пользовательской кнопки, это код:
$("#Agregar").click(function () {
var parameters =
{
initdata: {},
position: "first",
useDefValues: true,
useFormatter: false,
addRowParams: {
keys: true,
extraparam: {
...
},
aftersavefunc: function (rowid) {
var grid = jQuery('#vendedores');
lastSavedAddData = grid.jqGrid("getRowData", rowid);
},
oneditfunc: function (rowid) {
var name;
var grid = jQuery('#vendedores');
for (name in lastSavedAddData) {
if (lastSavedAddData.hasOwnProperty(name)) {
$('#' + rowid +"_"+ name).val(lastSavedAddData[name]);
}
}
}
}
};
jQuery("#vendedores").jqGrid('addRow', parameters);
});
Но это работает только для текстового поля, но не для комбо
1 ответ
Если я правильно понимаю ваш вопрос, использование jQuery UI Autocomplete не зависит от начального заполнения полей ввода последней добавленной строки во время запуска следующего добавления.
Мне кажется, что вы можете сохранить данные, сохраненные в последней добавленной строке внутри aftersavefunc
обратный вызов, определенный в addRowParams
(или использовать jqGridInlineAfterSaveRow
событие альтернативно). Ты можешь использовать oneditfunc
установить последние введенные значения в новом подобии. Например, вы можете использовать
addRowParams: {
position: "afterSelected",
keys: true,
extraparam: {
...
},
aftersavefunc: function (rowid) {
lastSavedAddData = $(this).jqGrid("getRowData", rowid);
},
oneditfunc: function (rowid) {
var name;
for (name in lastSavedAddData) {
if (lastSavedAddData.hasOwnProperty(name)) {
$("#" + $.jgrid.jqID(rowid + "_" + name)).val(lastSavedAddData[name]);
}
}
}
}
где lastSavedAddData
должны быть определены в некоторой внешней области. Это не проверенный код. Я просто хотел показать основную идею. Вы можете расширить код oneditfunc
поддерживать более различные элементы управления, которые вы используете в строке редактирования.