如何在jqGrid中设置空值

如何在jqGrid中设置空值,jqgrid,null,handler,Jqgrid,Null,Handler,我有这个代码,我有一个小问题,当我编辑时,我有codSelected中的rowid值发送给我的处理程序,它由onsetrow事件存储。如果我编辑一行,效果很好,但是如果编辑一行,并且我想立即添加一个新行,我需要这个值(\u codSelected)null,但它与上次编辑的行具有相同的值。我知道我可以在寻呼机中使用addfunc,但是如果我使用这个,我就不能使用jqGrid默认使用的弹出窗口 谢谢 $(“#列表”).jqGrid({ url:“/modulos/mantenimiento/Pro

我有这个代码,我有一个小问题,当我编辑时,我有
codSelected
中的
rowid
值发送给我的处理程序,它由
onsetrow
事件存储。如果我编辑一行,效果很好,但是如果编辑一行,并且我想立即添加一个新行,我需要这个值(
\u codSelected
)null,但它与上次编辑的行具有相同的值。我知道我可以在寻呼机中使用
addfunc
,但是如果我使用这个,我就不能使用jqGrid默认使用的弹出窗口

谢谢

$(“#列表”).jqGrid({
url:“/modulos/mantenimiento/Proveedores.ashx”,
数据类型:“xml”,
mtype:'获取',
colNames:['Codigo'//更多的colNames和colmodels]
colModel:[
{name:'Codigo',index:'PRg_Codigo',edittype:'select',
可编辑:true,editrules:{edithidden:false},editoptions:
{大小:30,数据URL:'/modulos/mantenimiento/grupoproveredores.ashx?
oper=selectAllGroups'},可排序:true}
],
OnSetRow:函数(rowid){
_codSelected=rowid;
},
ajaxSelectOptions:{
数据:{
codSelected:函数(){
返回已选择的代码;
}
}
}
});
jQuery(“#list”).jqGrid('navGrid','#pager',和{
alerttext:“Seleccione un Servicio.”,
添加:true,添加标题:“Crear nuevo Servicio”,
戴尔:没错,戴尔标题:“Eliminar Servicio”,
编辑:true,编辑标题:“修改服务”,
搜索:false,搜索标题:“Búsqueda”,
刷新:是的,
真的吗
},
{width:360,resize:false,closeAfterEdit:true,recreateForm:true,
viewPagerButtons:true,完成后:muestResultaDooperacion},
{width:360,resize:false,closeAfterAdd:true,recreateForm:true,
viewPagerButtons:true,完成后:muestResultaDooperacion},
{},
{closeAfterSearch:true,closeOnEscape:true});

我不确定是否完全理解您的要求

首先,
\u codSelected
似乎与jqGrid的internal
selrow
选项的值相同。您可以使用
$(“#list”).jqGrid(“getGridParam”,“selrow”)
获取最后一个选定行的
rowid
。如果仅在“编辑”对话框中将
\u codSelected
变量初始化为当前选定行的值,并在“添加”对话框中将其设置为
null
,则可以在回调内部执行此操作。添加对话框的
beforeInitData
回调可以将
\u codSelected
设置为
null
,编辑对话框的相同回调可以使用
\u codSelected=$(this).jqGrid(“getGridParam”,“selrow”)。它应该能解决你的问题

更新:为了澄清我的建议,我决定发布以下代码:

var\u codSelected=null;
// ...
//这里应该是您删除的jqGrid的定义
//已选择更改的OnSetrow的当前代码
// ...
jQuery(“#list”).jqGrid('navGrid','#pager',和{
alerttext:“Seleccione un Servicio.”,
添加:true,添加标题:“Crear nuevo Servicio”,
戴尔:没错,戴尔标题:“Eliminar Servicio”,
编辑:true,编辑标题:“修改服务”,
搜索:false,搜索标题:“Búsqueda”,
刷新:是的,
真的吗
},
{width:360,resize:false,closeAfterEdit:true,recreateForm:true,
beforeInitData:函数(){
//在进行编辑操作时选择设置_cod
_codSelected=$(this).jqGrid(“getGridParam”、“selrow”);
},
viewPagerButtons:true,完成后:muestResultaDooperacion},
{width:360,resize:false,closeAfterAdd:true,recreateForm:true,
beforeInitData:函数(){
//如果是添加操作,请清除选中的\u cod
_codSelected=null;
},
viewPagerButtons:true,完成后:muestResultaDooperacion},
{},
{closeAfterSearch:true,closeOnEscape:true});

@bombai:对不起,您发布的代码没有
格式化程序:“操作”
。你到底是什么意思?有许多方法可以实现表单编辑和内联编辑。您可以在任何使用表单编辑的实现中指定
beforeInitData
回调,但是您应该准确地描述您遇到的问题。@bombai:您在前面的注释中只使用了“操作”一词。所以我误解了你的意思。我已经发布了关于你当前问题的上一篇文章。如果我添加代码片段可能会更好。我现在就写。它将与我以前写的完全相同,但在代码中。@bombai:没问题。不客气!重要的是问题最终得到解决。致以最良好的祝愿@邦贝:是的,你可以。如果在
dataInit
内部调用
$(elem).datepicker({…})
,则可以使用
datepicker
的任何选项。例如:
maxDate:newdate(2013,11,31)
maxDate:“+1y”
。您可以使用
minDate:newdate(2006,0,1)
或类似
yearRange:'c-2:c+1'
。您应该决定在您的情况下哪个选项是最好的。@bombai:正确地在服务器端实现addrow是非常重要的。我的意思是服务器应该为新行生成
Id
(通常是数据库中相应表中的Id)。您还需要实现
afterSubmit
(如果使用
reloadeaftersubmit:false
)或
aftersavefunc
(如果使用内联编辑),对服务器返回的id进行解码。如果没有隐藏(或非隐藏)ID列,
afterSubmit
应将解码的ID作为数组的3d元素返回。如果您有id列,它应该另外做一些更改。