我在我的新項目中使用jqgrid。 在特定情況下,我需要在網格中使用select元素。沒問題。jqgrid edittype從數據中選擇加載值
我定義colModel和例如像(來自維基)
colModel : [
...
{name:'myname', edittype:'select', editoptions:{value:{1:'One',2:'Two'}} },
...
]
但現在當我加載我的數據我寧願列「MYNAME」爲包含值1 此次榮獲」列t爲我工作,而不得不包含價值「一」。
問題在於select元素的文本部分在我的情況下本地化在動態生成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);
});
}
});
}
它的工作原理,如果沒有人來了一個更好的辦法,我會離開它這樣。
工程很棒。我搜查了文檔和谷歌,但我想我沒有提出正確的搜索詞。 在談論格式化程序選項時。現在我在服務器上格式化時間列(HH:mm),因爲我沒有找到任何其他方式。設置格式化程序:「日期」將我的DateTime格式化爲yyyy-mm-dd。有沒有更好的方法在網格中做到這一點?我可以看到面罩選項,但我不明白如何使用它。好像我想要類似ShortTime的東西。可能嗎? – John 2011-04-03 11:35:01
您節省了我的一天。 – 2015-10-13 10:17:44
@SergeyShabanov:不客氣!我很高興我的一些舊的答案仍然有幫助。 – Oleg 2015-10-13 10:18:43