我创建了一个由四列组成的合适组合。
colu={{'Sweet' 'Beautiful' 'Caring'},'numeric', 'numeric','numeric'}
dat={1 2 3 []; 4 5 6 []; 7 8 9 []};
A=uitable('outerposition',[0 0 1 1],'ColumnFormat',colu,'Data',dat);
我现在要做的是,当代码运行时,我在第一个单元格的弹出窗口中选择“Sweet”,单元格(1,4)显示dat(1,1),或者何时我在第一列的第二个单元格中选择“Beautiful”,单元格(2,4)显示dat(2,1)。与uitable之外的popupmenu不同,我无法使用get(popup,“value”)。
我怎么可能做我想做的事?提前谢谢!
答案 0 :(得分:1)
您必须使用CellEditCallback属性,该属性是在编辑任何单元格时触发的全局回调。 您可以在单个单元格上设置回调。
可以帮助您入门的伪代码模板:
function cellEditCallback(hTable, editEvent)
% get changed index
changedIndex = editEvent.Indices;
if changedIndex is a popup-cell:
% check new value
newValue = editEvent.NewData;
% set data in appropriate cell to corresponding value
...
另外,示例中的columnFormat与数据不匹配。它将第1列指定为弹出列,而根据您的数据,它应该是第4列。
我还必须将[]
更改为''
才能使弹出窗口正常工作set('ColumnEditable', logical([0,0,0,1]))
。
参见例如
更全面的示例uitable application。