Редактируемая функциональность в uitable не работает: "Данные таблицы не редактируются в этом месте".

Я хочу, чтобы у моего пользователя были флажки, которые вы можете щелкнуть в нем. Если я сделаю это таким образом, я получу предупреждение: данные таблицы не редактируются в этом месте.

Как и сейчас, окна появляются, но вы не можете щелкнуть их.

 p=figure
 D={'1', '2', '3' ,'4', '5','6'
    '7', '8', '9', '10', '11' ,'12'}
 data=D(:,1)
cnames={'', 'Left', 'Right','P1', 'P2', 'P3'}

table_resultat_nip=uitable('position',[0 200 500 200],...
   'parent',p,...
   'columnname', cnames,...
   'rowname', '',...
   'data',data,...
   'ColumnFormat',{'char','logical','logical','logical','logical','logical'},...
   'columneditable',[false, true, true, true, true, true])   ;

1 ответ

Решение

Данные ячеек, которые вы хотите редактировать, должны быть в правильном формате.

Есть две проблемы:

1)

data = D(:,1);

Я понимаю, что вы просто хотите использовать данные первого столбца, но вам нужно объявить и другие столбцы как локальные.

2)

Ваши данные не соответствуют columnformatтак что лучше используйте:

D = {'1', false, false ,false, false, false; ...
     '7', false, false, false, false, false};

Решение:

D = {'1', '2', '3' ,'4', '5','6' ;
     '7', '8', '9', '10', '11' ,'12'};


data = [ D(:,1)  num2cell( false( size(D,1) , size(D,2)-1) ) ];
%// where the -1 depends on how many "real" data columns you have.

или более общий:

N = 1;   %// Number data columns to keep
data = [ D(:,1:N)  num2cell( false( size(D,1) , size(D,2)-N) ) ];

В целом, следующий код работает, теперь вам нужно применить его к вашему делу:

p = figure;

D = {'1', '2', '3' ,'4', '5','6' ;
     '7', '8', '9', '10', '11' ,'12'};

data = [ D(:,1)  num2cell( false( size(D,1) , size(D,2)-1) ) ];

cnames = {'', 'Left', 'Right','P1', 'P2', 'P3'};

table_resultat_nip=uitable('position',[0 200 500 200],...
   'columnname', cnames,...
   'rowname', '',...
   'data',data,...
   'ColumnFormat',{'char','logical','logical','logical','logical','logical'},...
   'ColumnEditable',[false, true, true, true, true, true]...
   );

По поводу комментария:

Хорошо, еще более общий случай:

N = 1;   %// Number data columns to keep
M = 5;   %// Number of checkboxes desired

data = [ D(:,1:N)  num2cell( false( size(D,1) , M) ) ];
Другие вопросы по тегам