How can i use CellSelectionCallback correctly?
4 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Alvindra Pratama
am 7 Mai 2016
Kommentiert: Alvindra Pratama
am 11 Mai 2016
I had a problem when I memlilih one cell in the table to be displayed into the text edit, when I choose a cell 1 then that arises is ID = 1, Name = f, Address = f (performed in accordance with what I have chosen) But when I select cell 2, appearing instead as when I select cell 1, how do I prevent the display according to the data in cell 2?
Here is my code in function myTabel_CellSelectionCallback :
try
al= eventdata.Indices;
dataseleksi=get(handles.myTabel,'Userdata');
getdata=dataseleksi(al);
%kode=getdata{1};
[ mydata,header,no ] = Lihat()
var1=mydata(1,1);
var2=mydata(1,2);
var3=mydata(1,3);
set(handles.txtid,'string',var1);
set(handles.txtnama,'string',var2);
set(handles.txtalamat,'string',var3);
catch end
2 Kommentare
Jan
am 7 Mai 2016
I do not understand the text of your question. What does "I had a problem when I memlilih one cell in the table to be displayed into the text edit" mean? What is "memlilih"?
Akzeptierte Antwort
Geoff Hayes
am 8 Mai 2016
Alvindra - why are you using the property UserData when trying to access data in your table?
dataseleksi=get(handles.myTabel,'Userdata');
Unless something is different in your version of MATLAB, the data in the table is stored in the Data property, so the above would be replaced with
dataseleksi=get(handles.myTabel,'Data');
Then, to access a specific element/cell within that table, you can use the row and column indices from
al = eventdata.Indices;
as
cellIdcs = eventdata.Indices;
dataseleksi = get(handles.myTabel,'Data');
cellData = dataseleksi(cellIdcs(1), cellIdcs(2))
Try the above and see what happens!
5 Kommentare
Geoff Hayes
am 10 Mai 2016
Alvindra - the first three lines of your myTabel_CellSelectionCallback callback do something similar to what we have discussed above
cellIdcs = eventdata.Indices;
dataseleksi = get(handles.myTabel,'Data');
cellData = dataseleksi(cellIdcs(1), cellIdcs(2))
So cellData corresponds to the element in the selected cell. But then you don't do anything with this variable and instead query the database with
[ mydata,header,no ] = Lihat();
You then take the first row of myData and do
var1=mydata(1,1);
var2=mydata(1,2);
var3=mydata(1,3);
set(handles.txtid,'string',var1);
set(handles.txtnama,'string',var2);
set(handles.txtalamat,'string',var3);
What is the purpose of re-querying the database especially as you don't include any clauses that may indicate which row to get the data from? I suppose that instead of getting the elements from the first row of mydata, you could instead grab the elements from the row which you have selected the cell. i.e.
rowIdx = cellIdcs(1);
[mydata, header, no] = Lihat();
var1 = mydata(rowIdx,1);
var2 = mydata(rowIdx,2);
% etc.
But if the kth row of the table is identical to the kth row in the database (assuming that you haven't removed or inserted any rows) then why not just take the elements from the table to populate the text controls?
rowIdx = cellIds(1);
var1 = dataseleksi{rowIdx,1);
var2 = dataseleksi{rowIdx,2);
var3 = dataseleksi{rowIdx,3);
% etc.
With the above, you avoid querying the database again.
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Migrate GUIDE Apps finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!