Effacer les filtres
Effacer les filtres

set count numbers of rows in a uitable

15 vues (au cours des 30 derniers jours)
Cristian Martin
Cristian Martin le 6 Juin 2022
Commenté : dpb le 6 Juin 2022
Hi,
I'm trying to modify the first column number for each row( 1 2 3 ...) in an uitable based of each entry from another uitable:
D=get(handles.uitable1,'Data');%GETTING DATA FROM FIRST TABLE
Index=get(handles.uitable1,'UserData');
a = D(Index.Indices(:,1), :);
old_data=get(handles.uitable4,'Data'); %GETTING OLD DATA FROM SECOND TABLE
data_azi = datetime;
data_azi.Format = 'MM.dd.yyyy';
a = array2table(a);
a.a1 = 1;
a.a4 = a.a2;
a.a2 = char(data_azi);
a.a2 = {a.a2};
a = table2cell(a);
new_data = [old_data; a];
new_data = array2table(new_data);
numarnou = height(new_data);% GET HEIGHT OF OLD AND NEW TABLE
new_data.new_data2 = numarnou;% MODIFY THE RESULT OF ROWS HEIGHTS IN FIRST COLUMN
new_data.new_data2 = {new_data.new_data2};
new_data = table2cell(new_data);
set(handles.uitable4, 'Data',new_data); %SETTING DATA FROM FIRST TABLE
The error:
To assign to or create a variable in a table, the number of rows must match the height of the table.
Where am I wrong?
  6 commentaires
dpb
dpb le 6 Juin 2022
new_data = [old_data; a];
You've catenated more data onto the existing from uitable1 so the height is the total of both tables.
The uitable object is not dynamically resized; I've not used it extensively, but I think the only way to add data entails recreating a new table. Seems klunky, but I've not seen anything that implies there is an addrow functionality.
Cristian Martin
Cristian Martin le 6 Juin 2022
Got it, thanks !

Connectez-vous pour commenter.

Réponse acceptée

Cristian Martin
Cristian Martin le 6 Juin 2022
I have found the solution:
old_data=get(handles.uitable4,'Data');
old_data = array2table(old_data);
nr_crt = height(old_data); %HERE I GET THE HEIGHT OF OLD DATA
old_data = table2cell(old_data);
data_azi = datetime;
data_azi.Format = 'MM.dd.yyyy';
a = array2table(a);
a.a1 = 1 + nr_crt; %HERE I ADD THE HEIGHT OF OLD DATA TO THE FIRST COLUMN OF THE NEXT ROW IN SECOND TABLE
a.a4 = a.a2;
a.a2 = char(data_azi);
a.a2 = {a.a2};
a = table2cell(a);
new_data = [old_data; a];
set(handles.uitable4, 'Data',new_data);
  2 commentaires
Cristian Martin
Cristian Martin le 6 Juin 2022
It;s weird to accept my answer , no?
dpb
dpb le 6 Juin 2022
It's OK. I now recall I had seen that before but I just couldn't recall it before...I hadn't used the uitable enough to recall it, but I shoulda'.

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Migrate GUIDE Apps dans Help Center et File Exchange

Produits


Version

R2015a

Community Treasure Hunt

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

Start Hunting!

Translated by