Ошибка подсетки jqGrid с полем Date в качестве KEY-параметра + asp.net mvc3
Я использую jQGrid с функцией Subgrid, столбец "Мой ключ" имеет дату, когда я нажимаю "+", запускается subGridRowExpanded и создается SubGrid.
Код работает нормально, когда используется другой столбец, который имеет Число в качестве ключевого поля, но выдает ошибку при использовании даты в качестве ключевого поля, и он будет иметь значение 18.03.2014
"Ошибка времени выполнения Microsoft JScript: синтаксическая ошибка, нераспознанное выражение: #grid_3/18/2014". Мой основной идентификатор сетки - grid
Он отлично работает, когда я использую GMMNumber в качестве ключа, но не работает, когда я использую NCChitDate, который является полем даты со значением в формате даты.
Вот мой код ниже:
function LoadNCTRequestGrid() {
var cols = "";
var colmodels = "";
if (!ReqType) {
cols = ['Date', 'NC Chit Print', '2nd Scan Disposition', '%', "Items Merch'd in Place", 'Items On Request', 'Carton Completed', '%', 'Open Balance (Items On Request Carton Complete)'];
colmodels = [{ name: 'NCChitDate', index: 'NCChitDate', width: 300, key: true },
{ name: 'NCChitPrintQty', index: 'NCChitPrintQty', width: 300 },
{ name: 'SecondScanDisp', index: 'SecondScanDisp', width: 300 },
{ name: 'PercentageSecondScanDisp', index: 'PercentageSecondScanDisp', width: 180 },
{ name: 'ItemsMerchandised', index: 'ItemsMerchandised', width: 280 },
{ name: 'ItemsOnRequest', index: 'ItemsOnRequest', width: 280 },
{ name: 'CartonCompleted', index: 'CartonCompleted', width: 280 },
{ name: 'PercentageCartonCompleted', index: 'PercentageCartonCompleted', width: 280 },
{ name: 'OpenBalance', index: 'OpenBalance', width: 280 }
];
}
else{
cols = ['','GMM', 'NC Chit Print', '2nd Scan Disposition', '%', "Items Merch'd in Place", 'Items On Request', 'Carton Completed', '%', 'Open Balance (Items On Request Carton Complete)'];
colmodels = [
{ name: 'GMMNumber', index: 'GMMNumber', width: 300, key:true, hidden:true},
{ name: 'GMMDesc', index: 'GMMDesc', width: 300 },
{ name: 'NCChitPrintQty', index: 'NCChitPrintQty', width: 300 },
{ name: 'SecondScanDisp', index: 'SecondScanDisp', width: 300 },
{ name: 'PercentageSecondScanDisp', index: 'PercentageSecondScanDisp', width: 180 },
{ name: 'ItemsMerchandised', index: 'ItemsMerchandised', width: 280 },
{ name: 'ItemsOnRequest', index: 'ItemsOnRequest', width: 280 },
{ name: 'CartonCompleted', index: 'CartonCompleted', width: 280 },
{ name: 'PercentageCartonCompleted', index: 'PercentageCartonCompleted', width: 280 },
{ name: 'OpenBalance', index: 'OpenBalance', width: 280 }
];
}
$("#grid").jqGrid({
url: '@Url.Action("GetNCTRequest")',
mtype: "POST",
datatype: 'json',
colNames: cols,
colModel: colmodels,
width: 1140,
height: '100%',
rowNum: 5000,
subGrid: true,
afterInsertRow: function (rowId, aData, rowelem) {
var theGrid = $(this);
},
beforeSelectRow: function (rowid, e) {
return false;
},
loadComplete: function () {
$("tr.jqgrow:odd").css("background", "#DDDDDC");
$(".jqgrow:odd").hover(
function () {
$(this).css("background-color", "#E11A2B");
},
function (event) { $(this).css("background-color", "#DDDDDC"); }
);
},
subGridRowExpanded: function (subgridDivId, rowId) {
var subgridTableId = subgridDivId + '_t';
$("#" + subgridDivId).html("<table id='" + subgridTableId + "'></table>");
var cols = "";
var colmodels = "";
if(!ReqType){
cols = ['GMM', 'DIV', 'Dept', 'Vend', 'UPC', 'NC Chit Print', '2nd Scan Disposition', "Items Merch'd in Place", 'Items On Request', 'Carton Completed', 'Open Balance (Items On Request Carton Complete)', 'Carton ID'];
colmodels = [
{ name: 'GMMDesc', index: 'GMMDesc', width: 300 },
{ name: 'DivisionDesc', index: 'DivisionDesc', width: 300 },
{ name: 'DepartmentName', index: 'DepartmentNumber', width: 300 },
{ name: 'VendorID', index: 'VendorID', width: 100 },
{ name: 'UPCNumber', index: 'UPCNumber', width: 100 },
{ name: 'NCChitPrintQty', index: 'NCChitPrintQty', width: 300 },
{ name: 'SecondScanDisp', index: 'SecondScanDisp', width: 300 },
{ name: 'ItemsMerchandised', index: 'ItemsMerchandised', width: 280 },
{ name: 'ItemsOnRequest', index: 'ItemsOnRequest', width: 280 },
{ name: 'CartonCompleted', index: 'CartonCompleted', width: 280 },
{ name: 'OpenBalance', index: 'OpenBalance', width: 280 },
{ name: 'CartonID', index: 'CartonID', width: 100 },
{ name: 'NCChitDate', index: 'NCChitDate', width: 10, key: true, hidden : true }
]
}
else{
cols = ['Date', 'DIV', 'Dept', 'Vend', 'UPC', 'NC Chit Print', '2nd Scan Disposition', "Items Merch'd in Place", 'Items On Request', 'Carton Completed', 'Open Balance (Items On Request Carton Complete)', 'Carton ID'];
colmodels = [
{ name: 'NCChitDate', index: 'NCChitDate', width: 100},
{ name: 'DivisionDesc', index: 'DivisionDesc', width: 150 },
{ name: 'DepartmentName', index: 'DepartmentNumber', width: 200 },
{ name: 'VendorID', index: 'VendorID', width: 50 },
{ name: 'UPCNumber', index: 'UPCNumber', width: 100 },
{ name: 'NCChitPrintQty', index: 'NCChitPrintQty', width: 50 },
{ name: 'SecondScanDisp', index: 'SecondScanDisp', width: 50 },
{ name: 'ItemsMerchandised', index: 'ItemsMerchandised', width: 50 },
{ name: 'ItemsOnRequest', index: 'ItemsOnRequest', width: 100 },
{ name: 'CartonCompleted', index: 'CartonCompleted', width: 50 },
{ name: 'OpenBalance', index: 'OpenBalance', width: 50 },
{ name: 'CartonID', index: 'CartonID', width: 100 }
]
}
$("#" + jQuery.jgrid.jqID(subgridTableId)).jqGrid({
mtype: "POST",
datatype: 'json',
url: encodeURI('@Url.Action("GetnctRequestIndividualDetails")' + '?reqValue=' + rowId),
colNames: cols,
colModel: colmodels,
rowNum: 9999,
height: '100%'
});
$(".ui-icon-carat-1-sw").css("background-image", "none");
}
});
}
1 ответ
Ты можешь использовать $.jgrid.jqID
чтобы избежать мата-символов:
$("#" + subgridDivId).html("<table id='" + $.jgrid.jqID(subgridTableId) + "'></table>");
В качестве альтернативы вы можете выбрать просто другой id
значение. Например, вы можете создать идентификатор:
var subgridTableId = $.jgrid.randId() + '_t';
Функция $.jgrid.randId
это очень просто (см. 3 строки кода). Он генерирует уникальное значение, которое можно использовать как id
приписывать.
Кроме того, я настоятельно рекомендую вам использовать idPrefix
(см. здесь и здесь). Например idPrefix: "s_" + rowId + "_"
значение хорошо для подсетки. Опция gridview: true
, autoencode: true
рекомендуется для всех сеток. Опция autowidth: true
практично для подсеток. Ответ может быть полезен и для вас.
Я рекомендую вам дополнительно обновить jqGrid до текущей версии 4.6.0.