# Power table, visible rows

**URL:** <https://forum.inductiveautomation.com/t/power-table-visible-rows/111200>\
**Category:** Ignition\
**Tags:** ignition81, vision\
**Created:** [October 6, 2025, 11:45am UTC](https://forum.inductiveautomation.com/t/power-table-visible-rows/111200 "2025-10-06T11:45:04Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![Henk](https://avatars.discourse-cdn.com/v4/letter/h/b5ac83/32.png) [@Henk](https://forum.inductiveautomation.com/u/Henk)\
**Post date:** [October 6, 2025, 11:45am UTC](https://forum.inductiveautomation.com/t/power-table-visible-rows/111200/1 "2025-10-06T11:45:04Z")

</div>

Is it possible to determine which rows are visible in a power table? A list with row numbers would be nice.

---

<div class="post-metadata">

**Author:** ![JordanCClark](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/jordancclark/32/83362_2.png) [@JordanCClark](https://forum.inductiveautomation.com/u/JordanCClark)\
**Post date:** [October 6, 2025, 4:04pm UTC](https://forum.inductiveautomation.com/t/power-table-visible-rows/111200/3 "2025-10-06T16:04:20Z")

</div>

_Psst!_ A power table is a Vision component, not Perspective.

@Henk You might find this useful.:

> [@Programmatically-applied PowerTable Filters](https://forum.inductiveautomation.com/t/programmatically-applied-powertable-filters/15495/2):
>
> model = self.getTable().getModel().getActualModel() from com.jidesoft.grid import SingleValueFilter class newFilter(SingleValueFilter): def isValueFiltered(self, value): return True if value == target.data.getValueAt(row, 4) else False model.addFilter(3, newFilter()) model.setFiltersApplied(True) model.refresh() I’ve used this code before to successfully apply a filter (shows the filter icon in the table header correctly), and it also allows it to be removed by select…

---

<div class="post-metadata">

**Author:** ![Everett\_Cass](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/everett_cass/32/86983_2.png) [@Everett\_Cass](https://forum.inductiveautomation.com/u/Everett_Cass)\
**Post date:** [October 6, 2025, 4:09pm UTC](https://forum.inductiveautomation.com/t/power-table-visible-rows/111200/4 "2025-10-06T16:09:29Z")

</div>

Dough! My bad

---

<div class="post-metadata">

**Author:** ![paul-griffith](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/paul-griffith/32/37249_2.png) [@paul-griffith](https://forum.inductiveautomation.com/u/paul-griffith)\
**Post date:** [October 6, 2025, 4:16pm UTC](https://forum.inductiveautomation.com/t/power-table-visible-rows/111200/5 "2025-10-06T16:16:10Z")

</div>

There's no easy way to return which rows are **visible** , because which rows are visible is the responsibility of the component and its parent scroll pane, not the responsibility of the underlying table model. It's technically possible; basically you could use the inner Java Swing functions to determine what the row is at the top of the table and what the row is at the bottom and then interpolate the two (assuming you're not doing any filtering...)

But the better question is probably: What are you ultimately trying to do?

---

<div class="post-metadata">

**Author:** ![Henk](https://avatars.discourse-cdn.com/v4/letter/h/b5ac83/32.png) [@Henk](https://forum.inductiveautomation.com/u/Henk)\
**Post date:** [October 7, 2025, 4:30am UTC](https://forum.inductiveautomation.com/t/power-table-visible-rows/111200/6 "2025-10-07T04:30:57Z")

</div>

The power table is filled with process information. The customer wants with a push of a button to ‘accept‘ all visible rows without selecting them.

---

<div class="post-metadata">

**Author:** ![lrose](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/lrose/32/62724_2.png) [@lrose](https://forum.inductiveautomation.com/u/lrose)\
**Post date:** [October 7, 2025, 11:43am UTC](https://forum.inductiveautomation.com/t/power-table-visible-rows/111200/7 "2025-10-07T11:43:31Z")

</div>

> [@Henk](#):
>
> all visible rows without selecting them.

This seems very fragile to me. What happens if the user scrolls to where only part of a row is visible? The program can only intrepret a row as visible or not visible and this could lead to rows not being accepted that were expected to or worse, rows being accepted that wern't intended to be.

---

<div class="post-metadata">

**Author:** ![justinedwards.jle](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/justinedwards.jle/32/37854_2.png) [@justinedwards.jle](https://forum.inductiveautomation.com/u/justinedwards.jle)\
**Post date:** [December 10, 2025, 8:14am UTC](https://forum.inductiveautomation.com/t/power-table-visible-rows/111200/8 "2025-12-10T08:14:33Z")

</div>

I was able to get this data from a power table with a test button using the following script:

```python
from java.awt import Point

table = event.source.parent.getComponent('Power Table').table
viewport = table.parent
viewPosition = viewport.viewPosition
viewRect = viewport.viewRect

firstVisibleRow = table.rowAtPoint(viewPosition)
lastVisibleRow = table.rowAtPoint(Point(viewRect.x, viewRect.y + viewRect.height - 1))

print firstVisibleRow, lastVisibleRow

```

It simply gets a point from the top and bottom of the view rectangle and uses the internal table's rowAtPoint method to determine the visible rows.
