我在新项目中使用jqgrid。 在特定情况下,我需要在网格中使用select元素。没问题。
我定义了colModel和列,例如像(来自wiki)
colModel : [
...
{name:'myname', edittype:'select', editoptions:{value:{1:'One',2:'Two'}} },
...
]
但是现在当我加载数据时,我希望列“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);
});
}
});
}
它有效,如果没有人提出更好的方法,我会这样做。