Jqgrid 内联编辑行

Jqgrid 内联编辑行,jqgrid,inline-editing,Jqgrid,Inline Editing,我现在从jqGrid开始,有一些问题我不理解。 我正在做一个网格内联编辑,但它只是编辑第一行。如果我在任何一行中单击,它将仅编辑第一行。我不知道发生了什么,如果有人能告诉我如何一步一步地做,那将对我帮助很大 这是我代码的一部分: $(函数(){ var lastSel; $(“#列表”).jqGrid({ url:'php.php', 数据类型:“xml”, mtype:“POST”, colNames:['ac_n_quad'、'ac_l_circ'、'ac_n_circ'、'ac_fin_g


我现在从jqGrid开始,有一些问题我不理解。 我正在做一个网格内联编辑,但它只是编辑第一行。如果我在任何一行中单击,它将仅编辑第一行。我不知道发生了什么,如果有人能告诉我如何一步一步地做,那将对我帮助很大

这是我代码的一部分:

$(函数(){
var lastSel;
$(“#列表”).jqGrid({
url:'php.php',
数据类型:“xml”,
mtype:“POST”,
colNames:['ac_n_quad'、'ac_l_circ'、'ac_n_circ'、'ac_fin_g'、'ac_pot'、'ac_volt'、'ac_n_polos'、'ac_t_prot'、'ac_v_prot'、'ac_cabo',
“ac_fd”、“ac_fp”、“ac_ctr”、“ac_pot_a”、“ac_pot_b”、“ac_pot_c”、“ac_pos_1”、“ac_pos_2”、“ac_calc”],
colModel:[
{名称:'ac_n_quad',索引:'ac_n_quad',宽度:110,对齐:'right',可编辑:true,键:true},
{名称:'ac_l_circ',索引:'ac_l_circ',宽度:65,对齐:'right',可编辑:true},
{名称:'ac_n_circ',索引:'ac_n_circ',宽度:120,对齐:'right',可编辑:true,键:true},
{名称:'ac_fin_g',索引:'ac_fin_g',宽度:60,对齐:'right',可编辑:true},
{名称:'ac_pot',索引:'ac_pot',宽度:55,对齐:'right',可编辑:true},
{名称:'ac_volt',索引:'ac_volt',宽度:60,对齐:'right',可编辑:true},
{名称:'ac_n_polos',索引:'ac_n_polos',宽度:100,对齐:'right',可编辑:true},
{名称:'ac_t_prot',索引:'ac_t_prot',宽度:100,对齐:'right',可编辑:true},
{名称:'ac_v_prot',索引:'ac_v_prot',宽度:70,对齐:'right',可编辑:true},
{名称:'ac_cabo',索引:'ac_cabo',宽度:60,对齐:'right',可编辑:true},
{名称:'ac_fd',索引:'ac_fd',宽度:55,对齐:'right',可编辑:true},
{名称:'ac_fp',索引:'ac_fp',宽度:55,对齐:'right',可编辑:true},
{名称:'ac_-ctr',索引:'ac_-ctr',宽度:60,对齐:'right',可编辑:true},
{名称:'ac_pot_a',索引:'ac_pot_a',宽度:70,对齐:'right',可编辑:true},
{名称:'ac_pot_b',索引:'ac_pot_b',宽度:70,对齐:'right',可编辑:true},
{名称:'ac_pot_c',索引:'ac_pot_c',宽度:70,对齐:'right',可编辑:true},
{名称:'ac_pos_1',索引:'ac_pos_1',宽度:70,对齐:'right',可编辑:true},
{名称:'ac_pos_2',索引:'ac_pos_2',宽度:70,对齐:'right',可编辑:true},
{名称:'ac_calc',索引:'ac_calc',宽度:65,对齐:'right',可编辑:true},
cmTemplate:{align:'center',可编辑:true},
OnSetrow:功能(id){
if(id&&id!==lastSel){
$(此).restoreRow(lastSel);
lastSel=id;
}
$(this).editRow(id,true);
},
prmNames:{ac_n_quad:“id”},
editurl:'clientArray',
自动宽度:“true”,
高度:“自动”,
rowNum:10,
行列表:[10,20,30,40,50,60,70,80,90,100],
sortname:“ac_n_quad,ac_n_circ”,
排序器:“asc”,
寻呼机:“#寻呼机”,
viewrecords:是的,
gridview:没错,
描述:“表circ_69”
});
jQuery('#list').jqGrid('gridResize');
jQuery(“#list”).jqGrid('navGrid','#pager',和{
编辑:对,
加:是的,
戴尔:是的,
搜索:假,
刷新:false
});
});

您的代码中有许多错误。最重要的是使用
key:true
作为一列。可以看到,您在两列
'ac\u n\u quad'
'ac\u n\u circ'的定义中包含了该属性。当jqGrid填充网格时,它使用
作为网格主体,
作为行,
作为网格上的单元格。了解jqGrid始终为每个
(行)分配一些
id
属性很重要。HTML不允许在一个HTML页面上有重复的
id
。如果对某些列使用
key:true
,则jqGrid将内部选项
keyIndex
分配给
colModel
数组中具有
key:true
选项的列的索引。在您的例子中,我认为jqGrid将使用最后一列
key:true
。因此,
'ac\u n\u circ'
列中的值将用作ID

如果在
'ac\u n\u circ'
列中有重复的值,则会产生许多不同的非常奇怪的效果(在不同的web浏览器中会有所区别)。例如,如果单击一行,则可以选择另一行。在编辑过程中也可以有不同的奇怪效果

因为您使用了
prmNames:{ac_n_quad:“id”}
(这也是错误的。正确的将是
prmNames:{id:“ac_n_quad”}
),所以我可以怀疑
ac_n_quad
是真正唯一的id。因此您应该只在
ac_n_quad
列中使用
键,并且您必须从任何其他列中删除该属性(
'ac\u n\u circ'

此外,您还可以减少和简化代码。
colModel
元素属性的默认值如中所述(请参阅表中的“默认”列)。例如,
width
align
editable
的默认值为150,“left”和false。您在所有列中使用
align:'right',editable:true
,并且最常用的是
width:70
。因此您可以使用

cmTemplate:{align:'right',可编辑:true,宽度:70}
而不是您现在使用的
cmTemplate:{align:'center',editable:true}
。它允许您将
colModel
简化为

colModel:[
{name:'ac_n_quad',宽度:110,键:true},
{名称:'ac_l_circ',宽度:65},
{名称:'ac_n_circ',宽度:120},
{名称:'ac_fin_g',宽度:60},
{名称:'ac_pot',宽度:55},
{名称:'ac_volt',宽度:60},
{名称:'ac_n_polos',宽度:100},
{名称:'ac_t_prot',宽度:100},
{name:'ac_v_prot'},
{名称:'ac_cabo',宽度:60},
{名称:'ac_fd',宽度:55},
{名称:'ac_fp',宽度:55},
{名称:'ac_ctr',宽度:60},
{名称:'ac_pot_a'},
{名称:'ac_pot_b'},