فعال سازی و پردازش Inline Add در jqGrid
نویسنده: وحید نصیری
تاریخ: ۱۳۹۳/۰۴/۳۰ ۸:۵
آدرس: www.dntips.ir
| مطالب | ۳۶۹۴ |
| نویسندگان | ۲۷۶ |
| گروههای مطالب | ۱۰۲۴ |
| نقشههای راه | ۱۱۹ |
| دورهها | ۱۴ |
| اشتراکها | ۱۷۹۱۴ |
$('#list').jqGrid({
caption: "آزمایش نهم",
// ....
colModel: [
{
name: 'myac', width: 80, fixed: true, sortable: false,
resize: false,
//formatter: 'actions',
formatter: function (cellvalue, options, rowObject) {
if (cellvalue === undefined && options.rowId === "_empty") {
// در حالت نمایش ردیف توکار جدید دکمههای ویرایش و حذف معنی ندارند
options.colModel.formatoptions.editbutton = false;
options.colModel.formatoptions.delbutton = false;
}
return $.fn.fmatter.actions(cellvalue, options, rowObject);
},
formatoptions: {
keys: true,
afterSave: function (rowid, response) {
},
delbutton: true,
delOptions: {
url: "@Url.Action("DeleteUser", "Home")"
}
}
}
],
//...
}).navGrid(
'#pager',
//...
)
.jqGrid('gridResize', { minWidth: 400, minHeight: 150 })
.jqGrid('inlineNav', '#pager',
{
edit: true, add: true, save: true, cancel: true,
edittext: "ویرایش", addtext: "جدید", savetext: "ذخیره", canceltext: "لغو",
addParams: {
// اگر میخواهید ردیفهای جدید در ابتدا ظاهر شوند، این سطر را حذف کنید
position: "last", //ردیفهای جدید در آخر ظاهر میشوند
rowID: '_empty',
useDefValues: true,
addRowParams: getInlineNavParams(true)
},
editParams: getInlineNavParams(false)
});
function getInlineNavParams(isAdd) {
return {
// استفاده از آدرسهای مختلف برای حالات ویرایش و ثبت اطلاعات جدید
url: isAdd ? '@Url.Action("AddUser", "Home")' : '@Url.Action("EditUser","Home")',
key: true,
restoreAfterError: false, // این مورد سبب میشود تا اعتبارسنجی سمت سرور قابل اعمال شود
oneditfunc: function (rowId) {
// نمایش دکمههای ذخیره و لغو داخل همان سطر
$("#jSaveButton_" + rowId).show();
$("#jCancelButton_" + rowId).show();
},
successfunc: function () {
var $self = $(this);
setTimeout(function () {
$self.trigger("reloadGrid"); // دریافت کلید اصلی ردیف از سرور
}, 50);
},
errorfunc: function (rowid, response, stat) {
if (stat != 'error') // this.Response.StatusCode == 200
return;
var result = $.parseJSON(response.responseText);
if (result.success === false) {
//نمایش خطای اعتبار سنجی سمت سرور پس از ویرایش یا افزودن
$.jgrid.info_dialog($.jgrid.errors.errcap,
'<div class="ui-state-error">' + result.message + '</div>',
$.jgrid.edit.bClose,
{ buttonalign: 'center' });
}
}
};
} if (_usersInMemoryDataSource.Any(
user => user.Name.Equals(postData.Name, StringComparison.InvariantCultureIgnoreCase)))
{
this.Response.StatusCode = 500; //این مورد برای افزودن داخل ردیفهای گرید لازم است
return Json(new { success = false, message = "نام کاربر تکراری است" }, JsonRequestBehavior.AllowGet);
} $('#list').jqGrid({
caption: "آزمایش نهم",
//.........
}).navGrid(
'#pager',
//enabling buttons
{ add: true, del: true, edit: true, search: false },
//edit option
{
//.........
errorTextFormat: serverErrorTextFormat
},
//add options
{
//.........
errorTextFormat: serverErrorTextFormat
},
//delete options
{
//.........
})
.jqGrid('gridResize', { minWidth: 400, minHeight: 150 })
.jqGrid('inlineNav', '#pager',
{
//.........
});
function serverErrorTextFormat (response) {
// در حالتیکه وضعیت خروجی از سرور 200 نیست فراخوانی میشود
var result = $.parseJSON(response.responseText);
if (result.success === false) {
return result.message;
}
return "لطفا ورودیهای وارد شده را بررسی کنید";
}