diff --git a/src/fields/jsgrid.field.select.js b/src/fields/jsgrid.field.select.js index b2e5d345..0e4048e6 100755 --- a/src/fields/jsgrid.field.select.js +++ b/src/fields/jsgrid.field.select.js @@ -32,9 +32,14 @@ resultItem; if(valueField) { - resultItem = $.grep(items, function(item, index) { - return item[valueField] === value; - })[0] || {}; + if(typeof(value) === "object"){ + resultItem = value; + } + else{ + resultItem = $.grep(items, function(item, index) { + return item[valueField] === value; + })[0] || {}; + } } else { resultItem = items[value]; @@ -73,7 +78,11 @@ return this.itemTemplate.apply(this, arguments); var $result = this.editControl = this._createSelect(); - (value !== undefined) && $result.val(value); + var editValue = value; + if(typeof(value) === "object"){ + editValue = value[this.valueField]; + } + (editValue !== undefined) && $result.val(editValue); return $result; }, diff --git a/tests/jsgrid.field.tests.js b/tests/jsgrid.field.tests.js index 9c8c26ec..120b581e 100755 --- a/tests/jsgrid.field.tests.js +++ b/tests/jsgrid.field.tests.js @@ -337,6 +337,40 @@ $(function() { strictEqual(field.itemTemplate(1), "test1"); }); + test("object as input", function() { + var field = new jsGrid.SelectField({ + name: "testField", + items: [ + { text: "test1", value: 1 }, + { text: "test2", value: 2 }, + { text: "test3", value: 3 } + ], + valueField: "value", + textField: "text" + }); + + + + strictEqual(field.itemTemplate({ text: "test1", value: 1 }), "test1"); + strictEqual(field.itemTemplate({ text: "test2", value: 2 }), "test2"); + strictEqual(field.itemTemplate({ text: "test3", value: 3 }), "test3"); + + + + field.editTemplate({ text: "test1", value: 1 }); + strictEqual(field.editValue(), 1); + + field.editTemplate({ text: "test2", value: 2 }); + strictEqual(field.editValue(), 2); + + field.editTemplate({ text: "test3", value: 3 }); + strictEqual(field.editValue(), 3); + + + + + }); + module("jsGrid.field.control");