我正在使用jqGrid 4.8.0,内联编辑模式 Colmodel看起来: `My_dynamic_option取决于选项
{
label: 'Options',
name: 'Options',
width: 150,
editable: true,
edittype: "select",
formatter: "select",
editoptions: {
value: GetOptionsData(),
dataInit: function (e) {
if ($(e).val() != null) {
var entId = $(e).val();
var dynamicOptions = GetDynamicPropertyForOptionData(entId);
if (dynamicOptions != null && dynamicOptions.length > 0) {
var retstr = '';
$.each(dynamicOptions, function (index, val) {
if (index != 0) {
retstr += ";";
}
retstr += val.Id + ":" + val.dynamicpropertyoptionname;
});
jQuery("#jqGrid").setColProp('My_dynamic_option', { editoptions: { value: retstr } });
}
}
},
dataEvents: [
{
type: 'change',
fn: function (e) {
if ($(e.target).val() != null) {
var entId = $(e.target).val()
var rowid = $("#jqGrid").jqGrid('getGridParam', 'selrow');
if (rowid != null) {
var row = $(e.target).closest('tr.jqgrow');
var rowId = row.attr('id');
var dynamicOptions = GetDynamicPropertyForOptionData(entId);
if (dynamicOptions != null && dynamicOptions.length > 0) {
var newOptions = '';
$.each(dynamicOptions, function (index, val) {
newOptions += '<option role="option" value="' +
val.Id + '">' +
val.dynamicpropertyoptionname + '</option>';
});
$("select#" + rowId + "_My_dynamic_option", row[0]).html(newOptions);
}
}
}
}
}
]
},
},
{
label: 'My_dynamic_optionId',
name: 'My_dynamic_optionId',
editable: true,
edittype: 'text',
hidden: true
},
{
label: 'My_dynamic_option',
name: 'My_dynamic_option',
width: 150,
editable: true,
edittype: "select",
editoptions: {
value: { '': '' },
dataEvents: [
{
type: 'change',
fn: function (e) {
if ($(e.target).val() != null) {
var dynamicSetId = $(e.target).val();
var rowid = $("#jqGrid").jqGrid('getGridParam', 'selrow');
$("#jqGrid").jqGrid('setCell', rowid, 'My_dynamic_optionId', dynamicSetId);
}
}
}
]
}
}`
My_dynamic_option取决于选项。 My_dynamic_option可以包含很多值(超过1000),因此在网格加载中加载它们都不是一个好主意。 所以,我决定加载My_dynamic_option。 dynamicpropertyoptionname进入My_dynamic_option列,向用户显示。 并将My_dynamic_option.id加载到隐藏列(以将正确的值保存到网格中) - My_dynamic_optionId 它们正确加载,网格看起来很好。 但是在My_dynamic_option列中保存值而不是普通标签之后我得到了Id。 加载,看起来都很棒: http://s15.postimg.org/itjhey5aj/load.png
保存后: http://s3.postimg.org/kcqe0adw3/save.png
这是一个问题
答案 0 :(得分:2)
你好
您可以使用它来从网格中获取ID和属性值
var myGrid = $( "#gridID" ),
var rowId = myGrid.jqGrid ('getGridParam', 'selrow'),
var cellValue = myGrid.jqGrid ('getCell', rowId, 'My_dynamic_option');
答案 1 :(得分:0)
最后,我找到了!
它更容易也更奇怪。
如果你有2个(或更多)&#34;选择&#34;列,没有formatter: "select"
的列必须是最后edittype: "select"
列(它不能是col模型中的最后一列,但它必须是最后一个选择列),其他方式 - 它将是bug,我有。
谢谢你的帮助!
更新
如果您将使用这样的colmodel(以及jqGrid 4.8,内联编辑模式):
{
label: 'Select without formatter',
name: 'Select_0',
width: 150,
editable: true,
edittype: "select",
editoptions: { value: “FE:FedEx; IN:InTime; TN:TNT” }
},
{
label: 'Select with formatter',
name: 'Select_1',
width: 150,
editable: true,
edittype: "select",
formatter: "select",
editoptions: { value: “FE:FedEx; IN:InTime; TN:TNT” }
}
它会:
1.显示col:Select_0
id(代码)而不是选择标签
2.在像jqGrid('getRowData', rowid)
这样的函数中,需要rowid,它将返回Select_0列中的代码,而不是标签。
但是,如果你像这样替换你的列:
{
label: 'Select with formatter',
name: 'Select_1',
width: 150,
editable: true,
edittype: "select",
formatter: "select",
editoptions: { value: “FE:FedEx; IN:InTime; TN:TNT” }
},
{
label: 'Select without formatter',
name: 'Select_0',
width: 150,
editable: true,
edittype: "select",
editoptions: { value: “FE:FedEx; IN:InTime; TN:TNT” }
}
这是正确的行为(正如我所料:会显示标签,而jqGrid('getRowData', rowid)
会在Select_0列中返回标签)