I wrote a script to query data in the database. This script is used by multiple tables, and the header fields to be displayed in each table are different. Whether it is possible to fix the header fields to be displayed in the table without being affected by the data fields returned by the script?
Show us your query.
Yes, the table.props.columns config determines which columns are shown and how. If default, then all columns are shown
https://docs.inductiveautomation.com/display/DOC80/Perspective+-+Table
The script I wrote is to call the Web Service, the query data is completed in the Web Service, and the script is to directly send the results of the Web Service to the table for use.
Script to return data like:
# encode dictionary to JSON
jsonParams = system.util.jsonEncode(params)
# post to Ignition
postReturn = system.net.httpPost(url,‘application/json’,jsonParams)
decodedDict = system.util.jsonDecode(postReturn)
self.getSibling(“gridCodeIDTableList”).props.data = decodedDict.get(“contents”).get(“result_list”)
Web Service return :
result_list=[{site_uuid=b93b692e-fa23-4809-a83c-eed2f62d78f2, site_id=SITEA01, description=TEST, colligate_rule_id=, alias_code=A, create_user=ADMIN, create_time=2021-01-21 10:58:52, lm_user=ADMIN, lm_time=2021-01-21 10:58:52}]}
I only want to display two fields in the returned data in the table, so I set the column like :
But all the fields are still displayed in the table~~
There are not code_id
or code_category
fields in this value. You have to use field names that actually exist in your data.
The field
property must match a column name in props.data
, or the column settings will be applied in order to the columns of the data. You should expand the header
field, and apply the header value you want displayed for the table. This value will not change with the data, so to apply header fields to a table regardless of the data coming back, you should leave the column.field
property empty, and you should assign a column.header
value you want for that column.
I set the column like :
And display like :
When I execute Web Service, the output is:
result_list=[{code_id_uuid=7fa0404f-21f4-4618-94fb-6cb03e1923cc, code_id=KK_CODE_001, code_type=CTYPE_P_01, code_category=CCAT_P_01, is_system_reserved=NO, description=TEST, designated_grade=, create_user=null, create_time=2021-01-21 05:02:52, lm_user=null, lm_time=2021-01-21 05:02:52, site_id=null}, {code_id_uuid=5b43fda4-5f41-4f53-8e03-7126d3f50180, code_id=TEST_123, code_type=CTYPE_P_01, code_category=CCAT_P_03, is_system_reserved=NO, description=eww, designated_grade=null, create_user=null, create_time=2021-01-24 03:40:39, lm_user=null, lm_time=2021-01-24 04:02:52, site_id=null}]}
And display is:
You didn’t modify the columns[x].header.title
property required to modify the header directly.
Note that you must still identify which column of the data to be used. In my screenshot I was using the “default” data of the table, and so I specified “city” as the column to be used. The result of this configuration is that the data column identified by “city” will be used for the column, and the header will be “Code Id”.
The result of your second screenshot is due to two things:
- It appears that you have two column entries
0
and1
in thecolumns
array. This configuration means that you only ever want to display two columns. - If you don’t specify a case-sensitive value match to one of your data columns, then the column configuration will use the first column it finds in the data. Since
columns[0].field
is “Code Id” and not “code_id”, the column is not using the “code_id” data column.
Instructions:
Set columns[0].field
to have a value of “code_id”. Set columns[0].header.title
to “Code Id”.
It’s successes!!
Thank you for all your assistance. I really appreciate your help in resolving the problem.