JQGrid POST 列的值而不是 ID
JQGrid POST a column's value instead of ID
我正在尝试编辑一条记录,但它没有发送 ID 列的值,而是一直发送我不关心的 table 的 ID。这是代码:
$("#list1").jqGrid({
datatype: 'clientSide',
colNames: ["Id", "Id prodotto", "Nome prodotto", "Quantità",
"Pista", "Politica", "Attivazione", "Bundle",
"Scontato", "Valore sconto", "Twin card", "DN",
"ISDN", "Disabilitato"],
colModel: [
{ name: "id", hidden:true, key:true},
{ name: "idprodotto", hidden:true},
{ name: "prodotto"},
{ name: "quantita"},
{ name: "pista"},
{ name: "politica"},
{ name: "attivazione", formatter: "checkbox"},
{ name: "bundle", formatter: "checkbox"},
{ name: "sconti", formatter: "checkbox"},
{ name: "scontival"},
{ name: "card", formatter: "checkbox"},
{ name: "numero"},
{ name: "isdn", formatter: "checkbox"},
{ name: "disabilitato", width:100, sortable: false, resizable:false, hidden:true }
],
sortname: "prodotto",
sortorder: "asc",
pager: "#pager1"
})
.navGrid('#pager1', {add: false, del: false});
在这个页面中有两个 table 可能会有所帮助,这是第一个:
$("#list").jqGrid({
datatype: 'clientSide',
colNames: [
"Id",
// "Id cliente",
"Numero", "RagSociale cliente", "Anno",
"Data di ordine", "Id agente", "Nome agente", "Cognome agente",
"Id agenzia", "RagSociale agenzia", "Id utente", "Nome utente",
"Data d'inserimento", "Note", "Disabilitato",""],
colModel: [
{ name: "id", hidden:true, key:true },
// { name: "idCliente"},
{ name: "numero"},
{ name: "ragSocCliente"},
{ name: "anno"},
{ name: "dataOrdine"},
{ name: "idAgente"},
{ name: "nomeAgente"},
{ name: "cognomeAgente"},
{ name: "idAgenzia"},
{ name: "ragSocAgenzia"},
{ name: "idUser"},
{ name: "nomeUser"},
{ name: "dataInserimento"},
{ name: "note"},
{ name: "disabilitato", width:100, sortable: false, resizable:false, hidden: true},
{ name: "dataModifica", width:100, hidden: false}
],
sortname: "dataModifica",
sortorder: "desc",
pager: "#pager",
onSelectRow: function (id) {
sessionStorage.setItem("idEdit", $("#list").jqGrid('getCell', id, 'id'));
$.get("getCorpoByNumero.do", {
id: sessionStorage.getItem("idEdit")
}, function (data) {
$("#list1").clearGridData();
for (var i = 0; i < data.length; i++) {
var corpo = data[i];
$("#list1").addRowData((i+1), corpo);
}
});
}
})
不清楚您想 "column's value" 哪个 POST 而不是 ID?哪个网格有问题?您将 navGrid
用于网格 #list1
而未指定 并且 editurl
看起来不正确。
第二格使用addRowData
的填充很糟糕!尤其糟糕的是使用值 0
、..data.length
作为 rowid 而不是从服务器(来自 "getCorpoByNumero.do"
)返回的 id。更改网格的 data
参数并按 .trigger("reloadGrid")
:
重新加载它会更有效
onSelectRow: function (id) {
sessionStorage.setItem("idEdit", id);
$.get("getCorpoByNumero.do", {
id: id
}, function (data) {
var $grid1 = $("#list1"), p = $grid1.jqGrid("getGridParam");
p.data = data;
$grid1.trigger("reloadGrid");
});
}
此外,如果您在页面上创建多个网格,则严格建议使用 idPrefix
。 jqGrid 的标准行为是将网格的所有 <tr>
元素的 id
属性(设置 rowid)设置为输入数据的 id
属性 的值。如果两个网格具有相同的 id
值,它会产生重复的 id。例如在 #list1
网格中使用 idPrefix: "g1_"
将强制向网格的所有 id
值添加 "g1_"
前缀。它修复了可能的 id 重复项。向服务器发送数据时会自动去除前缀。
最后一句话。我建议您从网格中删除不需要的 { name: "id", hidden:true, key:true }
列。 rowid 将自动使用 id
属性 的输入数据。您可以在 onSelectRow
回调中仅使用 id
而不是 $("#list").jqGrid('getCell', id, 'id')
并获得相同的数据。您可以用同样的方式删除其他隐藏的列(disabilitato
和 idprodotto
)。内部数据仍将具有 所有输入属性,您可以使用 getLocalRow
访问数据。
我建议将 datatype: 'clientSide'
替换为更常见的 datatype: 'local'
并验证您使用的是哪个版本的 jqGrid。我推荐你使用free jqGrid的最新版本(4.13.1)。是我开发的jqGrid的for
我正在尝试编辑一条记录,但它没有发送 ID 列的值,而是一直发送我不关心的 table 的 ID。这是代码:
$("#list1").jqGrid({
datatype: 'clientSide',
colNames: ["Id", "Id prodotto", "Nome prodotto", "Quantità",
"Pista", "Politica", "Attivazione", "Bundle",
"Scontato", "Valore sconto", "Twin card", "DN",
"ISDN", "Disabilitato"],
colModel: [
{ name: "id", hidden:true, key:true},
{ name: "idprodotto", hidden:true},
{ name: "prodotto"},
{ name: "quantita"},
{ name: "pista"},
{ name: "politica"},
{ name: "attivazione", formatter: "checkbox"},
{ name: "bundle", formatter: "checkbox"},
{ name: "sconti", formatter: "checkbox"},
{ name: "scontival"},
{ name: "card", formatter: "checkbox"},
{ name: "numero"},
{ name: "isdn", formatter: "checkbox"},
{ name: "disabilitato", width:100, sortable: false, resizable:false, hidden:true }
],
sortname: "prodotto",
sortorder: "asc",
pager: "#pager1"
})
.navGrid('#pager1', {add: false, del: false});
在这个页面中有两个 table 可能会有所帮助,这是第一个:
$("#list").jqGrid({
datatype: 'clientSide',
colNames: [
"Id",
// "Id cliente",
"Numero", "RagSociale cliente", "Anno",
"Data di ordine", "Id agente", "Nome agente", "Cognome agente",
"Id agenzia", "RagSociale agenzia", "Id utente", "Nome utente",
"Data d'inserimento", "Note", "Disabilitato",""],
colModel: [
{ name: "id", hidden:true, key:true },
// { name: "idCliente"},
{ name: "numero"},
{ name: "ragSocCliente"},
{ name: "anno"},
{ name: "dataOrdine"},
{ name: "idAgente"},
{ name: "nomeAgente"},
{ name: "cognomeAgente"},
{ name: "idAgenzia"},
{ name: "ragSocAgenzia"},
{ name: "idUser"},
{ name: "nomeUser"},
{ name: "dataInserimento"},
{ name: "note"},
{ name: "disabilitato", width:100, sortable: false, resizable:false, hidden: true},
{ name: "dataModifica", width:100, hidden: false}
],
sortname: "dataModifica",
sortorder: "desc",
pager: "#pager",
onSelectRow: function (id) {
sessionStorage.setItem("idEdit", $("#list").jqGrid('getCell', id, 'id'));
$.get("getCorpoByNumero.do", {
id: sessionStorage.getItem("idEdit")
}, function (data) {
$("#list1").clearGridData();
for (var i = 0; i < data.length; i++) {
var corpo = data[i];
$("#list1").addRowData((i+1), corpo);
}
});
}
})
不清楚您想 "column's value" 哪个 POST 而不是 ID?哪个网格有问题?您将 navGrid
用于网格 #list1
而未指定 并且 editurl
看起来不正确。
第二格使用addRowData
的填充很糟糕!尤其糟糕的是使用值 0
、..data.length
作为 rowid 而不是从服务器(来自 "getCorpoByNumero.do"
)返回的 id。更改网格的 data
参数并按 .trigger("reloadGrid")
:
onSelectRow: function (id) {
sessionStorage.setItem("idEdit", id);
$.get("getCorpoByNumero.do", {
id: id
}, function (data) {
var $grid1 = $("#list1"), p = $grid1.jqGrid("getGridParam");
p.data = data;
$grid1.trigger("reloadGrid");
});
}
此外,如果您在页面上创建多个网格,则严格建议使用 idPrefix
。 jqGrid 的标准行为是将网格的所有 <tr>
元素的 id
属性(设置 rowid)设置为输入数据的 id
属性 的值。如果两个网格具有相同的 id
值,它会产生重复的 id。例如在 #list1
网格中使用 idPrefix: "g1_"
将强制向网格的所有 id
值添加 "g1_"
前缀。它修复了可能的 id 重复项。向服务器发送数据时会自动去除前缀。
最后一句话。我建议您从网格中删除不需要的 { name: "id", hidden:true, key:true }
列。 rowid 将自动使用 id
属性 的输入数据。您可以在 onSelectRow
回调中仅使用 id
而不是 $("#list").jqGrid('getCell', id, 'id')
并获得相同的数据。您可以用同样的方式删除其他隐藏的列(disabilitato
和 idprodotto
)。内部数据仍将具有 所有输入属性,您可以使用 getLocalRow
访问数据。
我建议将 datatype: 'clientSide'
替换为更常见的 datatype: 'local'
并验证您使用的是哪个版本的 jqGrid。我推荐你使用free jqGrid的最新版本(4.13.1)。是我开发的jqGrid的for