<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://community.appian.com/cfs-file/__key/system/syndication/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Can we freeze the data columns when the user scrolls  in data grid</title><link>https://community.appian.com/discussions/f/best-practices/18407/can-we-freeze-the-data-columns-when-the-user-scrolls-in-data-grid</link><description>data grid displays 50 columns and need to freeze the first 3 columns as the user scrolls horizontally when checking the other columns in data grid</description><dc:language>en-US</dc:language><generator>Telligent Community 12</generator><item><title>RE: Can we freeze the data columns when the user scrolls  in data grid</title><link>https://community.appian.com/thread/72494?ContentTypeID=1</link><pubDate>Thu, 05 Mar 2020 20:49:58 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:fc9dd9c2-60cb-42e7-b1ec-0564453e8fc5</guid><dc:creator>Mike Schmitt</dc:creator><description>&lt;p&gt;Updated version that uses your total columns, and i&amp;#39;ve also fixed some of my pointer math to make it more intuitive to deal with on the form:&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="java"&gt;a!localVariables(
  
  local!data: {
    {id: 1, name: &amp;quot;one&amp;quot;, data1: &amp;quot;data1&amp;quot;, data2: &amp;quot;data2&amp;quot;, data3: &amp;quot;data3&amp;quot;, data4: &amp;quot;data4&amp;quot;, data5: &amp;quot;data5&amp;quot;, data6: &amp;quot;data6&amp;quot;, data7: &amp;quot;data7&amp;quot;, data8: &amp;quot;data8&amp;quot;, data9: &amp;quot;data9&amp;quot;,data10: &amp;quot;data10&amp;quot;, data11: &amp;quot;data11&amp;quot;, data12: &amp;quot;data12&amp;quot;, data13: &amp;quot;data13&amp;quot;, data14: &amp;quot;data14&amp;quot;, data15: &amp;quot;data15&amp;quot;, data16: &amp;quot;data16&amp;quot;, data17: &amp;quot;data17&amp;quot;, data18: &amp;quot;data18&amp;quot;, data19: &amp;quot;data19&amp;quot;,data20: &amp;quot;data20&amp;quot;, data21: &amp;quot;data21&amp;quot;, data22: &amp;quot;data22&amp;quot;, data23: &amp;quot;data23&amp;quot;, data24: &amp;quot;data24&amp;quot;, data25: &amp;quot;data25&amp;quot;, data26: &amp;quot;data26&amp;quot;, data27: &amp;quot;data27&amp;quot;, data28: &amp;quot;data28&amp;quot;, data29: &amp;quot;data29&amp;quot;,data30: &amp;quot;data30&amp;quot;},
    {id: 2, name: &amp;quot;two&amp;quot;, data1: &amp;quot;data1&amp;quot;, data2: &amp;quot;data2&amp;quot;, data3: &amp;quot;data3&amp;quot;, data4: &amp;quot;data4&amp;quot;, data5: &amp;quot;data5&amp;quot;, data6: &amp;quot;data6&amp;quot;, data7: &amp;quot;data7&amp;quot;, data8: &amp;quot;data8&amp;quot;, data9: &amp;quot;data9&amp;quot;,data10: &amp;quot;data10&amp;quot;, data11: &amp;quot;data11&amp;quot;, data12: &amp;quot;data12&amp;quot;, data13: &amp;quot;data13&amp;quot;, data14: &amp;quot;data14&amp;quot;, data15: &amp;quot;data15&amp;quot;, data16: &amp;quot;data16&amp;quot;, data17: &amp;quot;data17&amp;quot;, data18: &amp;quot;data18&amp;quot;, data19: &amp;quot;data19&amp;quot;,data20: &amp;quot;data20&amp;quot;, data21: &amp;quot;data21&amp;quot;, data22: &amp;quot;data22&amp;quot;, data23: &amp;quot;data23&amp;quot;, data24: &amp;quot;data24&amp;quot;, data25: &amp;quot;data25&amp;quot;, data26: &amp;quot;data26&amp;quot;, data27: &amp;quot;data27&amp;quot;, data28: &amp;quot;data28&amp;quot;, data29: &amp;quot;data29&amp;quot;,data30: &amp;quot;data30&amp;quot;},
    {id: 3, name: &amp;quot;three&amp;quot;, data1: &amp;quot;data1&amp;quot;, data2: &amp;quot;data2&amp;quot;, data3: &amp;quot;data3&amp;quot;, data4: &amp;quot;data4&amp;quot;, data5: &amp;quot;data5&amp;quot;, data6: &amp;quot;data6&amp;quot;, data7: &amp;quot;data7&amp;quot;, data8: &amp;quot;data8&amp;quot;, data9: &amp;quot;data9&amp;quot;,data10: &amp;quot;data10&amp;quot;, data11: &amp;quot;data11&amp;quot;, data12: &amp;quot;data12&amp;quot;, data13: &amp;quot;data13&amp;quot;, data14: &amp;quot;data14&amp;quot;, data15: &amp;quot;data15&amp;quot;, data16: &amp;quot;data16&amp;quot;, data17: &amp;quot;data17&amp;quot;, data18: &amp;quot;data18&amp;quot;, data19: &amp;quot;data19&amp;quot;,data20: &amp;quot;data20&amp;quot;, data21: &amp;quot;data21&amp;quot;, data22: &amp;quot;data22&amp;quot;, data23: &amp;quot;data23&amp;quot;, data24: &amp;quot;data24&amp;quot;, data25: &amp;quot;data25&amp;quot;, data26: &amp;quot;data26&amp;quot;, data27: &amp;quot;data27&amp;quot;, data28: &amp;quot;data28&amp;quot;, data29: &amp;quot;data29&amp;quot;,data30: &amp;quot;data30&amp;quot;}
  },
  
  local!defaultColumnPointerValue: 1,
  local!optionalColumnPointer: local!defaultColumnPointerValue,
  local!optionalColumnsLength: 6,
  local!allOptionalColumns: {&amp;quot;data3&amp;quot;, &amp;quot;data4&amp;quot;, &amp;quot;data5&amp;quot;, &amp;quot;data6&amp;quot;, &amp;quot;data7&amp;quot;, &amp;quot;data8&amp;quot;, &amp;quot;data9&amp;quot;,&amp;quot;data10&amp;quot;,&amp;quot;data11&amp;quot;,&amp;quot;data12&amp;quot;,&amp;quot;data13&amp;quot;,&amp;quot;data14&amp;quot;,&amp;quot;data15&amp;quot;,&amp;quot;data16&amp;quot;,&amp;quot;data17&amp;quot;,&amp;quot;data18&amp;quot;,&amp;quot;data19&amp;quot;,&amp;quot;data20&amp;quot;, &amp;quot;data21&amp;quot;,&amp;quot;data22&amp;quot;,&amp;quot;data23&amp;quot;,&amp;quot;data24&amp;quot;,&amp;quot;data25&amp;quot;,&amp;quot;data26&amp;quot;,&amp;quot;data27&amp;quot;,&amp;quot;data28&amp;quot;,&amp;quot;data29&amp;quot;,&amp;quot;data30&amp;quot;},
  local!maxOptionalColumnPointerValue: (length(local!allOptionalColumns)+1) - local!optionalColumnsLength,
  local!selectedOptionalColumns: index(
    local!allOptionalColumns,
    enumerate(local!optionalColumnsLength) + local!optionalColumnPointer,
    null()
  ),
  
  a!sectionLayout(
    contents: {
      a!columnsLayout(
        columns: {
          a!columnLayout(
            contents: {
              a!gridField(
                data: local!data,
                columns: {
                  a!gridColumn(
                    label: &amp;quot;Id&amp;quot;,
                    value: fv!row.id,
                    width: &amp;quot;ICON&amp;quot;
                  ),
                  a!gridColumn(
                    label: &amp;quot;data1&amp;quot;,
                    value: fv!row.data1
                  ),
                  a!gridColumn(
                    label: &amp;quot;data2&amp;quot;,
                    value: fv!row.data2
                  ),
                  a!gridColumn(
                    helpTooltip: &amp;quot;More columns to the left&amp;quot;,
                    value: a!richTextDisplayField(
                      value: a!richTextIcon(icon: &amp;quot;caret-left&amp;quot;, caption: &amp;quot;Scroll Left to see more columns&amp;quot;)
                    ),
                    showWhen: local!optionalColumnPointer &amp;gt; 1,
                    align: &amp;quot;CENTER&amp;quot;,
                    width: &amp;quot;ICON&amp;quot;
                  ),
                  
                  a!forEach(
                    local!selectedOptionalColumns,
                    a!gridColumn(
                      label: fv!item,
                      value: property(fv!row, fv!item, &amp;quot;--&amp;quot;)
                    )
                  ),
                  

                  a!gridColumn(
                    helpTooltip: &amp;quot;More columns to the right&amp;quot;,
                    value: a!richTextDisplayField(
                      value: a!richTextIcon(icon: &amp;quot;caret-right&amp;quot;, caption: &amp;quot;Scroll Right to see more columns&amp;quot;)
                    ),
                    showWhen: local!optionalColumnPointer &amp;lt; local!maxOptionalColumnPointerValue,
                    align: &amp;quot;CENTER&amp;quot;,
                    width: &amp;quot;ICON&amp;quot;
                  )
                }
              ),
              a!richTextDisplayField(
                value: {
                  a!richTextItem(
                    text: {
                      a!richTextIcon(
                        icon: &amp;quot;long-arrow-left&amp;quot;,
                        caption: &amp;quot;Scroll Left&amp;quot; &amp;amp; if(local!optionalColumnPointer &amp;lt;= local!defaultColumnPointerValue, &amp;quot; (disabled)&amp;quot;, &amp;quot;&amp;quot;),
                        color: if(
                          local!optionalColumnPointer &amp;lt;= local!defaultColumnPointerValue,
                          &amp;quot;#D3D3D3&amp;quot;,
                          &amp;quot;&amp;quot;
                        )
                      )
                    },
                    link: a!dynamicLink(
                      saveInto: {
                        a!save(
                          local!optionalColumnPointer,
                          local!optionalColumnPointer - 1
                        )
                      },
                      showWhen: local!optionalColumnPointer &amp;gt; local!defaultColumnPointerValue
                    ),
                    linkStyle: &amp;quot;STANDALONE&amp;quot;,
                    size: &amp;quot;LARGE&amp;quot;
                  ),
                  &amp;quot;   &amp;quot;,
                  a!richTextIcon(
                    icon: &amp;quot;map-o&amp;quot;,
                    caption: &amp;quot;Reset&amp;quot;,
                    link: a!dynamicLink(
                      saveInto: {
                        a!save(
                          local!optionalColumnPointer,
                          local!defaultColumnPointerValue
                        )
                      },
                      showWhen: local!optionalColumnPointer &amp;lt;&amp;gt; local!defaultColumnPointerValue
                    ),
                    linkStyle: &amp;quot;STANDALONE&amp;quot;,
                    color: if(
                      local!optionalColumnPointer = local!defaultColumnPointerValue,
                      &amp;quot;#D3D3D3&amp;quot;,
                      null()
                    ),
                    size: &amp;quot;MEDIUM_PLUS&amp;quot;
                  ),
                  &amp;quot;   &amp;quot;,
                  a!richTextItem(
                    text: {
                      a!richTextIcon(
                        icon: &amp;quot;long-arrow-right&amp;quot;,
                        caption: &amp;quot;Scroll Right&amp;quot; &amp;amp; if(local!optionalColumnPointer &amp;gt;= local!maxOptionalColumnPointerValue, &amp;quot; (disabled)&amp;quot;, &amp;quot;&amp;quot;),
                        color: if(
                          local!optionalColumnPointer &amp;gt;= local!maxOptionalColumnPointerValue,
                          &amp;quot;#D3D3D3&amp;quot;,
                          &amp;quot;&amp;quot;
                        )
                      )
                    },
                    link: a!dynamicLink(
                      saveInto: {
                        a!save(
                          local!optionalColumnPointer,
                          local!optionalColumnPointer + 1
                          
                          /* you can use this value here (or in a separate control) to jump to the end */
                          /*local!maxOptionalColumnPointerValue*/
                        )
                      },
                      showWhen: local!optionalColumnPointer &amp;lt; local!maxOptionalColumnPointerValue
                    ),
                    linkStyle: &amp;quot;STANDALONE&amp;quot;,
                    size: &amp;quot;LARGE&amp;quot;
                  )
                },
                align: &amp;quot;RIGHT&amp;quot;
              )
            }
          )
        }
      )
    }
  )
)&lt;/pre&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Can we freeze the data columns when the user scrolls  in data grid</title><link>https://community.appian.com/thread/72492?ContentTypeID=1</link><pubDate>Thu, 05 Mar 2020 19:38:20 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:7ee2de62-9371-43e3-a0df-0e70a1df40d3</guid><dc:creator>Rama</dc:creator><description>&lt;p&gt;Thank you its working now.I appreciate your help.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Can we freeze the data columns when the user scrolls  in data grid</title><link>https://community.appian.com/thread/72491?ContentTypeID=1</link><pubDate>Thu, 05 Mar 2020 19:30:33 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:2b339ced-eaaf-4a37-8b36-565bea79dafd</guid><dc:creator>Mike Schmitt</dc:creator><description>&lt;p&gt;Your revision works for me... if you&amp;#39;re doing this in Interface Editor, and you change the local values (without making them into a!refreshVariable variables with &amp;quot;refreshAlways&amp;quot; set to true), you will need to manually refresh the values by clicking &amp;quot;test&amp;quot; at the top of the page.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Can we freeze the data columns when the user scrolls  in data grid</title><link>https://community.appian.com/thread/72490?ContentTypeID=1</link><pubDate>Thu, 05 Mar 2020 19:24:27 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:a1494f62-78e7-4499-b8e4-8623bc35f2ca</guid><dc:creator>Rama</dc:creator><description>&lt;p&gt;If i am trying to add more columns the data is displaying upto 9 only.&lt;/p&gt;
&lt;p&gt;Modified above code like&amp;nbsp; local!data: {&lt;br /&gt; {id: 1, name: &amp;quot;one&amp;quot;, data1: &amp;quot;data1&amp;quot;, data2: &amp;quot;data2&amp;quot;, data3: &amp;quot;data3&amp;quot;, data4: &amp;quot;data4&amp;quot;, data5: &amp;quot;data5&amp;quot;, data6: &amp;quot;data6&amp;quot;, data7: &amp;quot;data7&amp;quot;, data8: &amp;quot;data8&amp;quot;, data9: &amp;quot;data9&amp;quot;,data10: &amp;quot;data10&amp;quot;,&lt;br /&gt; data11: &amp;quot;data11&amp;quot;, data12: &amp;quot;data12&amp;quot;, data13: &amp;quot;data13&amp;quot;, data14: &amp;quot;data14&amp;quot;, data15: &amp;quot;data15&amp;quot;, data16: &amp;quot;data16&amp;quot;, data17: &amp;quot;data17&amp;quot;, data18: &amp;quot;data18&amp;quot;, data19: &amp;quot;data19&amp;quot;,data20: &amp;quot;data20&amp;quot;,&lt;br /&gt; data21: &amp;quot;data21&amp;quot;, data22: &amp;quot;data22&amp;quot;, data23: &amp;quot;data23&amp;quot;, data24: &amp;quot;data24&amp;quot;, data25: &amp;quot;data25&amp;quot;, data26: &amp;quot;data26&amp;quot;, data27: &amp;quot;data27&amp;quot;, data28: &amp;quot;data28&amp;quot;, data29: &amp;quot;data29&amp;quot;,data30: &amp;quot;data30&amp;quot;},&lt;br /&gt; &lt;br /&gt; {id: 2, name: &amp;quot;two&amp;quot;, data1: &amp;quot;data1&amp;quot;, data2: &amp;quot;data2&amp;quot;, data3: &amp;quot;data3&amp;quot;, data4: &amp;quot;data4&amp;quot;, data5: &amp;quot;data5&amp;quot;, data6: &amp;quot;data6&amp;quot;, data7: &amp;quot;data7&amp;quot;, data8: &amp;quot;data8&amp;quot;, data9: &amp;quot;data9&amp;quot;,data10: &amp;quot;data10&amp;quot;,&lt;br /&gt; data11: &amp;quot;data11&amp;quot;, data12: &amp;quot;data12&amp;quot;, data13: &amp;quot;data13&amp;quot;, data14: &amp;quot;data14&amp;quot;, data15: &amp;quot;data15&amp;quot;, data16: &amp;quot;data16&amp;quot;, data17: &amp;quot;data17&amp;quot;, data18: &amp;quot;data18&amp;quot;, data19: &amp;quot;data19&amp;quot;,data20: &amp;quot;data20&amp;quot;,&lt;br /&gt; data21: &amp;quot;data21&amp;quot;, data22: &amp;quot;data22&amp;quot;, data23: &amp;quot;data23&amp;quot;, data24: &amp;quot;data24&amp;quot;, data25: &amp;quot;data25&amp;quot;, data26: &amp;quot;data26&amp;quot;, data27: &amp;quot;data27&amp;quot;, data28: &amp;quot;data28&amp;quot;, data29: &amp;quot;data29&amp;quot;,data30: &amp;quot;data30&amp;quot;},&lt;br /&gt; &lt;br /&gt; {id: 3, name: &amp;quot;three&amp;quot;, data1: &amp;quot;data1&amp;quot;, data2: &amp;quot;data2&amp;quot;, data3: &amp;quot;data3&amp;quot;, data4: &amp;quot;data4&amp;quot;, data5: &amp;quot;data5&amp;quot;, data6: &amp;quot;data6&amp;quot;, data7: &amp;quot;data7&amp;quot;, data8: &amp;quot;data8&amp;quot;, data9: &amp;quot;data9&amp;quot;,data10: &amp;quot;data10&amp;quot;,&lt;br /&gt; data11: &amp;quot;data11&amp;quot;, data12: &amp;quot;data12&amp;quot;, data13: &amp;quot;data13&amp;quot;, data14: &amp;quot;data14&amp;quot;, data15: &amp;quot;data15&amp;quot;, data16: &amp;quot;data16&amp;quot;, data17: &amp;quot;data17&amp;quot;, data18: &amp;quot;data18&amp;quot;, data19: &amp;quot;data19&amp;quot;,data20: &amp;quot;data20&amp;quot;,&lt;br /&gt; data21: &amp;quot;data21&amp;quot;, data22: &amp;quot;data22&amp;quot;, data23: &amp;quot;data23&amp;quot;, data24: &amp;quot;data24&amp;quot;, data25: &amp;quot;data25&amp;quot;, data26: &amp;quot;data26&amp;quot;, data27: &amp;quot;data27&amp;quot;, data28: &amp;quot;data28&amp;quot;, data29: &amp;quot;data29&amp;quot;,data30: &amp;quot;data30&amp;quot;}&lt;br /&gt; },&lt;/p&gt;
&lt;p&gt;local!allOptionalColumns: {&amp;quot;data3&amp;quot;, &amp;quot;data4&amp;quot;, &amp;quot;data5&amp;quot;, &amp;quot;data6&amp;quot;, &amp;quot;data7&amp;quot;, &amp;quot;data8&amp;quot;, &amp;quot;data9&amp;quot;,&amp;quot;data10&amp;quot;,&amp;quot;data11&amp;quot;,&amp;quot;data12&amp;quot;,&amp;quot;data13&amp;quot;,&amp;quot;data14&amp;quot;,&amp;quot;data15&amp;quot;,&amp;quot;data16&amp;quot;,&amp;quot;data17&amp;quot;,&amp;quot;data18&amp;quot;,&amp;quot;data19&amp;quot;,&amp;quot;data20&amp;quot;,&lt;br /&gt; &amp;quot;data21&amp;quot;,&amp;quot;data22&amp;quot;,&amp;quot;data23&amp;quot;,&amp;quot;data24&amp;quot;,&amp;quot;data25&amp;quot;,&amp;quot;data26&amp;quot;,&amp;quot;data27&amp;quot;,&amp;quot;data28&amp;quot;,&amp;quot;data29&amp;quot;,&amp;quot;data30&amp;quot;},&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Can we freeze the data columns when the user scrolls  in data grid</title><link>https://community.appian.com/thread/72489?ContentTypeID=1</link><pubDate>Thu, 05 Mar 2020 18:29:01 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:3b8f5c87-457d-4f6a-b39b-17917eab3960</guid><dc:creator>Rama</dc:creator><description>&lt;p&gt;very nice .Thank you for your efforts&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Can we freeze the data columns when the user scrolls  in data grid</title><link>https://community.appian.com/thread/72486?ContentTypeID=1</link><pubDate>Thu, 05 Mar 2020 17:35:02 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:e6a17524-1e61-4f64-93ec-9918d995e9a5</guid><dc:creator>Stewart Burchell</dc:creator><description>&lt;p&gt;Nice!&amp;nbsp;&lt;span class="emoticon" data-url="https://community.appian.com/cfs-file/__key/system/emoji/1f600.svg" title="Grinning"&gt;&amp;#x1f600;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Can we freeze the data columns when the user scrolls  in data grid</title><link>https://community.appian.com/thread/72481?ContentTypeID=1</link><pubDate>Thu, 05 Mar 2020 15:04:45 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:5a5ddde5-e2c9-4d44-93e9-06f2c5e2946a</guid><dc:creator>Mike Schmitt</dc:creator><description>&lt;p&gt;I&amp;#39;ve gone ahead and built an example...&lt;/p&gt;
&lt;p&gt;&lt;img alt=" " height="122" src="/resized-image/__size/320x240/__key/communityserver-discussions-components-files/20/pastedimage1583420691459v1.png" width="486" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="java"&gt;a!localVariables(
  
  local!data: {
    {id: 1, name: &amp;quot;one&amp;quot;, data1: &amp;quot;data1&amp;quot;, data2: &amp;quot;data2&amp;quot;, data3: &amp;quot;data3&amp;quot;, data4: &amp;quot;data4&amp;quot;, data5: &amp;quot;data5&amp;quot;, data6: &amp;quot;data6&amp;quot;, data7: &amp;quot;data7&amp;quot;, data8: &amp;quot;data8&amp;quot;, data9: &amp;quot;data9&amp;quot;},
    {id: 2, name: &amp;quot;two&amp;quot;, data1: &amp;quot;data1&amp;quot;, data2: &amp;quot;data2&amp;quot;, data3: &amp;quot;data3&amp;quot;, data4: &amp;quot;data4&amp;quot;, data5: &amp;quot;data5&amp;quot;, data6: &amp;quot;data6&amp;quot;, data7: &amp;quot;data7&amp;quot;, data8: &amp;quot;data8&amp;quot;, data9: &amp;quot;data9&amp;quot;},
    {id: 3, name: &amp;quot;three&amp;quot;, data1: &amp;quot;data1&amp;quot;, data2: &amp;quot;data2&amp;quot;, data3: &amp;quot;data3&amp;quot;, data4: &amp;quot;data4&amp;quot;, data5: &amp;quot;data5&amp;quot;, data6: &amp;quot;data6&amp;quot;, data7: &amp;quot;data7&amp;quot;, data8: &amp;quot;data8&amp;quot;, data9: &amp;quot;data9&amp;quot;}
  },
  
  local!defaultColumnPointerValue: 1,
  local!optionalColumnPointer: local!defaultColumnPointerValue,
  local!optionalColumnsLength: 3,
  local!allOptionalColumns: {&amp;quot;data3&amp;quot;, &amp;quot;data4&amp;quot;, &amp;quot;data5&amp;quot;, &amp;quot;data6&amp;quot;, &amp;quot;data7&amp;quot;, &amp;quot;data8&amp;quot;, &amp;quot;data9&amp;quot;},
  local!maxOptionalColumnPointerValue: length(local!allOptionalColumns) - local!optionalColumnsLength,
  local!selectedOptionalColumns: index(
    local!allOptionalColumns,
    enumerate(local!optionalColumnsLength) + local!optionalColumnPointer,
    null()
  ),
  
  a!sectionLayout(
    contents: {
      a!columnsLayout(
        columns: {
          a!columnLayout(
            contents: {
              a!gridField(
                data: local!data,
                columns: {
                  a!gridColumn(
                    label: &amp;quot;Id&amp;quot;,
                    width: &amp;quot;ICON&amp;quot;,
                    value: fv!row.id
                  ),
                  a!gridColumn(
                    label: &amp;quot;data1&amp;quot;,
                    value: fv!row.data1
                  ),
                  a!gridColumn(
                    label: &amp;quot;data2&amp;quot;,
                    value: fv!row.data2
                  ),
                  a!gridColumn(
                    /*label: &amp;quot;&amp;lt;&amp;lt;&amp;quot;,*/
                    helpTooltip: &amp;quot;More columns to the left&amp;quot;,
                    showWhen: local!optionalColumnPointer &amp;gt; 1,
                    align: &amp;quot;CENTER&amp;quot;,
                    width: &amp;quot;ICON&amp;quot;,
                    value: a!richTextDisplayField(
                      value: a!richTextIcon(icon: &amp;quot;caret-left&amp;quot;, caption: &amp;quot;Scroll Left to see more columns&amp;quot;)
                    )
                  ),
                  
                  a!forEach(
                    local!selectedOptionalColumns,
                    a!gridColumn(
                      label: fv!item,
                      value: property(fv!row, fv!item, &amp;quot;--&amp;quot;)
                    )
                  ),
                  

                  a!gridColumn(
                    /*label: &amp;quot;&amp;gt;&amp;gt;&amp;quot;,*/
                    helpTooltip: &amp;quot;More columns to the right&amp;quot;,
                    showWhen: local!optionalColumnPointer &amp;lt;= local!maxOptionalColumnPointerValue,
                    align: &amp;quot;CENTER&amp;quot;,
                    width: &amp;quot;ICON&amp;quot;,
                    value: a!richTextDisplayField(
                      value: a!richTextIcon(icon: &amp;quot;caret-right&amp;quot;, caption: &amp;quot;Scroll Right to see more columns&amp;quot;)
                    )
                  ),
                }
              ),
              a!richTextDisplayField(
                align: &amp;quot;RIGHT&amp;quot;,
                value: {
                  a!richTextItem(
                    size: &amp;quot;LARGE&amp;quot;,
                    link: a!dynamicLink(
                      saveInto: {
                        a!save(
                          local!optionalColumnPointer,
                          local!optionalColumnPointer - 1
                        )
                      },
                      showWhen: local!optionalColumnPointer &amp;gt; local!defaultColumnPointerValue
                    ),
                    linkStyle: &amp;quot;STANDALONE&amp;quot;,
                    text: {
                      a!richTextIcon(
                        icon: &amp;quot;long-arrow-left&amp;quot;,
                        caption: &amp;quot;Scroll Left&amp;quot; &amp;amp; if(local!optionalColumnPointer &amp;lt;= local!defaultColumnPointerValue, &amp;quot; (disabled)&amp;quot;, &amp;quot;&amp;quot;),
                        color: if(
                          local!optionalColumnPointer &amp;lt;= local!defaultColumnPointerValue,
                          &amp;quot;#D3D3D3&amp;quot;,
                          &amp;quot;&amp;quot;
                        )
                      )
                    }
                  ),
                  &amp;quot;   &amp;quot;,
                  a!richTextIcon(
                    size: &amp;quot;MEDIUM_PLUS&amp;quot;,
                    icon: &amp;quot;map-o&amp;quot;,
                    color: if(
                      local!optionalColumnPointer = local!defaultColumnPointerValue,
                      &amp;quot;#D3D3D3&amp;quot;,
                      null()
                    ),
                    caption: &amp;quot;Reset&amp;quot;,
                    link: a!dynamicLink(
                      showWhen: local!optionalColumnPointer &amp;lt;&amp;gt; local!defaultColumnPointerValue,
                      saveInto: {
                        a!save(
                          local!optionalColumnPointer,
                          local!defaultColumnPointerValue
                        )
                      }
                    ),
                    linkStyle: &amp;quot;STANDALONE&amp;quot;
                  ),
                  &amp;quot;   &amp;quot;,
                  a!richTextItem(
                    size: &amp;quot;LARGE&amp;quot;,
                    link: a!dynamicLink(
                      saveInto: {
                        a!save(
                          local!optionalColumnPointer,
                          local!optionalColumnPointer + 1
                        )
                      },
                      showWhen: local!optionalColumnPointer &amp;lt;= local!maxOptionalColumnPointerValue
                    ),
                    linkStyle: &amp;quot;STANDALONE&amp;quot;,
                    text: {
                      a!richTextIcon(
                        icon: &amp;quot;long-arrow-right&amp;quot;,
                        caption: &amp;quot;Scroll Right&amp;quot; &amp;amp; if(local!optionalColumnPointer &amp;gt; local!maxOptionalColumnPointerValue, &amp;quot; (disabled)&amp;quot;, &amp;quot;&amp;quot;),
                        color: if(
                          local!optionalColumnPointer &amp;gt; local!maxOptionalColumnPointerValue,
                          &amp;quot;#D3D3D3&amp;quot;,
                          &amp;quot;&amp;quot;
                        )
                      )
                    }
                  )
                }
              )
            }
          )
        }
      )
    }
  )
)&lt;/pre&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Can we freeze the data columns when the user scrolls  in data grid</title><link>https://community.appian.com/thread/72471?ContentTypeID=1</link><pubDate>Thu, 05 Mar 2020 12:17:19 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:fc8df7a6-b60e-4a40-8510-2ab14547e7ed</guid><dc:creator>Mike Schmitt</dc:creator><description>&lt;p&gt;Tricksy - I like it.&amp;nbsp; I&amp;#39;d go one step further and create a 4th static column, icon width, that doesn&amp;#39;t show any data but instead acts as a separator (perhaps with some icon displayed on every row, or just a blank space), to visually delineate where the &amp;quot;frozen&amp;quot; panels stop.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Can we freeze the data columns when the user scrolls  in data grid</title><link>https://community.appian.com/thread/72466?ContentTypeID=1</link><pubDate>Thu, 05 Mar 2020 09:53:46 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:704ca78c-ffc7-4ca4-9c13-773d05b44619</guid><dc:creator>Stewart Burchell</dc:creator><description>&lt;p&gt;So whilst there&amp;#39;s no OOTB nice way to do this,m with some imagination you can achieve this. In an a!gridField()&amp;nbsp;an individual a!gridColumn() can have its &amp;#39;showWhen&amp;#39; attribute set. So, splitting the problem into two:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;scrolling the columns - have control components that you can click to scroll left/right, and have these save into a local variable that acts as the &amp;#39;position&amp;#39; of the first column. So, for example, if you click the scroll right, then you add one to the position of the first column, If a given column is less than the position of the first column, the set the &amp;#39;showWhen&amp;#39; to false.&lt;/li&gt;
&lt;li&gt;freezing the first 3 columns: simply set their &amp;#39;showWhen&amp;#39; to true, irrespective of the above rule&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Obviously you&amp;#39;ll need to handle not being able to scroll further left than column 1, or further right than the last column (column 50 in your case).&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Can we freeze the data columns when the user scrolls  in data grid</title><link>https://community.appian.com/thread/72459?ContentTypeID=1</link><pubDate>Wed, 04 Mar 2020 22:15:41 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:98283fd1-af50-42e8-8329-0df25e57195e</guid><dc:creator>Peter Lewis</dc:creator><description>&lt;p&gt;Yeah&amp;nbsp;is it really necessary for them to see all 50 columns at the same time? I honestly can&amp;#39;t think of too many reasons why I would need all those columns at once.&lt;/p&gt;
&lt;p&gt;Instead, you could do something like provide a multiple dropdown menu where they could select which columns are useful. Then, you can hide all other columns. Also, you can follow a &lt;a href="https://docs.appian.com/suite/help/latest/master-detail-pattern.html"&gt;master detail&lt;/a&gt; approach where you can show a few columns in the grid (maybe just the three you mentioned above) and provide a link. Then, when the user clicks the link, you can display all the other data about the row below or next to your grid.&lt;/p&gt;
&lt;p&gt;In general, I try to follow the rule of never having horizontal scrolling. Think about other ways to display the data that would limit that possibility.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Can we freeze the data columns when the user scrolls  in data grid</title><link>https://community.appian.com/thread/72452?ContentTypeID=1</link><pubDate>Wed, 04 Mar 2020 14:29:21 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:0fd3c4c6-749b-491c-ba53-1bedd60853f6</guid><dc:creator>Mike Schmitt</dc:creator><description>&lt;p&gt;There currently isn&amp;#39;t any direct way to do this, other than perhaps showing separate grids in a&amp;nbsp;column layout (if possible) where the left-hand column is minimized in size and then the right-hand one is free to scroll.&amp;nbsp; However I think a best practice recommendation might be to consider alternatives to showing a grid with 50 columns - such as showing only the most important columns by default, and allowing an &amp;quot;expanded view&amp;quot; for specific rows either when selected or when an inline link is clicked, etc.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>