У меня есть jqGrid с включенными РЕДАКТИРОВАТЬ, УДАЛИТЬ, ДОБАВИТЬ и ПРОСМОТРЕТЬ , Теперь моя проблема заключается в том, что когда я нажимаю кнопку редактирования, он полностью открывает диалог с режимом редактирования. Теперь, когда я отправляю свои изменения, он передает индекс строки jqGrid вместо ColID (ColId - это PK с AutoIdentity True). Я хотел бы передать ColID в качестве параметра.
следующий мой фрагмент кода:
jQuery(document).ready(function () {
jQuery("#list").jqGrid({
//url: '/TabMaster/GetGridData',
url: '/TabMaster/DynamicGridData',
datatype: 'json',
mtype: 'GET',
colNames: ['col ID', 'First Name', 'Last Name'],
colModel: [
{ name: 'colID', index: 'colID', width: 100, align: 'left' },
{ name: 'FirstName', index: 'FirstName', width: 150, align: 'left', editable: true },
{ name: 'LastName', index: 'LastName', width: 300, align: 'left', editable: true }
],
pager: jQuery('#pager'),
rowNum: 4,
rowList: [1, 2, 4, 5, 10],
sortname: 'colID',
sortorder: "asc",
viewrecords: true,
gridview: true,
multiselect: true,
imgpath: '/scripts/themes/steel/images',
caption: 'Tab Master Information'
}).navGrid('#pager', { edit: true, add: true, del: true },
//Edit Options
{
savekey: [true, 13],
reloadAfterSubmit: true,
jqModal: false,
closeOnEscape: true,
closeAfterEdit: true,
url: "/TabMaster/Edit/",
afterSubmit: function (response, postdata) {
if (response.responseText == "Success") {
jQuery("#success").show();
jQuery("#success").html("Company successfully updated");
jQuery("#success").fadeOut(6000);
return [true, response.responseText]
}
else {
return [false, response.responseText]
}
}
});
});
вот я получаю JQRowIndex
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Edit(int id, FormCollection updateExisting)
{
TabMasterViewModel editExisting = new TabMasterViewModel();
editExisting = _tabmasterService.GetSingle(x => x.colID == id);
try
{
UpdateModel(editExisting);
_tabmasterService.Update(editExisting);
return Content("Success");
}
catch
{
return Content("Failure Message");
}
}
Вот логика для генерации ответа JSON.
Метод: 1
* Это не отображать ни одной записи, даже не запускать никаких исключений *
public JsonResult DynamicGridData(string OrderByColumn, string OrderType, int page, int pageSize)
{
int pageIndex = Convert.ToInt32(page) - 1;
int totalRecords = GetTotalCount();
int totalPages = (int)Math.Ceiling((float)totalRecords / (float)pageSize);
IQueryable<TabMasterViewModel> tabmasters = _tabmasterService.GetQueryTabMasterList(OrderByColumn, OrderType, page, pageSize);
var jsonData = new
{
total = totalPages,
page = page,
records = totalRecords,
rows = (from tm in tabmasters
select new
{
id = tm.colID,
cell = new string[] { tm.colID.ToString(), tm.FirstName, tm.LastName }
}).ToArray()
};
return Json(jsonData, JsonRequestBehavior.AllowGet);
}
Следующее работает отлично. (это работает нормально, но я хочу использовать метод: 1 вместо метода: 2)
Метод: 2
public ActionResult GetGridData(string sidx, string sord, int page, int rows)
{
return Content(JsonForJqgrid(GetDataTable(sidx, sord, page, rows), rows, GetTotalCount(), page), "application/json");
}
public int GetTotalCount()
{
return Convert.ToInt32(_tabmasterService.Count());
}
public DataTable GetDataTable(string OrderByColumn, string OrderType, int page, int pageSize)
{
TabMasterListViewModel models = _tabmasterService.GetTabMasterList(OrderByColumn, OrderType, pageSize, page);
DataTable dt = new DataTable();
dt.Columns.Add(new DataColumn("colID", Type.GetType("System.Int32")));
dt.Columns.Add(new DataColumn("FirstName", Type.GetType("System.String")));
dt.Columns.Add(new DataColumn("LastName", Type.GetType("System.String")));
foreach (TabMasterViewModel model in models.TabMasterList)
{
DataRow dr = dt.NewRow();
dr[0] = model.colID;
dr[1] = model.FirstName;
dr[2] = model.LastName;
dt.Rows.Add(dr);
}
var rows = dt.Rows.Count;
return dt;
}
public static string JsonForJqgrid(DataTable dt, int pageSize, int totalRecords, int page)
{
int totalPages = (int)Math.Ceiling((float)totalRecords / (float)pageSize);
StringBuilder jsonBuilder = new StringBuilder();
jsonBuilder.Append("{");
jsonBuilder.Append("\"total\":" + totalPages + ",\"page\":" + page + ",\"records\":" + (totalRecords) + ",\"rows\"");
jsonBuilder.Append(":[");
for (int i = 0; i < dt.Rows.Count; i++)
{
jsonBuilder.Append("{\"id\":" + dt.Rows[i][0].ToString() + ",\"cell\":[");
for (int j = 0; j < dt.Columns.Count; j++)
{
jsonBuilder.Append("\"");
jsonBuilder.Append(dt.Rows[i][j].ToString());
jsonBuilder.Append("\",");
}
jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
jsonBuilder.Append("]},");
}
jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
jsonBuilder.Append("]");
jsonBuilder.Append("}");
return jsonBuilder.ToString();
}