# Power Table Tag Binding best/easiest practices?

**URL:** <https://forum.inductiveautomation.com/t/power-table-tag-binding-best-easiest-practices/105254>\
**Category:** Ignition\
**Tags:** ignition81, vision\
**Created:** [April 17, 2025, 6:33pm UTC](https://forum.inductiveautomation.com/t/power-table-tag-binding-best-easiest-practices/105254 "2025-04-17T18:33:49Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

**Author:** ![gschettler](https://avatars.discourse-cdn.com/v4/letter/g/bbe5ce/32.png) [@gschettler](https://forum.inductiveautomation.com/u/gschettler)\
**Post date:** [April 17, 2025, 6:33pm UTC](https://forum.inductiveautomation.com/t/power-table-tag-binding-best-easiest-practices/105254/1 "2025-04-17T18:33:49Z")

</div>

Hi all,

I am working in Ignition 8.1 with a Vision template. I am attempting to create a power table with two columns. The first column is just Integers from 0 to 99. I need the second column to bind to an OPC tag that displays a string.

I figure I can do this by creating 100 custom properties, one for every single tag and binding each one to the string i am trying to display as:

{1}/Points/Points0/Name  
{1}/Points/Points1/Name  
....

And then going into the power table data binding and binding each cell to the custom property in the cell update section. However, this is very tedious, and if i wanted to copy and paste this power table to display a different set of 100 strings, i would have to re-bind everything. I imagine there is a faster way to do this but can't seem to sort it out in my head. Does anyone have any suggestions?

 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/4/3/4348b0898ae43c9e8ff4f7e769a9777fd2992474.png)

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [April 17, 2025, 6:40pm UTC](https://forum.inductiveautomation.com/t/power-table-tag-binding-best-easiest-practices/105254/2 "2025-04-17T18:40:11Z")

</div>

I would use my Integration Toolkit's `tags()` expression function, with a list of tag paths generated dynamically with a `forEach()` expression (also from the Integration Toolkit).

---

<div class="post-metadata">

**Author:** ![gschettler](https://avatars.discourse-cdn.com/v4/letter/g/bbe5ce/32.png) [@gschettler](https://forum.inductiveautomation.com/u/gschettler)\
**Post date:** [April 17, 2025, 7:49pm UTC](https://forum.inductiveautomation.com/t/power-table-tag-binding-best-easiest-practices/105254/3 "2025-04-17T19:49:46Z")

</div>

Okay, intersting. I'm fairly new to ignition. This toolkit is a 3rd part add-on it looks like. I downloaded it and registered it in my gateway. But I don't see where the extra functions expressions are available?

Could you give just a little more detail on how you would set this up?

---

<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:** [April 17, 2025, 8:00pm UTC](https://forum.inductiveautomation.com/t/power-table-tag-binding-best-easiest-practices/105254/4 "2025-04-17T20:00:35Z")

</div>

You will find them listed with all of the other expression functions.

Phil has them separated out to their own categories where appropriate, and listed in other appropriate categories otherwise.

You will find the `tags()` expression function under the "Advanced" category, and `forEach()` under the "Iteration" category.

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [April 17, 2025, 8:32pm UTC](https://forum.inductiveautomation.com/t/power-table-tag-binding-best-easiest-practices/105254/5 "2025-04-17T20:32:47Z")

</div>

I would add a couple custom dataset properties to the window or template where the table will be. The first prop, perhaps named `tagpaths`, would hold the generated list of tag paths, with an expression binding something like this:

```python
unionAll(
	asMap('tagpath', 'str'),
	forEach(
		100, // Like python's range(100)
		stringFormat(
			"%s/Points/Points%d/Name",
			{Root Container.tagFolder},
			idx()
		)
	)
)

```

Then the other props expression would be something like this:

```python
tags({Root Container.tagpaths})

```

On the table, you will want to expand on the returned tag path & values dataset, perhaps with `selectStar()`.

---

<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:** [April 17, 2025, 8:45pm UTC](https://forum.inductiveautomation.com/t/power-table-tag-binding-best-easiest-practices/105254/6 "2025-04-17T20:45:07Z")

</div>

Phil, any significant reason you used `idx()` here as opposed to `it()`?

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [April 17, 2025, 8:46pm UTC](https://forum.inductiveautomation.com/t/power-table-tag-binding-best-easiest-practices/105254/7 "2025-04-17T20:46:55Z")

</div>

No, except for clarity.

---

<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:** [April 17, 2025, 10:29pm UTC](https://forum.inductiveautomation.com/t/power-table-tag-binding-best-easiest-practices/105254/8 "2025-04-17T22:29:20Z")

</div>

Another option entirely, using 'vanilla' Vision:  
Ditch the table component.  
Create a template for the 'row', give it a string parameter to use as a tag path.  
Use an indirect binding inside the template, using that parameter to get the live value.  
Use a template repeater to populate the tag path parameter with your repeated set.

---

<div class="post-metadata">

**Author:** ![gschettler](https://avatars.discourse-cdn.com/v4/letter/g/bbe5ce/32.png) [@gschettler](https://forum.inductiveautomation.com/u/gschettler)\
**Post date:** [April 18, 2025, 12:57pm UTC](https://forum.inductiveautomation.com/t/power-table-tag-binding-best-easiest-practices/105254/9 "2025-04-18T12:57:18Z")

</div>

Thanks so much for the direction! I went the route of hard coding my current power table because I cannot use the integration toolkit without a licensed version of ignition edge (currently just doing some upfront development so i don't have a license yet). But the instructions were clear and I will give this a go in the future!

I appreciate the help! @pturmel @paul-griffith @lrose

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [April 18, 2025, 12:59pm UTC](https://forum.inductiveautomation.com/t/power-table-tag-binding-best-easiest-practices/105254/10 "2025-04-18T12:59:22Z")

</div>

> [@gschettler](#):
>
> licensed version of ignition edge

Be aware that most 3rd party modules do not run in Edge at all. In this case, my Integration Toolkit can be licensed in Edge by buying either of my Edge-qualified driver modules.
