如果使用表格添加行,則下面的代碼將設置新行的默認值。 如果使用工具欄中的jqGrid內聯添加按鈕添加行,則不調用這些方法,並且未設置默認值。如果在jqgrid中使用內聯添加按鈕添加行,如何設置默認值
如何強制內聯添加執行與下面的代碼相同的邏輯?
var lastSelectedRow;
$grid.navGrid("#grid_toppager", {
del: true,
add: true,
view: true,
edit: true
},
{},
{
addedrow: 'beforeSelected',
url: '/Grid/Add?_entity=Desktop',
beforeInitData: function() {
// todo: how to call this method from inline add
var rowid = $grid.jqGrid('getGridParam', 'selrow');
if (rowid === null) {
alert('Select row before adding');
return false;
}
},
afterShowForm: function(formID) {
// todo: how to set default values as this method sets from inline add
var selRowData,
rowid = $grid.jqGrid('getGridParam', 'selrow');
$('#' + 'Recordtype' + '.FormElement').val('Veerg');
$('#' + 'Nait2' + '.FormElement')[0].checked = true;
selRowData = $grid.jqGrid('getRowData', rowid);
$('#' + 'Baas' + '.FormElement').val(selRowData.Baas);
$('#' + 'Liigid' + '.FormElement').val(selRowData.Liigid);
}
);
$grid.jqGrid('inlineNav', '#grid_toppager', {
addParams: {
position: "beforeSelected",
rowID: '_empty',
useDefValues: true,
addRowParams: {
keys: true,
onEdit : onInlineEdit
}
},
editParams: {
editRowParams: {
onEdit : onInlineEdit
}
},
add: true,
edit: false,
save: true,
cancel: true
});
function onInlineEdit(rowId) {
if (rowId && rowId !== lastSelectedRow) {
cancelEditing($grid);
lastSelectedRow = rowId;
}
}
更新
我試圖代碼
$grid.jqGrid('inlineNav', '#grid_toppager', {
addParams: {
position: "beforeSelected",
rowID: '_empty',
useDefValues: true,
addRowParams: {
keys: true,
extraparam: { _dokdata: FormData },
onSuccess : function (jqXHR) {
alert('addp oncuss');
jqXHRFromOnSuccess=jqXHR;
return true;
},
afterSave: function (rowID) {
alert('afeesave addp ');
cancelEditing($grid);
afterDetailSaveFunc(rowID,jqXHRFromOnSuccess);
jqXHRFromOnSuccess=null;
},
onError: errorfunc,
afterRestore : setFocusToGrid,
oneditfunc : function (rowId) {
var selRowData, selRowId ;
if (rowId && rowId !== lastSelectedRow) {
cancelEditing($grid);
selRowId = $grid.jqGrid('getGridParam', 'selrow');
if (selRowId) {
selRowData = $grid.jqGrid('getRowData', selRowId);
$('#' + rowId + '_Reanr').val(selRowData.Reanr);
}
lastSelectedRow = rowId;
}
}
}
}
);
只有oneditfunc func被調用。如何強制onSuccess,afterSave,onError等方法也被調用?在回答
更新2
我加補丁的jqGrid從GitHub建議,並試圖
$.extend(jQuery.jgrid.inlineEdit, {
addParams: {
position: "beforeSelected",
rowID: '<%= EntityBase.NewRowIdPrefix %>',
useDefValues: true,
addRowParams: {
keys: true,
extraparam: { _dokdata: FormData },
onSuccess : function (jqXHR) {
jqXHRFromOnSuccess=jqXHR;
return true;
},
afterSave: function (rowID) {
cancelEditing($grid);
<% if (Model is RowBase) { %>
afterDetailSaveFunc(rowID,jqXHRFromOnSuccess);
<% } else { %>
afterGridSaveFunc(rowID,jqXHRFromOnSuccess);
<% } %>
jqXHRFromOnSuccess=null;
},
onError: errorfunc,
afterRestore : setFocusToGrid,
oneditfunc : function (rowId) {
if (rowId && rowId !== lastSelectedRow) {
cancelEditing($grid);
lastSelectedRow = rowId;
}
}
}
}
});
我此時進入不會終止在線添加。這段代碼中的所有參數都被忽略。
非常感謝。有問題的代碼從當前行中檢索默認值,如果當前行未設置,則不允許添加行。如何使用defaultValue實現這個? – Andrus 2012-01-15 20:45:34
@安德魯斯:完全是代碼做不同的事情。像$('#'+'Recordtype'+'.FormElement')。val('Veerg');'和'$('#'+'Nait2'+'.FormElement')[] = true;'是默認值的純粹設置。由於其他設置,我不明白你爲什麼不在'onEdit'處理程序中進行設置(在你的案例中的'onInlineEdit'函數中)? – Oleg 2012-01-15 21:28:05
我需要從當前行獲取值。我不知道如何獲取onInlineEdit中的當前行值。可能當前已經添加了行,沒有辦法獲得以前的行值。如果沒有當前行,則內聯添加應該被阻止。 onInlineedit不允許加載添加操作,新行已添加。 – Andrus 2012-01-16 20:29:09