Is getColumnAsList() for datasets not longer available? I have a screen that has used it for years and now it is getting an error
AttributeError: 'com.inductiveautomation.factorypmi.application.bin' object has no attribute 'getColumnAsList'
The error seems to odd to me because the variable is being set to a dataset from a table so why does it say ‘com.inductiveautomation.factorypmi.application.bin’?
here is a snip of the code
dsData = event.source.parent.getComponent('tblPrices').data
headers = [dsData.getColumnName(c) for c in range(dsData.getColumnCount())]
headerIndex = headers.index("PTW")
listPTW = dsData.getColumnAsList(headerIndex)
getColumnAsList
is not a member of the Dataset
interface.
You must have been operating on an implementation of Dataset that had it, but now you’re not.
If you print out the type of Dataset in the old version and current version you might see the difference. For example, a PyDataSet does not have getColumnAsList
on it.
(do something like print type(ds)
)
Is the query/binding that is populating this table configured to retain rows?
In 7.9.x you can import basicDataSet and then use the getColumnAsList on it.
from com.inductiveautomation.ignition.common import BasicDataset
dsData = BasicDataset(event.source.parent.getComponent('tblPrices').data)
1 Like
Either set it true
or do what @MMaynard suggests.
The ‘com.inductiveautomation.factorypmi.application.bin’ reference is to ‘com.inductiveautomation.factorypmi.application.binding.util.NonSerializaingDataset’, which is not one of the Dataset implementations that happen to have getColumnAsList
. This dataset implementation gets used when the rows are not configured to be retained.
3 Likes
Awww, really? That's sad. When I first thought of creating my TransientDataset
implementation (in my caching module), I deliberately subclassed BasicDataset in order to keep its use seamless.