First understand the parent and child relationships. In your other quesiont, refreshBinding not working probably because not called on the right object - #10 by Transistor, you have the structure,
root
+ Flexcontainer
+ Button
+ Table
So, to get from Button to Table you have to go parent
(which takes you to Flexcontainer) then you use getSibling
to get to Table.
Alternately, you could go parent.parent
which takes you to root
and then use getChild
to get to Table.
If we examine your code below we can see that you have been inconsistent with the relative paths and they are very deep. You can avoid errors if you use the Property Inspector to create the paths for you as shown by Ujwal in the previous question.
def runAction(self, event):
row_id = self.parent.parent.parent.parent.parent.getChild("Table").selection.selectedRow
row = self.getSibling("Table").props.data.pop(row_id)
system.db.runNamedQuery("Delete_Rows", parameters=row)
self.parent.parent.parent.parent.parent.getChild("Table").refreshBinding("props.data")
Other problems
-
Where did you find documentation on using
pop
on a table properties? I can't find it anywhere. -
To delete a row
WHERE id = :id
you need to retrieve theid
value from the selected row. Your screengrab doesn't show that column. Maybe you have called itrow_id
but haven't shown it. -
runNamedQuery
expects a dictionary of parameters. You haven't supplied one. -
We don't know the relative paths between your components. Please add a screengrab from Project Browser showing the relative positions of the delete button and the table.
-
Add the
id
column to your table if it is not there already. Show that in a screengrab.