Uitable,cellSelectionCallback和修改数据集

时间:2012-12-13 15:59:41

标签: matlab matlab-uitable

我的代码真的太长了,无法在这里发布,即使是很少的部分。所以我只想要一两件事: 在我看来,当修改一个合适的'ht'的'数据'属性时:

set(ht, 'Data', something);

触发了“cellSelectionCallback”例程(因为选择很可能已经发生了变化),但在数据集修改后不能立即进行。

  1. 这是真的吗?
  2. 有没有办法阻止这样的行为?
  3. 谢谢!

3 个答案:

答案 0 :(得分:2)

我使用的是代码,例如:

tbl = uitable('Parent', fh, 'CellSelectionCallback',{@cell_select_callback fh});

我做了一个快速实验,当使用set(tbl,'Data',my_data)时,如果set导致所选单元格发生变化,则会触发回调,这会立即发生(据我所知 - 我没有看到明显的延迟。

要停止发生这种情况,您可以取消设置CellSelectionCallback属性,更改数据,然后重置CellSelectionCallback

答案 1 :(得分:1)

我有同样的问题。收到index out of bounds警告。要摆脱我在CallSelectionCallback中使用过的那些:

if ~isempty(eventdata.Indices)
 // all the code
end

当set命令触发CallSelectionCallback时,eventdata.Indices为空。

答案 2 :(得分:1)

与Sebastien的答案类似的可能性是将它放在你的cellselectioncallback函数中:

function output = mycellselection(source,event)

if isempty(event.Indixes)
    output = [];
    return
end
% rest of your code for cell selection

end

如果您不需要任何输出,则可以将其删除。我只是把它放在那里提醒你,你必须为任何输出分配一个值。