Is it possible to have a column within a power table that is called Status and within each actual row of the table make the box underneath the Status column be an actual dropdown selection option?
Yes. We don’t have a great manual example for it, but you want to implement the configureEditor
extension function, and return a dictionary with an options
key in it for your Status
column. The options
value should be a list of value : label tuples, as in:
[(0, "Off"), (1, "Hand"), (2, "Auto")]
Hmmm… I believe I may be confused on how this is supposed to work… This is what I have:
Choices = ("Pass", "Fail")
if colName == 'Status':
return {'Choices': [(0, 'Pass'), (1, 'Fail')]}
But it does not seem to be working.
Your key needs to be 'options'
(all lowercase), not 'Choices'
:
if colName == 'Status':
choices = ("Pass", "Fail")
return {'options': list(enumerate(choices))}
Please forgive me but I am not a programmer and this makes no sense to me…lol
This is what I put(trying to understand what you have written).
if colName == 'Status':
choices = ("Pass", "Fail")
return {'options': list[(0, 'Pass'), (1, 'Fail')]}
No worries
So, your example is almost right - this should work:
if colName == 'Status':
return {'options': [(0, 'Pass'), (1, 'Fail')]}
Python (Ignition uses a scripting language called Jython) uses braces {}
, parentheses ()
, and square brackets []
as literals for certain types of data structures - []
creates a list, and should be the preferred option if you have a fixed set of items. ()
around at least two items creates a 'tuple' - a read-only, ordered collection of items. The options
return format expects a list of tuples - so you can return [(0, 'Pass'), (1, 'Fail')]
directly.
My example uses the choices
variable that you used, combined with two Python builtin functions (enumerate
and list
) to return the exact same list format, but without manually specifying the values. It's a totally optional 'enhancement', and will only work as long as your expected values start from 0 and go up by 1 each time.
list(enumerate(choices)
cute
That does not seem to work either. Do I need to have a drop component overlay the status column or something?
Is your column actually editable? Check the table customizer. You will probably also need to implement the isCellEditable
extension function.
Ah… so implementing the isCellEditable function allow me to type in the field, but when I also select the
editable checkbox in the table customizer, then the Pass/Fail dropdown shows up…
but when I select either one, nothing actually shows up… LOL
Are you also implementing onCellEdited
or whatever it’s called? You need to write the selected value from the dropdown back to the dataset to actually change anything.
Ah… I believe that was it! Thank you very much…
Would you mind if I ask you one more question about this table and drop down I have been working on?