Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 如何删除uitable中的选定行?_Matlab_Matlab Figure_Matlab Guide_Matlab Uitable - Fatal编程技术网

Matlab 如何删除uitable中的选定行?

Matlab 如何删除uitable中的选定行?,matlab,matlab-figure,matlab-guide,matlab-uitable,Matlab,Matlab Figure,Matlab Guide,Matlab Uitable,我想删除uitable的选定行。 我考虑对每一行使用一个复选框来选择要删除的行 但如果复选框设置为false,则无法将列添加到表中 我得到这个跟随错误 ??? Conversion to cell from logical is not possible. Error in ==> loadTable at 7 data(:,5) = true; 我试过这个: function loadTable(hTable, arrayHeaderAndData, columnForma

我想删除uitable的选定行。 我考虑对每一行使用一个复选框来选择要删除的行

但如果复选框设置为false,则无法将列添加到表中

我得到这个跟随错误

??? Conversion to cell from logical is not possible.

Error in ==> loadTable at 7
    data(:,5) = true;
我试过这个:

 function loadTable(hTable, arrayHeaderAndData, columnFormatAtt)

        header = arrayHeaderAndData{1};
        % Add column delete
        header = [header 'Del'];
        data = arrayHeaderAndData{2};
        data(:,5) = true;
        columnFormatCases = [columnFormatCases 'logical'];

        set(hTable, 'Data',data,...
            'visible','on',...
            'ColumnWidth','auto',...
            'ColumnName',header,...
            'ColumnEditable', [false false false false],...
            'ColumnFormat', columnFormatAtt
    );


    end

然后我需要从表中删除所有选中复选框的行。我该怎么做呢?

看起来您是在尝试分配给单元格,而不是分配给单元格

以下是我将尝试的:

data(:,5) = {true}
或者:

[data{:,5}] = deal(true)

如果您仍在阅读
帮助单元格

,则不需要另一个带有复选框的列,只需指示要删除的行即可。我更愿意使用
uipushtool
添加一个删除按钮,删除以前选择的所有行

function myTable 

h = figure('Position',[600 400 402 100],'numbertitle','off','MenuBar','none');

defaultData = rand(5,2);
uitable(h,'Units','normalized','Position',[0 0 1 1],...
              'Data', defaultData,... 
              'Tag','myTable',...    
              'ColumnName', [],'RowName',[],...
              'CellSelectionCallback',@cellSelect);

% create pushbutton to delete selected rows
tb = uitoolbar(h);
uipushtool(tb,'ClickedCallback',@deleteRow);
end

function cellSelect(src,evt)
% get indices of selected rows and make them available for other callbacks
index = evt.Indices;
if any(index)             %loop necessary to surpress unimportant errors.
    rows = index(:,1);
    set(src,'UserData',rows);
end
end

function deleteRow(~,~)
th = findobj('Tag','myTable');
% get current data
data = get(th,'Data');
% get indices of selected rows
rows = get(th,'UserData');
% create mask containing rows to keep
mask = (1:size(data,1))';
mask(rows) = [];
% delete selected rows and re-write data
data = data(mask,:);
set(th,'Data',data);
end

当我执行此脚本时,我正确地看到了行,但我没有看到Delete的按钮或任何其他内容,因为缺少图标;)该按钮位于附加菜单栏的左上角,不可见。您可以使用属性
cdata
添加图标,也可以使用任何其他类型的按钮,这只是一个想法。此功能工作正常,但我返回到我的原始版本,因为单元格必须是可编辑的。这就是为什么我希望单元格只在双击时可编辑,以便只需单击一次即可选择删除。我已经添加到表中:“'ColumnEditable',true,…”请进入此聊天: