Clear Filters
Clear Filters

ColumnEditable problem with categorical

5 views (last 30 days)
f = figure('Position', [100 100 752 250]);
t = uitable('Parent', f, 'Position', [25 50 700 200]);
t.ColumnName = {'Num1','Num2','Text'};
t.Data = {'b', 'q','JN'};
t.ColumnEditable=[true,true,true];
ret=categorical({'H';'L'});
t.ColumnFormat ={'bank' ret 'bank'};
Error setting property 'ColumnFormat' of class 'Table':
ColumnFormat definitions must be either 'numeric', 'logical', 'char', or be a popupmenu definition
Error in CANCELLA (line 10)
t.ColumnFormat ={'bank' ret 'bank'};

Accepted Answer

Cris LaPierre
Cris LaPierre on 16 Jun 2023
You can't set the ColumnFormat value to be a categorical. It must be either 'numeric', 'logical', 'char', or be a popupmenu definition (character array).
Why not just do this?
f = figure('Position', [100 100 752 250]);
t = uitable('Parent', f, 'Position', [25 50 700 200]);
t.ColumnName = {'Num1','Num2','Text'};
t.Data = {'b', 'q','JN'};
t.ColumnEditable=[true,true,true];
ret={'H' 'L'};
t.ColumnFormat ={'bank' ret 'bank'};
Not sure what you want the 'bank' values to be. If you meant 'blank', use [] instead.
t.ColumnFormat ={[] ret []};
If you meant to have them be dropdown menu uptions for the first and third column, do this.
t.ColumnFormat ={{'bank'} ret {'bank'}};
  5 Comments
Cris LaPierre
Cris LaPierre on 16 Jun 2023
Again, you can't use categoricals. It must be a char. If your data coming in is categorical, you must extract the categories and use that to set the ColumnFormat.
May something like this?
f = figure('Position', [100 100 752 250]);
t = uitable('Parent', f, 'Position', [25 50 700 200]);
t.ColumnName = {'Num1','Num2','Text'};
t.Data = {'b', 'q','JN'};
t.ColumnEditable=[true,true,true];
ret=categorical({'H';'L'});
cat = categories(ret);
t.ColumnFormat ={[] {cat{:}} []};

Sign in to comment.

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!