【发布时间】:2013-06-17 10:06:35
【问题描述】:
JqGrid 编辑功能在我的网格中运行良好,但删除功能始终将记录 ID 传递为 0。
@model Shop.Models.ShopModels.lstMainCategory
<table id="list" class="scroll" cellpadding="0" cellspacing="0"></table>
<div id="pager" class="scroll" style="text-align:center;"></div>
<script type="text/javascript">
var myGrid = $('#list');
$(document).ready(function () {
$.jgrid.nav.addtext = "Add";
$.jgrid.nav.edittext = "Edit";
$.jgrid.nav.deltext = "Delete";
$.jgrid.edit.addCaption = "Add Main Category";
$.jgrid.edit.closeAfterAdd = true;
$.jgrid.edit.closeAfterEdit = true;
$.jgrid.edit.editCaption = "Edit Main Category";
$.jgrid.del.caption = "Delete Main Category";
$.jgrid.del.msg = "Delete selected Main Category?";
$.extend($.jgrid.edit, {
beforeSubmit: function () {
$(this).jqGrid("setGridParam", { datatype: "json" });
return [true, "", ""];
}
});
$("#list").jqGrid({
url: '/MainCategory/DynamicGridData/',
datatype: 'json',
mtype: 'GET',
colNames: ['Edit', 'Main Category'],
colModel: [
{ name: 'MaincategoryID', index: 'MaincategoryID', width: 40, align: 'left', /* key: true,*/editable: true, editrules: { edithidden: false }, hidedlg: true, hidden: true },
{ name: 'MainCategoryName', index: 'MainCategoryName', search: true, width: 700, align: 'left', editable: true, edittype: 'text', editrules: { required: true }, formoptions: { elmsuffix: ' *'} }],
pager: jQuery('#pager'),
editurl: '@Url.Action("Update", "MainCategory")',
rowNum: 10,
width: '100%',
height: '100%',
rowList: [5, 10, 20, 50],
viewrecords: true,
loadonce: true,
ignoreCase: true,
caption: 'Main Categories'
}).navGrid('#pager', { edit: true, add: true, del: true, search: true, searchtext: "Search" });
$("#list").jqGrid('filterToolbar', { stringResult: true, searchOnEnter: false, defaultSearch: 'cn' });
$("#list").setGridParam({ data: results.rows, localReader: reader }).trigger('reloadGrid');
</script>
控制器:
public ActionResult Update(lstMainCategory viewModel, FormCollection formCollection)
{
var operation = formCollection["oper"];
lstMainCategory mcat = new lstMainCategory();
rep = new MaincategoryRepository();
if (operation.Equals("add"))
{
mcat.MainCategoryName = viewModel.MainCategoryName;
rep.Create(mcat);
rep.Save();
}
else if (operation.Equals("edit"))
{
mcat.MaincategoryID = viewModel.MaincategoryID;
mcat.MainCategoryName = viewModel.MainCategoryName;
rep.Edit(mcat);
rep.Save();
}
else if (operation.Equals("del"))
{
rep.Delete(viewModel.MaincategoryID);//here MaincategoryID is always 0 so it's not working
rep.Save();
}
return Content("true");
}
编辑
MainCategoryID MainCategory
16 aaa
17 bbb
存储库:
public object DynamicGridData(string sidx, string sord, int page, int rows, bool _search, string searchField, string searchOper, string searchString)
{
dc = new ShopDataContext(DBConnection.Connection);
int pageIndex = Convert.ToInt32(page) - 1;
int pageSize = rows;
int totalRecords = dc.tblMainCategories.Count();
int totalPages = (int)Math.Ceiling((float)totalRecords / (float)pageSize);
List<MainCategory> lst = (from tbm in dc.tblMainCategories
select new MainCategory
{
MaincategoryID=tbm.MainCategoryID,
MainCategoryName=tbm.MainCategory,
DeleteID=tbm.MainCategoryID
}).ToList<MainCategory>().OrderBy(x=>x.MainCategoryName).ToList();
List<MainCategory> Flst;
if (_search && searchField == "MainCategory")
{
Flst = lst.Where(r => r.MainCategoryName.Contains(searchString)).OrderBy(x => x.MainCategoryName).ToList().ToList();
}
else
Flst = lst;
var GridData = new
{
total = totalPages,
page = page,
records = totalRecords,
rows = (
from mcat in Flst
select new
{
i = mcat.MaincategoryID,
cell = new string[] { mcat.MaincategoryID.ToString(), mcat.MainCategoryName.ToString(),mcat.DeleteID.ToString() }
}).ToArray()
};
return GridData;
}
【问题讨论】:
-
您使用哪些数据来填充网格?你能发布两行数据吗?您想向用户显示包含
MaincategoryID的内容吗?哪个值有id用于网格? -
重要的是从
'/MainCategory/DynamicGridData/'返回的准确的 JSON 响应。带有虚拟值的表没有提供额外信息。你用什么作为id(rowid)? -
@Oleg MaincategoryID 是我想在控制器中的删除操作中传递的 ID,我不想将其显示给用户。我添加了两行数据
-
能否包含从“/MainCategory/DynamicGridData/”返回的准确 JSON 响应?您可以使用Fiddler、Firebug 或 IE 的开发者工具来捕获 HTTP 流量。我重复我之前的问题:你想向用户显示 MaincategoryID 的包含吗?
-
您之前的回答 (
var jsonData = rep.DynamicGridData(sidx, sord, page, rows, _search, searchField, searchOper, searchString);) 中的代码没有提供有关您在服务器响应中使用的数据格式的信息。
标签: jquery asp.net asp.net-mvc jqgrid