# Perspective Table select all

**URL:** <https://forum.inductiveautomation.com/t/perspective-table-select-all/49248>\
**Category:** Ignition\
**Tags:** ignition80, perspective\
**Created:** [July 27, 2021, 3:51pm UTC](https://forum.inductiveautomation.com/t/perspective-table-select-all/49248 "2021-07-27T15:51:05Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![bwhite](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/bwhite/32/7112_2.png) [@bwhite](https://forum.inductiveautomation.com/u/bwhite)\
**Post date:** [July 27, 2021, 3:51pm UTC](https://forum.inductiveautomation.com/t/perspective-table-select-all/49248/1 "2021-07-27T15:51:05Z")

</div>

Has anyone used a button to select all the rows in a table? I see that someone has asked this in 2019, but there was no answer.

---

<div class="post-metadata">

**Author:** ![victordcq](https://avatars.discourse-cdn.com/v4/letter/v/f6c823/32.png) [@victordcq](https://forum.inductiveautomation.com/u/victordcq)\
**Post date:** [July 28, 2021, 6:37am UTC](https://forum.inductiveautomation.com/t/perspective-table-select-all/49248/2 "2021-07-28T06:37:57Z")

</div>

Doesnt really seem to be possible i think.  
What would you want to do when you select everything?

---

<div class="post-metadata">

**Author:** ![mazeyrat](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/mazeyrat/32/10955_2.png) [@mazeyrat](https://forum.inductiveautomation.com/u/mazeyrat)\
**Post date:** [April 25, 2023, 7:08pm UTC](https://forum.inductiveautomation.com/t/perspective-table-select-all/49248/3 "2023-04-25T19:08:24Z")

</div>

This feature will be very usefull !

> **[Perspective Table select all | Voters | Inductive Automation](https://inductiveautomation.canny.io/ignition-features-and-ideas/p/perspective-table-select-all)**

---

<div class="post-metadata">

**Author:** ![msteele](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/msteele/32/77889_2.png) [@msteele](https://forum.inductiveautomation.com/u/msteele)\
**Post date:** [November 12, 2024, 10:35pm UTC](https://forum.inductiveautomation.com/t/perspective-table-select-all/49248/4 "2024-11-12T22:35:06Z")

</div>

We continued to run into this issue, and I'm glad to see there's a feature request open to add this in.

Until that feature gets added, and since this is the main thread that comes up for this request, I want to share a general overview of how we solved this for a control scheme (with some great advice from @pturmel off the forum). I hope this can help someone with a similar need.

- **Use two tables, a display table and a selections table.** Only one will display at a time.

- From a UX perspective, we flip the construct so that the **default behavior is "everything selected,"** and selecting items creates a filtered selection on the selections table. Since there's no good way to select _all_ but we'd never have a case where someone needs to command _none_, we simply treat none as all and anything more than none as a filtered selection.

- The selections table's columns prop is bound to the display table's columns props so they stay in sync. Both tables bind to lists of tagPaths in custom properties and remap them identically through Integration Toolkit expressions. But the source argument in the `forEach()` expression is either the source tag list or the selection tag list.

- A command mode toggle switches the display prop to display only the full table or the selections table, and also swaps some aggregations for the batch controls.

- Display table's `onRowDoubleClick` event wipes out the selection via:

```python
	if self.props.selection.selectedRow >= 0:
		self.props.selection.enableRowSelection = False

```

- Display table's `props.selection.selectedColumn` has a change script to re-enable selection:

```python
	if currentValue.value is None:
		self.props.selection.enableRowSelection = True

```
