jqgrid edittype从数据中选择加载值

Joh*_*ohn 5 select jqgrid

我在我的新项目中使用jqgrid.在特定情况下,我需要在网格中使用select元素.没问题.

我定义了colModel和列,例如像(来自wiki)

colModel : [
  ...
{name:'myname', edittype:'select', editoptions:{value:{1:'One',2:'Two'}} },
  ...
]
Run Code Online (Sandbox Code Playgroud)

但是现在当我加载我的数据时,我希望列"myname"包含值1.这对我来说不起作用,而是必须包含值"One".

这个问题是select元素的text-part在我的情况下本地化在动态生成colModel的业务层中.此外,通过EF 4生成数据的实体的数据类型可能不是字符串.然后我必须找到正确的本地化文本并操纵数据结果,以便列"myname"不包含整数,这通常是大小写,而是包含字符串而不是本地化文本.

您无法使用任何选项,以便当数据包含与选择列表中的选项匹配的值时,网格将找到该选项并显示文本.现在,网格将值显示为文本,首先当我单击编辑时,它会找到匹配选项并显示文本.当我撤消编辑时,它返回以再次显示该值.

我开始想到一个解决方案,这就是我想出来的.如果您知道更好的解决方案,或者您知道有内置选项,请随时回答.否则这就是我所做的:

loadComplete: function (data) {
                    var colModel = grid.getGridParam('colModel');
                    $.each(colModel, function (index, col) {
                        if (col.edittype === 'select') {
                            $.each(grid.getDataIDs(), function (index, id) {
                                var row = grid.getRowData(id);
                                var value = row[col.name];
                                var editoptions = col.editoptions.value;
                                var startText = editoptions.indexOf(value + ':') + (value + ':').length;
                                var endText = editoptions.indexOf(';', startText);
                                if (endText === -1) { endText = editoptions.length; }
                                var text = editoptions.substring(startText, endText);
                                row[col.name] = text;
                                grid.setRowData(id, row);
                            });
                        }
                    });
                }
Run Code Online (Sandbox Code Playgroud)

它有效,如果没有人提出更好的方法,我会这样做.

Ole*_*leg 6

您应该formatter:'select'在列的定义中包含其他选项.有关详细信息,请参阅文档.