tags:

views:

378

answers:

1

Is there a way in jqgrid to have an editable column that uses a select like in this colModel example:

{ 
name: 'Options', 
index: 'Options', 
width: 150, 
align: 'left', 
resizable: false,
editable: true, 
edittype: 'select', 
editoptions: { 
    value: function() { return buildSelect(); } 
},
formatter: 'select'
}

but always shows the select?

I've got this working before with checkboxes, but there doesn't seem to be a way of doing it with selects. Ideally I'd like this to work in celledit mode. Any ideas?

+2  A: 

All is possible. I am not sure, that what you want is the best way. In the most cases I recommend to use some standard way, then your live will be easier especially after change to a new version of the control which you use.

Nevertheless you can use custom formatter (see http://www.trirand.com/jqgridwiki/doku.php?id=wiki:custom_formatter) instead of formatter: 'select' to show the contain of a column how you as prefer. For example,

{ name: 'Options', width: 150, align: 'left', editable: true, edittype: 'select',
  editoptions: { 
    value: function() { return buildSelect(); } 
  },
  formatter: function (cellvalue, options, rowObject, action) {
    if (cellvalue === 'Yes') {
      return '<select><option value="1" selected="selected">Yes</option>' +
                     '<option value="0">No</option></select>';
    } else {
      return '<select><option value="1">Yes</option>' +
                    '<option value="0" selected="selected">No</option></select>';
    }
  }
}

can be used to display select with 'Yes' and 'No' values instead of default one current value ('Yes' or 'No'). You can also bind some function for a change handle of such select elements.

Oleg
Great stuff. Spot on. Do I still need to make the cell editable (and use editoptions) or will the grid store the selected value from the dropdown created in the custom formatter?
Nigel
The custom formatter only display the data. To be able to change the data and save changed value on the server you have to use any edit mode (cell editing / inline editing or form editing) see http://www.trirand.com/jqgridwiki/doku.php?id=wiki:jqgriddocs#editing.
Oleg