# Freeze a column in a table

**URL:** <https://forum.inductiveautomation.com/t/freeze-a-column-in-a-table/53568>\
**Category:** Ignition\
**Tags:** perspective\
**Created:** [November 30, 2021, 2:27pm UTC](https://forum.inductiveautomation.com/t/freeze-a-column-in-a-table/53568 "2021-11-30T14:27:34Z")\
**Posts on this page:** 11\
**Page:** 2

<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:** [December 1, 2021, 7:59am UTC](https://forum.inductiveautomation.com/t/freeze-a-column-in-a-table/53568/21 "2021-12-01T07:59:49Z")

</div>

They can be custimzed with theme.css  
And i bet there is a complex list of selectors that could get this to work. but its mostlikely gonna be more complexe than the one i made for datepicker. While my "sticky canvas" solution isnt all that complicated

> [@Css to change datepicker calender to be mon-\>sun instead of sun-\>sat](https://forum.inductiveautomation.com/t/css-to-change-datepicker-calender-to-be-mon-sun-instead-of-sun-sat/48943):
>
> For those who want it, here is the magic! its not perfect but eh: [image] for theme.css .iaDateRangePicker .calendarBar { grid-template-columns: none; } .calendarBar \> div:nth-child(1) { grid-area: 1/8/1/8 !important; } .iaDateRangePicker .calendar{grid-template-columns: none;} .calendar \> div[style$="2;"]{ grid-column-start: 8 !important; grid-column-end: 8 !important;}.calendar \> div[style^="grid-area: 1"]{ grid-row-start: 2 !important;}.calendar \> div[style^="grid-area: 2"]{ grid-row-start…

---

<div class="post-metadata">

**Author:** ![jespinmartin1](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/jespinmartin1/32/57175_2.png) [@jespinmartin1](https://forum.inductiveautomation.com/u/jespinmartin1)\
**Post date:** [December 1, 2021, 8:32am UTC](https://forum.inductiveautomation.com/t/freeze-a-column-in-a-table/53568/22 "2021-12-01T08:32:55Z")

</div>

damn, Java Docs are well documented. But this? how are you even doing it.

---

<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:** [December 1, 2021, 8:46am UTC](https://forum.inductiveautomation.com/t/freeze-a-column-in-a-table/53568/23 "2021-12-01T08:46:57Z")

</div>

Css magic and inspector 🧙

---

<div class="post-metadata">

**Author:** ![pkhoshroo](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pkhoshroo/32/26801_2.png) [@pkhoshroo](https://forum.inductiveautomation.com/u/pkhoshroo)\
**Post date:** [December 1, 2021, 1:25pm UTC](https://forum.inductiveautomation.com/t/freeze-a-column-in-a-table/53568/24 "2021-12-01T13:25:52Z")

</div>

Thank you very much, Zack. Appreciate the information!

---

<div class="post-metadata">

**Author:** ![zxcslo](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/zxcslo/32/61610_2.png) [@zxcslo](https://forum.inductiveautomation.com/u/zxcslo)\
**Post date:** [December 9, 2021, 11:31am UTC](https://forum.inductiveautomation.com/t/freeze-a-column-in-a-table/53568/25 "2021-12-09T11:31:16Z")

</div>

Can you please elaborate on how it’s possible in Vision?  
I’m searching the forum, but couldn’t find anything…

I’m in need to freeze the first 8 rows in a power table…

---

<div class="post-metadata">

**Author:** ![jespinmartin1](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/jespinmartin1/32/57175_2.png) [@jespinmartin1](https://forum.inductiveautomation.com/u/jespinmartin1)\
**Post date:** [December 20, 2021, 5:26am UTC](https://forum.inductiveautomation.com/t/freeze-a-column-in-a-table/53568/26 "2021-12-20T05:26:12Z")

</div>

Sorry, didn’t realize on your question. Rows? well I’m sure it is posible with rows but it should be. Freezing columns is well known in oracle devs, this was my reference [How to freeze row and column in JTable — oracle-tech](https://community.oracle.com/tech/developers/discussion/2310995/how-to-freeze-row-and-column-in-jtable). I remember I did this with the power table and works just fine. Just translate it to Jython and have fun.

---

<div class="post-metadata">

**Author:** ![saiful64](https://avatars.discourse-cdn.com/v4/letter/s/ba8739/32.png) [@saiful64](https://forum.inductiveautomation.com/u/saiful64)\
**Post date:** [July 28, 2025, 6:54am UTC](https://forum.inductiveautomation.com/t/freeze-a-column-in-a-table/53568/27 "2025-07-28T06:54:16Z")

</div>

I’ve implemented a working solution using CSS.  
As shown in the screenshots, you need to configure the column with `position`, `left`, and `background-color` settings.

Make sure to also add the CSS to the stylesheet.

 ![Screenshot 2025-07-28 121757](https://us1.discourse-cdn.com/inductiveautomation/original/3X/5/2/521e3e906cc9a33174118f63d3416ea187eef410.png)  
 ![Screenshot 2025-07-28 121817](https://us1.discourse-cdn.com/inductiveautomation/original/3X/f/9/f906e219e0b65c8f2488ecfff498e45cfde48103.png)

@Inductive Automation, please update the global stylesheet to include default CSS for sticky classes. This will ensure that using only `position: sticky` in selection will function as expected.

---

<div class="post-metadata">

**Author:** ![Eugene49](https://avatars.discourse-cdn.com/v4/letter/e/c6cbf5/32.png) [@Eugene49](https://forum.inductiveautomation.com/u/Eugene49)\
**Post date:** [May 14, 2026, 5:15am UTC](https://forum.inductiveautomation.com/t/freeze-a-column-in-a-table/53568/28 "2026-05-14T05:15:29Z")

</div>

I don't understand, has this been solved?

This is what i got, only header of first column is stickied:

 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/8/7/87aac873df7a35ecee07e9c36bf4bd185aca3904.png)

 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/8/1/815592895d818b680ad8d77f8c4f0b025332cca7.png)

view's json:  
[freeze first column.json](https://forum.inductiveautomation.com/uploads/short-url/7BITp5krjvQo28szKhH2peHlJvJ.json) (37.5 KB)

---

<div class="post-metadata">

**Author:** ![tkiley](https://avatars.discourse-cdn.com/v4/letter/t/bbe5ce/32.png) [@tkiley](https://forum.inductiveautomation.com/u/tkiley)\
**Post date:** [May 14, 2026, 4:16pm UTC](https://forum.inductiveautomation.com/t/freeze-a-column-in-a-table/53568/29 "2026-05-14T16:16:05Z")

</div>

You need to add the css in the Advanced Style sheet from the post above yours.

---

<div class="post-metadata">

**Author:** ![Eugene49](https://avatars.discourse-cdn.com/v4/letter/e/c6cbf5/32.png) [@Eugene49](https://forum.inductiveautomation.com/u/Eugene49)\
**Post date:** [May 18, 2026, 2:50pm UTC](https://forum.inductiveautomation.com/t/freeze-a-column-in-a-table/53568/30 "2026-05-18T14:50:56Z")

</div>

i added below on advance stylesheet:

```python
/* The following rules are for Sticky columns in tables */
.tc[style*="position: sticky"] {
	z-index: 1 !important;
}

.ia_table__headerCell[style*="position: sticky"] {
	z-index: 1 !important;
}

div.flexBodyInnerScrollContainer,
div.ia_table__rowGroup,
div.ia_table__row {
	overflow: clip !important;
	background-color: #FFFFFF;
}

```

Still not working:

 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/a/6/a62a673ea521df465c34c849dbe0608313abefbf.png)

 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/f/0/f05169ce2e986ca962f8bae1c308e6b2e724403c.png)

---

<div class="post-metadata">

**Author:** ![Alejandro\_Alaco](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/alejandro_alaco/32/59849_2.png) [@Alejandro\_Alaco](https://forum.inductiveautomation.com/u/Alejandro_Alaco)\
**Post date:** [June 3, 2026, 9:38am UTC](https://forum.inductiveautomation.com/t/freeze-a-column-in-a-table/53568/31 "2026-06-03T09:38:36Z")

</div>

Simple steps for sticky columns in Perspective Table:

Select your Table  
Go to:  
Table.props.columns

Choose the columns you want fixed  
Example: SEDE and CONCEPTO.

In the columns transform, add this style to those columns

```python
"style": {
    "position": "sticky",
    "left": "0px",
    "zIndex": 10,
    "backgroundColor": "#FFFFFF"
}

```

For the second sticky column, increase left  
Example if SEDE width is 144px:

```python
"style": {
    "position": "sticky",
    "left": "144px",
    "zIndex": 10,
    "backgroundColor": "#FFFFFF"
}

```

Make sure both columns have fixed width

```python
"width": 144,
"resizable": False
For headers, also add sticky style inside header.style
"header": {
    "title": "SEDE",
    "style": {
        "position": "sticky",
        "left": "0px",
        "zIndex": 20,
        "backgroundColor": "#FFFFFF"
    }
}

```

Important: left must match the total width of previous sticky columns.

**You can aply this css properties directly on the script transform**

[Previous page](https://forum.inductiveautomation.com/t/freeze-a-column-in-a-table/53568.md?page=1)
