uitable中的可编辑功能无效:“表格数据在此位置无法编辑。”

时间:2014-07-15 09:30:35

标签: matlab matlab-uitable

我希望我的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 个答案:

答案 0 :(得分:1)

您要编辑的单元格数据需要格式正确。

有两个问题:

<强> 1)

data = D(:,1);

我知道您只想使用第一列的数据,但您还需要将其他列声明为locicals。

<强> 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) ) ];