<?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>User Interface - Recent Threads</title><link>https://community.appian.com/discussions/f/user-interface</link><description>Questions for UI related items</description><dc:language>en-US</dc:language><generator>Telligent Community 12</generator><item><title>RE: views and action security refresh</title><link>https://community.appian.com/thread/154261?ContentTypeID=1</link><pubDate>Tue, 14 Apr 2026 16:38:09 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:ad39edb6-4f16-4da1-8bf2-8c0dbe1a49aa</guid><dc:creator>alex.acosta</dc:creator><slash:comments>0</slash:comments><comments>https://community.appian.com/thread/154261?ContentTypeID=1</comments><wfw:commentRss>https://community.appian.com/discussions/f/user-interface/40326/views-and-action-security-refresh/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;I would recommend changing the a!recordActionField() to use either the &amp;quot;&lt;em&gt;MENU&lt;/em&gt;&amp;quot; and &amp;quot;&lt;em&gt;MENU_ICON&lt;/em&gt;&amp;quot; with &lt;span&gt;securityOnDemand set to true, this way the &lt;strong&gt;&lt;em&gt;security evaluates when the user clicks to open the menu&lt;/em&gt;&lt;/strong&gt;.&lt;/span&gt;&amp;nbsp;Keep in mind that&amp;nbsp;&lt;code class="m_b183c0a2 mantine-Code-root" dir="ltr"&gt;a!refreshVariable()&lt;/code&gt;&lt;span&gt;&amp;nbsp;with&amp;nbsp;&lt;/span&gt;&lt;code class="m_b183c0a2 mantine-Code-root" dir="ltr"&gt;refreshAfter: &amp;quot;RECORD_ACTION&amp;quot;&lt;/code&gt;&lt;span&gt;&amp;nbsp;only controls&amp;nbsp;&lt;/span&gt;&lt;strong&gt;when a local variable&amp;rsquo;s value is recalculated&lt;/strong&gt;&lt;span&gt;&amp;nbsp;after a record action dialog completes; it does&amp;nbsp;&lt;/span&gt;&lt;strong&gt;not&amp;nbsp;control when the record action&amp;rsquo;s own visibility/security is re‑evaluated.&amp;nbsp;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>views and action security refresh</title><link>https://community.appian.com/thread/40326?ContentTypeID=0</link><pubDate>Wed, 08 Apr 2026 21:11:22 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:e4e2d510-3e12-4239-aea2-bd4fad97b06d</guid><dc:creator>saisaran31</dc:creator><slash:comments>4</slash:comments><comments>https://community.appian.com/thread/40326?ContentTypeID=0</comments><wfw:commentRss>https://community.appian.com/discussions/f/user-interface/40326/views-and-action-security-refresh/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Hello Everyone,&lt;/p&gt;
&lt;p&gt;In my record view interface, I have a child interface that contains a related action. I recently added another related action whose only purpose is to refresh the data. In the parent interface, I&amp;rsquo;m using a!refreshVariable() so that local variables are refreshed after a record action completes.&lt;/p&gt;
&lt;p&gt;The related action in the child interface has visibility logic defined both:&lt;/p&gt;
&lt;p&gt;in the record type (Views and Actions &amp;rarr; action security/visibility), and&lt;br /&gt;inside the child interface itself.&lt;br /&gt;When I click my refresh-related action, all the data and components in the interface are refreshed, but the visibility condition defined in Views and Actions is not re-evaluated. As a result, when I refresh to load the latest data, the related action does not appear on the screen unless I do a full browser refresh.&lt;/p&gt;
&lt;p&gt;i tried to have a start form in my related action&amp;#39;s process model even at that time screen was not refreshed. Pretty much tried everything still record level security was not evaluated without manual browser refresh&lt;/p&gt;</description></item><item><title>RE: views and action security refresh</title><link>https://community.appian.com/thread/154195?ContentTypeID=1</link><pubDate>Thu, 09 Apr 2026 08:47:35 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:9f508d04-e2b1-4739-982c-57a0974dd111</guid><dc:creator>saisaran31</dc:creator><slash:comments>0</slash:comments><comments>https://community.appian.com/thread/154195?ContentTypeID=1</comments><wfw:commentRss>https://community.appian.com/discussions/f/user-interface/40326/views-and-action-security-refresh/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Thanks for your reply &lt;a href="/members/shubhama926776"&gt;Shubham Aware&lt;/a&gt;&amp;nbsp;and &lt;a href="/members/stefanhelzle0001"&gt;Stefan Helzle&lt;/a&gt;&amp;nbsp;. Now i came up with the solution that to have a refresh related action in the record header so that when a user clicks the entire record get reloaded similar to a browser refresh&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: views and action security refresh</title><link>https://community.appian.com/thread/154190?ContentTypeID=1</link><pubDate>Thu, 09 Apr 2026 05:51:23 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:92eccf7a-5894-446f-b8fd-f19c855c7f15</guid><dc:creator>Stefan Helzle</dc:creator><slash:comments>0</slash:comments><comments>https://community.appian.com/thread/154190?ContentTypeID=1</comments><wfw:commentRss>https://community.appian.com/discussions/f/user-interface/40326/views-and-action-security-refresh/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;To refresh data, I typically use some local variable. Then, I wrap all the queries I want to trigger into a refresh variable referencing this local. Then, I modify that local using a button or link.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: views and action security refresh</title><link>https://community.appian.com/thread/154188?ContentTypeID=1</link><pubDate>Thu, 09 Apr 2026 05:16:07 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:411d02bb-a1a6-47a4-aa9b-4eaef0b48ef5</guid><dc:creator>Shubham Aware</dc:creator><slash:comments>0</slash:comments><comments>https://community.appian.com/thread/154188?ContentTypeID=1</comments><wfw:commentRss>https://community.appian.com/discussions/f/user-interface/40326/views-and-action-security-refresh/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Record action visibility defined in Views &amp;amp; Actions is evaluated at page load time, not on a!refreshVariable(). Even with a start form or refresh action, Appian does not re-evaluate action-level security mid-session without a full page reload.&lt;br /&gt;You can try to move the visibility logic entirely into the child interface using a local variable that refreshes with your data. Remove it from Views &amp;amp; Actions.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Loading one interface immediately after another</title><link>https://community.appian.com/thread/154166?ContentTypeID=1</link><pubDate>Tue, 07 Apr 2026 14:15:49 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:8b4aeb39-00f1-40d7-816f-ec3b7a2a7803</guid><dc:creator>Chris</dc:creator><slash:comments>0</slash:comments><comments>https://community.appian.com/thread/154166?ContentTypeID=1</comments><wfw:commentRss>https://community.appian.com/discussions/f/user-interface/40307/loading-one-interface-immediately-after-another/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Unfortunately we cannot use a!startProcessLink() inside of a!buttonWidget().&lt;br /&gt;&lt;br /&gt;&lt;img style="max-height:240px;max-width:320px;" src="/resized-image/__size/640x480/__key/communityserver-discussions-components-files/13/pastedimage1775571300797v1.png" alt=" " /&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Loading one interface immediately after another</title><link>https://community.appian.com/thread/40307?ContentTypeID=0</link><pubDate>Wed, 01 Apr 2026 10:45:21 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:47122af5-4edf-470b-b9f4-fbe80d1c3136</guid><dc:creator>Vladislav Morozov</dc:creator><slash:comments>3</slash:comments><comments>https://community.appian.com/thread/40307?ContentTypeID=0</comments><wfw:commentRss>https://community.appian.com/discussions/f/user-interface/40307/loading-one-interface-immediately-after-another/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Consider blue path only! I used activity chain to start &amp;quot;Choose policy&amp;quot; interface immediately after the main interface. The process is started by a startProcess inside a saveinto of a buttonWidget. After clicking the button the process starts, but the interface isn&amp;#39;t automatically loaded. The owner of the task is set as pp!initiator. What could I miss?&lt;/p&gt;
&lt;p&gt;&lt;img style="max-height:240px;max-width:320px;" src="/resized-image/__size/640x480/__key/communityserver-discussions-components-files/13/pastedimage1775040154770v1.png" alt=" " /&gt;&lt;/p&gt;</description></item><item><title>Appian Grid</title><link>https://community.appian.com/thread/40322?ContentTypeID=0</link><pubDate>Tue, 07 Apr 2026 05:07:52 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:ee923113-9817-4c1e-b7bf-9c707ace8489</guid><dc:creator>Gaurav Kataria</dc:creator><slash:comments>2</slash:comments><comments>https://community.appian.com/thread/40322?ContentTypeID=0</comments><wfw:commentRss>https://community.appian.com/discussions/f/user-interface/40322/appian-grid/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p data-start="178" data-end="244"&gt;We are encountering the following error in our Appian application:&lt;/p&gt;
&lt;div class="relative w-full mt-4 mb-1"&gt;
&lt;div class=""&gt;
&lt;div class="relative"&gt;
&lt;div class="h-full min-h-0 min-w-0"&gt;
&lt;div class="h-full min-h-0 min-w-0"&gt;
&lt;div class="border border-token-border-light border-radius-3xl corner-superellipse/1.1 rounded-3xl"&gt;
&lt;div class="h-full w-full border-radius-3xl bg-token-bg-elevated-secondary corner-superellipse/1.1 overflow-clip rounded-3xl lxnfua_clipPathFallback"&gt;
&lt;div class="pointer-events-none absolute end-1.5 top-1 z-2 md:end-2 md:top-1"&gt;&lt;/div&gt;
&lt;div class="w-full overflow-x-hidden overflow-y-auto pe-11 pt-3"&gt;
&lt;div class="relative z-0 flex max-w-full"&gt;
&lt;div id="code-block-viewer" dir="ltr"&gt;
&lt;div class="cm-scroller"&gt;
&lt;div class="cm-content q9tKkq_readonly"&gt;&lt;span&gt;ERROR com.appiancorp.record.service.visitor.DiscoverAllRecordBindings - &lt;/span&gt;&lt;br /&gt;&lt;span&gt;Exception encountered in grid field tree visitor, falling back in try catch.&lt;/span&gt;&lt;br /&gt;&lt;span&gt;java.lang.NullPointerException&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=""&gt;
&lt;div class=""&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-start="436" data-end="609"&gt;This issue appears while working with a grid component (record-based or interface grid). There are no obvious breaking changes, but the error is being logged intermittently.&lt;/p&gt;
&lt;p data-start="611" data-end="643"&gt;We suspect it may be related to:&lt;/p&gt;
&lt;ul data-start="644" data-end="756"&gt;
&lt;li data-section-id="1rqbbtw" data-start="644" data-end="682"&gt;Null values in grid field bindings&lt;/li&gt;
&lt;li data-section-id="1fv9zre" data-start="683" data-end="712"&gt;Record type relationships&lt;/li&gt;
&lt;li data-section-id="1prir45" data-start="713" data-end="756"&gt;Nested field references in grid columns&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-start="758" data-end="809"&gt;However, we are unable to pinpoint the exact cause.&lt;/p&gt;
&lt;ul data-start="828" data-end="1067"&gt;
&lt;li data-section-id="1jsykyk" data-start="828" data-end="906"&gt;What typically causes this &lt;code data-start="857" data-end="884"&gt;DiscoverAllRecordBindings&lt;/code&gt; NullPointerException?&lt;/li&gt;
&lt;li data-section-id="1gow6m7" data-start="907" data-end="989"&gt;Are there recommended best practices to avoid this issue in grid configurations?&lt;/li&gt;
&lt;li data-section-id="1j0w8hr" data-start="990" data-end="1067"&gt;How can we effectively debug which field or binding is causing the problem?&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-start="1069" data-end="1126"&gt;Any guidance or suggestions would be greatly appreciated!&lt;/p&gt;</description></item><item><title>RE: Appian Grid</title><link>https://community.appian.com/thread/154155?ContentTypeID=1</link><pubDate>Tue, 07 Apr 2026 05:33:37 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:2b198291-1044-490e-b913-985166cb2966</guid><dc:creator>Stefan Helzle</dc:creator><slash:comments>0</slash:comments><comments>https://community.appian.com/thread/154155?ContentTypeID=1</comments><wfw:commentRss>https://community.appian.com/discussions/f/user-interface/40322/appian-grid/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Do you see this message in log files only? Does the grid work? If both is true, I suggest to either ignore it, or open a support case to make Appian aware of this minor issue.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Appian Grid</title><link>https://community.appian.com/thread/154154?ContentTypeID=1</link><pubDate>Tue, 07 Apr 2026 05:29:31 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:44ccbe02-48fd-4185-8870-2317891d784d</guid><dc:creator>Shubham Aware</dc:creator><slash:comments>0</slash:comments><comments>https://community.appian.com/thread/154154?ContentTypeID=1</comments><wfw:commentRss>https://community.appian.com/discussions/f/user-interface/40322/appian-grid/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Wrap relationship field references in if(isnull(...), &amp;quot;&amp;quot;, ...) or use a custom record field with null-safe expressions instead of referencing relationship fields directly in grid columns.&lt;br /&gt;After any Record Type schema change, verify all grid column fieldConfigs still point to valid fields.&lt;br /&gt;&lt;br /&gt;Also you can try debug,&amp;nbsp;&lt;br /&gt;Temporarily remove grid columns one by one and reload - when the error stops, the last removed column is the culprit.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Styled Text Editor</title><link>https://community.appian.com/thread/154145?ContentTypeID=1</link><pubDate>Mon, 06 Apr 2026 12:40:45 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:dd7dd623-6bf7-48f1-b62d-7dec53490fe1</guid><dc:creator>ganesh_sasank18</dc:creator><slash:comments>0</slash:comments><comments>https://community.appian.com/thread/154145?ContentTypeID=1</comments><wfw:commentRss>https://community.appian.com/discussions/f/user-interface/39900/styled-text-editor/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Hi Vaishal&lt;br /&gt;&lt;br /&gt;Any solution you found for this implementation!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Styled Text Editor</title><link>https://community.appian.com/thread/39900?ContentTypeID=0</link><pubDate>Mon, 03 Nov 2025 08:09:57 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:297806ed-fe29-422a-9717-5c50a00c6cd3</guid><dc:creator>Vaishal</dc:creator><slash:comments>2</slash:comments><comments>https://community.appian.com/thread/39900?ContentTypeID=0</comments><wfw:commentRss>https://community.appian.com/discussions/f/user-interface/39900/styled-text-editor/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Hello Everyone,&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m using a Styled Text Editor for my comment thread component. If the character count exceeds 500 characters, I need to trim the text and display a &amp;quot;Show more&amp;quot; link outside the Styled Text Editor.&lt;/p&gt;
&lt;p&gt;The problem I&amp;rsquo;m facing is that the Styled Text Editor stores values with HTML tags, so when I trim the content directly, it can cut through tags and break the markup. This results in invalid HTML and rendering issues.&lt;/p&gt;
&lt;p&gt;Has anyone implemented an approach to safely truncate HTML without breaking tags? Any suggestions or best practices would be appreciated.&lt;/p&gt;</description></item><item><title>RE: Loading one interface immediately after another</title><link>https://community.appian.com/thread/154100?ContentTypeID=1</link><pubDate>Wed, 01 Apr 2026 15:11:30 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:453db56d-27c5-4be0-afb4-79fc996b2206</guid><dc:creator>Shubham Aware</dc:creator><slash:comments>1</slash:comments><comments>https://community.appian.com/thread/154100?ContentTypeID=1</comments><wfw:commentRss>https://community.appian.com/discussions/f/user-interface/40307/loading-one-interface-immediately-after-another/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Use a!startProcessLink() instead of a!startProcess() in the button saveInto.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Loading one interface immediately after another</title><link>https://community.appian.com/thread/154099?ContentTypeID=1</link><pubDate>Wed, 01 Apr 2026 15:08:40 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:8cf9ec5d-920c-4ffd-97e7-2366ace76ec7</guid><dc:creator>Chris</dc:creator><slash:comments>0</slash:comments><comments>https://community.appian.com/thread/154099?ContentTypeID=1</comments><wfw:commentRss>https://community.appian.com/discussions/f/user-interface/40307/loading-one-interface-immediately-after-another/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;You cannot chain into a User Input Task with a!startProcess from a buttonWidget in another process - in this case your parent process is simply waiting for the secondary process to complete on it&amp;#39;s own before continuing with the parent process (with a setting of &amp;quot;synchronous&amp;quot;).&lt;br /&gt;&lt;br /&gt;If you are moving the user from one process to another, why not utilize a Subprocess after the parent input task completes?&lt;br /&gt;&lt;br /&gt;&lt;a href="https://docs.appian.com/suite/help/26.3/Ways_to_Start_a_Process_From_a_Process.html#starting-a-process-from-a-process"&gt;Ways to Start a Process&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Re-ordering dynamic list</title><link>https://community.appian.com/thread/154084?ContentTypeID=1</link><pubDate>Mon, 30 Mar 2026 16:27:25 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:27dbe715-f4b1-4b16-811f-bc85406082be</guid><dc:creator>Guy</dc:creator><slash:comments>0</slash:comments><comments>https://community.appian.com/thread/154084?ContentTypeID=1</comments><wfw:commentRss>https://community.appian.com/discussions/f/user-interface/40305/re-ordering-dynamic-list/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;This worked for me:&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="text"&gt;a!localVariables(
  local!map: { &amp;quot;data1&amp;quot;, &amp;quot;data2&amp;quot; },
  local!data: a!map(
    data1: {
      a!map(sortOrder: 1, label: &amp;quot;A&amp;quot;),
      a!map(sortOrder: 2, label: &amp;quot;B&amp;quot;)
    },
    data2: {
      a!map(sortOrder: 1, label: &amp;quot;C&amp;quot;),
      a!map(sortOrder: 2, label: &amp;quot;D&amp;quot;)
    }
  ),
  a!forEach(
    items: local!map,
    expression: a!gridLayout(
      label: fv!item,
      headerCells: {
        a!gridLayoutHeaderCell(label: &amp;quot;Checklist Sections&amp;quot;)
      },
      rows: a!forEach(
        items: local!data[fv!item],
        expression: a!gridRowLayout(
          contents: a!textField(value: fv!item.label, readOnly: true)
        )
      ),
      allowRowReordering: true,
      rowOrderData: local!data[fv!item],
      rowOrderField: &amp;quot;sortOrder&amp;quot;
    )
  )
)&lt;/pre&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Re-ordering dynamic list</title><link>https://community.appian.com/thread/40305?ContentTypeID=0</link><pubDate>Mon, 30 Mar 2026 12:08:40 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:caced7fe-d104-44b3-aa66-613fdd8b7e58</guid><dc:creator>Guy</dc:creator><slash:comments>3</slash:comments><comments>https://community.appian.com/thread/40305?ContentTypeID=0</comments><wfw:commentRss>https://community.appian.com/discussions/f/user-interface/40305/re-ordering-dynamic-list/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;We have a dynamic array containing lists of data. Dynamic here meaning data1, data2..etc could be any length.&lt;/p&gt;
&lt;p&gt;We need a screen that allows users to reorder this data and we are attempting to do this with a &lt;span&gt;gridLayout with&amp;nbsp;allowRowReordering = true.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;When attempting this example below, we are seeing the error&amp;nbsp;&lt;strong&gt;Expression evaluation error at function a!gridLayout [line 15]: A grid layout component [label="data1"] has an invalid value for &amp;quot;rowOrderData&amp;quot;. The value must be a list of records, a list of maps, or a list of dictionaries.&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;[embed:dc8ab71f-3b98-42d9-b0f6-e21e02a0f8e2:9c421f64-df4f-4e13-86e3-aed285fd2537:type=text&amp;text=a%21localVariables%28%0D%0A%20%20local%21map%3A%20%7B%20%22data1%22%2C%20%22data2%22%20%7D%2C%0D%0A%20%20local%21data%3A%20%7B%0D%0A%20%20%20%20data1%3A%20%7B%0D%0A%20%20%20%20%20%20%7B%20sortOrder%3A%201%2C%20label%3A%20%22A%22%20%7D%2C%0D%0A%20%20%20%20%20%20%7B%20sortOrder%3A%202%2C%20label%3A%20%22B%22%20%7D%0D%0A%20%20%20%20%7D%2C%0D%0A%20%20%20%20data2%3A%20%7B%0D%0A%20%20%20%20%20%20%7B%20sortOrder%3A%201%2C%20label%3A%20%22C%22%20%7D%2C%0D%0A%20%20%20%20%20%20%7B%20sortOrder%3A%202%2C%20label%3A%20%22D%22%20%7D%0D%0A%20%20%20%20%7D%0D%0A%20%20%7D%2C%0D%0A%20%20a%21forEach%28%0D%0A%20%20%20%20items%3A%20local%21map%2C%0D%0A%20%20%20%20expression%3A%20a%21gridLayout%28%0D%0A%20%20%20%20%20%20label%3A%20fv%21item%2C%0D%0A%20%20%20%20%20%20headerCells%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20a%21gridLayoutHeaderCell%28label%3A%20%22Checklist%20Sections%22%29%0D%0A%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20rows%3A%20a%21forEach%28%0D%0A%20%20%20%20%20%20%20%20items%3A%20local%21data%5Bfv%21item%5D%2C%0D%0A%20%20%20%20%20%20%20%20expression%3A%20a%21gridRowLayout%28%0D%0A%20%20%20%20%20%20%20%20%20%20contents%3A%20a%21textField%28value%3A%20fv%21item.label%2C%20readOnly%3A%20true%29%0D%0A%20%20%20%20%20%20%20%20%29%0D%0A%20%20%20%20%20%20%29%2C%0D%0A%20%20%20%20%20%20allowRowReordering%3A%20true%2C%0D%0A%20%20%20%20%20%20rowOrderData%3A%20local%21data%5Bfv%21item%5D%2C%0D%0A%20%20%20%20%20%20rowOrderField%3A%20%22sortOrder%22%0D%0A%20%20%20%20%29%0D%0A%20%20%29%0D%0A%29]&lt;/p&gt;</description></item><item><title>RE: Re-ordering dynamic list</title><link>https://community.appian.com/thread/154083?ContentTypeID=1</link><pubDate>Mon, 30 Mar 2026 15:09:51 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:31476597-8181-4763-9839-b32433e8b0ab</guid><dc:creator>osanchea</dc:creator><slash:comments>0</slash:comments><comments>https://community.appian.com/thread/154083?ContentTypeID=1</comments><wfw:commentRss>https://community.appian.com/discussions/f/user-interface/40305/re-ordering-dynamic-list/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Hi. This could also work. Refer the code below:&lt;br /&gt;&lt;pre class="ui-code" data-mode="text"&gt;a!localVariables(
  local!map: { &amp;quot;data1&amp;quot;, &amp;quot;data2&amp;quot; },
  local!data: cast(
    type!Map,
    {
      data1: {
        { sortOrder: 1, label: &amp;quot;A&amp;quot; },
        { sortOrder: 2, label: &amp;quot;B&amp;quot; }
      },
      data2: {
        { sortOrder: 1, label: &amp;quot;C&amp;quot; },
        { sortOrder: 2, label: &amp;quot;D&amp;quot; },
        { sortOrder: 3, label: &amp;quot;E&amp;quot; }
      }
    }
  ),
  a!forEach(
    items: local!map,
    expression: a!gridLayout(
      label: fv!item,
      headerCells: {
        a!gridLayoutHeaderCell(label: &amp;quot;Checklist Sections&amp;quot;)
      },
      rows: a!forEach(
        items: local!data[fv!item],
        expression: a!gridRowLayout(
          contents: a!textField(value: fv!item.label, readOnly: true)
        )
      ),
      allowRowReordering: true,
      rowOrderData: local!data[fv!item],
      rowOrderField: &amp;quot;sortOrder&amp;quot;
    )
  )
)&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Re-ordering dynamic list</title><link>https://community.appian.com/thread/154082?ContentTypeID=1</link><pubDate>Mon, 30 Mar 2026 13:41:02 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:05330c0f-d49e-4b36-b4d4-d5c5e7b689ba</guid><dc:creator>Harsha Sharma</dc:creator><slash:comments>0</slash:comments><comments>https://community.appian.com/thread/154082?ContentTypeID=1</comments><wfw:commentRss>https://community.appian.com/discussions/f/user-interface/40305/re-ordering-dynamic-list/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;The code you shared was converting list of Dictionaries in a List of Variants. For row order the attributes need a structured map or dictionary. Try the below code where some data maps are created so that a linear structured list of dictionaries are formed as grid data source.&amp;nbsp;&lt;pre class="ui-code" data-mode="text"&gt;a!localVariables(
  local!map: { &amp;quot;data1&amp;quot;, &amp;quot;data2&amp;quot; },
  local!data: {
    data1: {
      { sortOrder: 1, label: &amp;quot;A&amp;quot; },
      { sortOrder: 2, label: &amp;quot;B&amp;quot; }
    },
    data2: {
      { sortOrder: 1, label: &amp;quot;C&amp;quot; },
      { sortOrder: 2, label: &amp;quot;D&amp;quot; }
    }
  },
  a!forEach(
    items: local!map,
    expression: a!localVariables(
      local!dictionary: a!foreach(
        local!data[fv!item],
        a!map(
          label: fv!item.label,
          sortOrder: fv!item.sortOrder
        )
      ),
      a!gridLayout(
        label: local!dictionary,
        headerCells: {
          a!gridLayoutHeaderCell(label: &amp;quot;Checklist Sections&amp;quot;)
        },
        rows: a!forEach(
          items: local!dictionary,
          expression: a!gridRowLayout(
            contents: a!textField(value: fv!item.label, readOnly: true)
          )
        ),
        allowRowReordering: true,
        rowOrderData: local!dictionary,
        rowOrderField: &amp;quot;sortOrder&amp;quot;
      )
    )
  )
)&lt;/pre&gt;&lt;br /&gt;Hope it helps!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Unable to validate uploaded Excel file extension in interface</title><link>https://community.appian.com/thread/154057?ContentTypeID=1</link><pubDate>Wed, 25 Mar 2026 18:02:04 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:e702699c-0c58-46e4-a0b2-c195d40c956a</guid><dc:creator>Stefan Helzle</dc:creator><slash:comments>0</slash:comments><comments>https://community.appian.com/thread/154057?ContentTypeID=1</comments><wfw:commentRss>https://community.appian.com/discussions/f/user-interface/39860/unable-to-validate-uploaded-excel-file-extension-in-interface/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Yes&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Unable to validate uploaded Excel file extension in interface</title><link>https://community.appian.com/thread/39860?ContentTypeID=0</link><pubDate>Mon, 20 Oct 2025 08:30:56 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:4e7aad2a-b12a-4cc5-852e-8254b622a553</guid><dc:creator>Miquel Lara</dc:creator><slash:comments>7</slash:comments><comments>https://community.appian.com/thread/39860?ContentTypeID=0</comments><wfw:commentRss>https://community.appian.com/discussions/f/user-interface/39860/unable-to-validate-uploaded-excel-file-extension-in-interface/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p data-start="168" data-end="201"&gt;Hi everyone,&lt;/p&gt;
&lt;p data-start="203" data-end="415"&gt;I&amp;rsquo;m working on an interface where the user needs to upload an Excel file with the &lt;code data-start="285" data-end="292"&gt;.xlsx&lt;/code&gt; extension. My goal is to validate the file extension directly in the interface, before enabling the &amp;quot;ACCEPT&amp;quot;&amp;nbsp;button.&lt;/p&gt;
&lt;p data-start="417" data-end="521"&gt;In my current setup, I&amp;rsquo;m using the &lt;code data-start="452" data-end="462"&gt;disabled&lt;/code&gt; parameter of the &lt;code data-start="480" data-end="498"&gt;a!buttonWidget()&lt;/code&gt; to check two things:&lt;/p&gt;
&lt;ol data-start="522" data-end="745"&gt;
&lt;li data-start="522" data-end="580"&gt;
&lt;p data-start="525" data-end="580"&gt;That the variable &lt;code data-start="543" data-end="556"&gt;local!excel&lt;/code&gt; is not null or empty.&lt;/p&gt;
&lt;/li&gt;
&lt;li data-start="581" data-end="745"&gt;
&lt;p data-start="584" data-end="745"&gt;That the uploaded file name (converted to string) contains the &lt;code data-start="647" data-end="654"&gt;.xlsx&lt;/code&gt; extension, which I have defined in a constant (&lt;code data-start="702" data-end="741"&gt;cons!CEDT_CONS_EXTENSIONES_DOCUMENTOS&lt;/code&gt;).&lt;/p&gt;
&lt;img style="max-height:240px;max-width:320px;" src="/resized-image/__size/640x480/__key/communityserver-discussions-components-files/13/Captura-de-pantalla-2025_2D00_10_2D00_20-101935.png" alt=" " /&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-start="747" data-end="975"&gt;When I use &lt;code data-start="776" data-end="806"&gt;touniformstring(local!excel)&lt;/code&gt;, it only returns the file ID (a numeric value), not the original file name. Because of that, I can&amp;rsquo;t compare it with the extension constant to validate the file type.&lt;/p&gt;
&lt;p data-start="747" data-end="975"&gt;Here I&amp;rsquo;m attaching a demonstration of the interface when I upload a file that is not an Excel type.&amp;nbsp;&lt;/p&gt;
&lt;p data-start="747" data-end="975"&gt;&lt;img style="max-height:148px;max-width:578px;" height="148" src="/resized-image/__size/1156x296/__key/communityserver-discussions-components-files/13/Captura-de-pantalla-2025_2D00_10_2D00_20-100740.png" width="578" alt=" " /&gt;&lt;/p&gt;
&lt;p data-start="977" data-end="1271"&gt;Is there any way to retrieve the original file name (or its extension) from the uploaded file in the interface, so I can perform this validation before enabling the button?&lt;br data-start="1165" data-end="1168" /&gt; Or is there another recommended approach to handle this kind of validation directly in the interface?&lt;/p&gt;
&lt;p data-start="1273" data-end="1305"&gt;Thanks in advance for your help.&lt;/p&gt;</description></item><item><title>RE: Unable to validate uploaded Excel file extension in interface</title><link>https://community.appian.com/thread/154056?ContentTypeID=1</link><pubDate>Wed, 25 Mar 2026 14:57:17 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:5fe16c21-5fe4-48d7-a443-9d7379389954</guid><dc:creator>vijayasreevasureddye0335</dc:creator><slash:comments>1</slash:comments><comments>https://community.appian.com/thread/154056?ContentTypeID=1</comments><wfw:commentRss>https://community.appian.com/discussions/f/user-interface/39860/unable-to-validate-uploaded-excel-file-extension-in-interface/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Shubham , can we use this document() function to retrive its properties for multiple file in Expression Rule ??&amp;nbsp;&lt;br /&gt;&lt;br /&gt;so we can use that to show form level validation?? if user tries to submit&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Someone in our marketing department has asked the question:  "What is the d</title><link>https://community.appian.com/thread/154055?ContentTypeID=1</link><pubDate>Wed, 25 Mar 2026 14:24:09 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:78fcc75f-dfe9-41db-9931-87f661cfc0fb</guid><dc:creator>vladislavv175681</dc:creator><slash:comments>0</slash:comments><comments>https://community.appian.com/thread/154055?ContentTypeID=1</comments><wfw:commentRss>https://community.appian.com/discussions/f/user-interface/985/someone-in-our-marketing-department-has-asked-the-question-what-is-the-d/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;That&amp;rsquo;s a pretty common question when working with Appian portals, especially when marketing teams start caring about layout consistency and visual presentation. The thing is, Appian doesn&amp;rsquo;t really define a fixed default width in the traditional sense like older web templates. Portal pages are built to be responsive, meaning the width adapts to the user&amp;rsquo;s screen size rather than sticking to a strict pixel value. Most of the time, the content is constrained within a centered layout that behaves similarly to modern web frameworks, typically maxing out somewhere around standard desktop widths, but it&amp;rsquo;s not something officially documented as a single fixed number.If precise control is needed, developers usually handle it through custom styling, column layouts, or embedded components to simulate a consistent width across different screens. It&amp;rsquo;s less about finding a default value and more about defining your own layout rules depending on the use case. For teams juggling both technical setup and marketing presentation, having access to broader resources that track tools, platforms, and implementation approaches like &lt;span data-sheets-root="1"&gt;aff catalog&lt;/span&gt; can be useful for seeing how others structure similar solutions and maintain consistency across their digital assets.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Someone in our marketing department has asked the question:  "What is the d</title><link>https://community.appian.com/thread/985?ContentTypeID=0</link><pubDate>Fri, 19 Jul 2013 23:32:50 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:df0d1a6c-51b4-42b1-9534-1f2dc5e9298a</guid><dc:creator>shawn.huffman</dc:creator><slash:comments>4</slash:comments><comments>https://community.appian.com/thread/985?ContentTypeID=0</comments><wfw:commentRss>https://community.appian.com/discussions/f/user-interface/985/someone-in-our-marketing-department-has-asked-the-question-what-is-the-d/rss?ContentTypeId=0</wfw:commentRss><description>Someone in our marketing department has asked the question:  &amp;quot;What is the default width of the page template in Appian?&amp;quot;  This would be in the Portal view.  I am not sure where I can find this information.  Can anyone share?...&lt;p style='display:none'&gt;OriginalPostID-74489&lt;/p&gt;&lt;p style='display:none'&gt;OriginalPostID-74489&lt;/p&gt;</description></item><item><title>How to Make Stacked Column Chart with Multiple Series?</title><link>https://community.appian.com/thread/40291?ContentTypeID=0</link><pubDate>Thu, 19 Mar 2026 16:34:28 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:7288efea-366f-40f0-ab60-eb1a8c7a6f32</guid><dc:creator>dcao</dc:creator><slash:comments>11</slash:comments><comments>https://community.appian.com/thread/40291?ContentTypeID=0</comments><wfw:commentRss>https://community.appian.com/discussions/f/user-interface/40291/how-to-make-stacked-column-chart-with-multiple-series/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;Hi Appian Community!&lt;/p&gt;
&lt;p&gt;I have a requirement where in the column chart below, I need to show a breakdown of the data for each bar of all the series based on the date.&lt;/p&gt;
&lt;p&gt;&lt;img style="max-height:240px;max-width:320px;" src="/resized-image/__size/640x480/__key/communityserver-discussions-components-files/13/pastedimage1773937909660v1.png" alt=" " /&gt;&lt;/p&gt;
&lt;p&gt;I had to manipulate the dataset so using a record type was not possible. Now I have my data structured where&amp;nbsp; x-axis is dates, and y-axis is the percentage of each area of the office&amp;#39;s seat booking. How do I show within each bar, a breakdown of say half is booking type A and the other half is booking type B?&lt;/p&gt;</description></item><item><title>RE: How to Make Stacked Column Chart with Multiple Series?</title><link>https://community.appian.com/thread/154026?ContentTypeID=1</link><pubDate>Fri, 20 Mar 2026 14:03:35 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:4b03150a-2d84-47b2-bdc2-758ce6205939</guid><dc:creator>dcao</dc:creator><slash:comments>0</slash:comments><comments>https://community.appian.com/thread/154026?ContentTypeID=1</comments><wfw:commentRss>https://community.appian.com/discussions/f/user-interface/40291/how-to-make-stacked-column-chart-with-multiple-series/rss?ContentTypeId=0</wfw:commentRss><description>&lt;p&gt;thanks shubham for your confirmation&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>