Jqgrid选择选项返回键而不是标签

时间:2015-06-05 15:21:11

标签: jquery jqgrid

我正在使用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

enter image description here

保存后: http://s3.postimg.org/kcqe0adw3/save.png

enter image description here 这是一个问题

2 个答案:

答案 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列中返回标签)