Dynamic 帮助其他人找到它

Dynamic 帮助其他人找到它,dynamic,jqgrid,options,Dynamic,Jqgrid,Options,解决第二个问题没有简单的方法,但是你可以提出一个解决方案,但是你必须知道更多关于你做什么和如何做的细节。如何开始内联编辑(您是使用inlineNav,格式化程序:“操作”还是直接调用editRow?您使用的是哪个版本的jqGrid(直到4.7版)?如何在colModel中定义带有select的列?您使用哪个数据类型,以及是否使用loadonce:true?我建议你们用这些信息单独提问 更新:如果您必须使用旧版本的jqGrid,则无法动态生成dataUrlfull,但因为您只需要在URL中添加Sp

解决第二个问题没有简单的方法,但是你可以提出一个解决方案,但是你必须知道更多关于你做什么和如何做的细节。如何开始内联编辑(您是使用
inlineNav
格式化程序:“操作”
还是直接调用
editRow
?您使用的是哪个版本的jqGrid(直到4.7版)?如何在
colModel
中定义带有select的列?您使用哪个
数据类型
,以及是否使用
loadonce:true
?我建议你们用这些信息单独提问

更新:如果您必须使用旧版本的jqGrid,则无法动态生成
dataUrl
full,但因为您只需要在URL中添加
SpecialValue=100”
部分,您可以遵循我在许多旧答案中描述的技巧(第一个可能是,但询问用户的财产名称选择可能会被误解)。您可以使用
ajaxSelectOptions.data
来定义jQuery.ajax请求的
data
参数。问题在于您只能定义一个
ajaxSelectOptions.data
属性。因此,您可以添加以下jqGrid选项

ajaxSelectOptions:{
数据:{
特殊值:函数(){
var rowid=$myGrid.jqGrid(“getGridParam”、“selrow”);
返回$myGrid.jqGrid(“getCell”,rowid,“SpecialValue”);
}
}
}
$myGrid
类似于
$(“#grid”)

更新:您在问题的更新部分使用了未知函数
getSelectValuesFromJSON
getLookupValuesFromJSON
。这两个函数似乎都使用了synchronousAjax请求,这并不好。此外,您只为一个
字段2
设置了
编辑选项。value
设置所有选项

onsetrow:函数(rowid){
var$myGrid=$(此值);
$.ajax({
url:“someUrl”,
数据类型:“json”;
数据:{
特殊值:$myGrid.jqGrid(“getCell”,rowid,“Field1”)
},
成功:功能(数据){
//例如,响应数据具有以下格式:
//{“字段2”:[“v1”、“v2”、…]、“字段3”:[“v3”、“v4”、…]}
var文件,str;
用于(归档数据){
if(数据hasOwnProperty(存档)){
str=$.map(数据[字段],函数(项){
退货项目+“:”+项目
}).加入(“;”);
$myGrid.jqGrid(“setColProp”),存档{
编辑选项:{
值:str
}
});
}
}
$myGrid.jqGrid(“editRow”,rowid,true);
}
});
}
然而,“解决方案2”"与我的建议更接近。在选择行之前是否使用
onsemeow
并不重要。您可以向服务器发出异步Ajax请求,该请求返回所需的所有选择的信息。从服务器获得响应后(在
success
callback的内部)您可以为所有选择设置
editoptions.value
,然后才可以启动
editRow
。这样,您就可以确保行的编辑将在所有选择中使用特定于行的选项

一些附加说明。我建议您在网格中验证
gridview:true
选项。此外,我怀疑您以不完全正确的方式填充网格,因为您隐藏了
PK
列,并且在选择行
onSe之前使用
index
而不是
rowid
作为
的第一个参数Electrow
。了解jqGrid的当前实现总是在网格的每一行(
元素)上分配
id
属性是非常重要的。因此,您必须在每一项输入数据中提供
id
信息。如果您想向用户显示id信息(因此,要在
colModel
中使用主键创建列,则只需在列定义中包含
key:true
属性。例如,您可以将
key:true
添加到
PK
列的定义中,这样就可以创建
rowid
(或者在您的情况下为
index
)使用与
PK
相同的值。它简化了代码的许多部分。例如,jqGrid在编辑请求中向服务器发送
id
参数。在请求中使用
PK
是可行的。此外,如果使用
repeatitems:false
格式的
jsonReader
可以包含
id:“PK”
jsonReader
中的
而不是隐藏
PK
列。它通知jqGrid从
PK
获取rowid。jqGrid将在
id
属性中保存
PK
,并且您不需要在网格中具有相同信息的其他


最后一句话。我强烈建议您将复古版jqGrid 3.8.1更新到更新的版本,例如到。即使您不使用任何功能(例如),您也会有性能优势,现代web浏览器的外观会更好。您应该了解jqGrid 3.8.1是用旧版本测试的(和慢速jQuery 1.4.2)。与Internet Explorer 8一起使用的版本是最新的IE版本(IE9于2011年3月晚些时候发布)而且它更倾向于IE6/IE7。现代Chrome/Firefox/Safari的外观可能不好。这是你想要的吗?

你在一篇帖子中问了两个问题。第一个问题的答案相对简单,我可以发布我的答案,但第二个问题解决起来并不容易,特别是如果你需要的话