<?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>Editable grid</title><link>https://community.appian.com/discussions/f/user-interface/39141/editable-grid</link><description>Hi All, 
 I m a beginner in appian. As part of my request, I need to build a editable grid with record data rule input. I have 5 fields totally and I need to display them. Can someone help me how to configure edit button and add button and what actions</description><dc:language>en-US</dc:language><generator>Telligent Community 12</generator><item><title>RE: Editable grid</title><link>https://community.appian.com/thread/148357?ContentTypeID=1</link><pubDate>Fri, 23 May 2025 13:34:00 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:5469656c-0e12-4ca4-b11e-75fefbc263d9</guid><dc:creator>Mike Schmitt</dc:creator><description>&lt;p&gt;I don&amp;#39;t see any &amp;quot;add new row&amp;quot; here - and you said previously that there was an issue with &amp;quot;edit add new row&amp;quot;, so can you clarify? And if you&amp;#39;re trying to edit existing data, the example here makes it really unclear where that existing data is coming from (how it&amp;#39;s being queried, if/how it&amp;#39;s being transformed before shown in the grid, etc).&lt;/p&gt;
&lt;p&gt;(Also, I strongly support Stefan&amp;#39;s advice - it&amp;#39;s almost always best to start with a smaller/simpler working example, and only add new things one-by-one and don&amp;#39;t add anything beyond that until you fully understand the last addition and get it 100% working.)&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Editable grid</title><link>https://community.appian.com/thread/148334?ContentTypeID=1</link><pubDate>Fri, 23 May 2025 08:45:46 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:dfd0254b-a533-4097-a32b-86c149663089</guid><dc:creator>Stefan Helzle</dc:creator><description>&lt;p&gt;This is an interesting intellectual challenge ...&lt;/p&gt;
&lt;p&gt;Feels like a situation I have been in many times where increasing&amp;nbsp;complexity grew over my head, and I just did not understand anymore what is going on. And it is extremely challenging for us to try to understand what is going on.&lt;/p&gt;
&lt;p&gt;The solution: Take the things you learned on the way, and restart. Use the recipes posted above. Create some separate simple examples to understand how things work. Once done, you learned a lot, and you will end up having much cleaner code, which you can even maintain in the long term.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Editable grid</title><link>https://community.appian.com/thread/148333?ContentTypeID=1</link><pubDate>Fri, 23 May 2025 07:50:20 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:539ab0f3-08c7-40b8-a987-a39c8ef121dd</guid><dc:creator>reenab0003</dc:creator><description>&lt;p&gt;This is the code i m using, i want to use write records functions to write into the database. i have 3 rows of data stored in db and the only thing i can modify is section value column which is stored in json type. I m not able to write into db.&lt;a href="/members/mikes0011"&gt;Mike Schmitt&lt;/a&gt;&amp;nbsp;, &lt;a href="/members/stefanhelzle0001"&gt;Stefan Helzle&lt;/a&gt;&amp;nbsp; can someone please help&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Editable grid</title><link>https://community.appian.com/thread/148332?ContentTypeID=1</link><pubDate>Fri, 23 May 2025 07:48:17 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:3be02260-b6b3-4bb0-b75b-f5d16ebb72ce</guid><dc:creator>reenab0003</dc:creator><description>&lt;p&gt;&lt;pre class="ui-code" data-mode="text"&gt;a!localVariables(
  local!sectionValue: index(
    ri!sectionDetails,
    &amp;#39;recordType!{9d43eebd-bb55-4fcd-ac73-cce13c477378}TTPK_r_pstConfiguration.fields.{4699341c-986d-4876-808e-d8db1ab0484d}sectionValue&amp;#39;,
    null()
  ),
  local!originalParseJson: if(
    a!isNullOrEmpty(local!sectionValue),
    null(),
    a!forEach(
      items: local!sectionValue,
      expression: a!fromJson(fv!item)
    )
  ),
  local!editingRowIndex,
  local!parseJson: local!originalParseJson,
  local!dataToWrite: a!forEach(
    items: ri!sectionDetails,
    expression: cast(
      &amp;#39;recordType!{9d43eebd-bb55-4fcd-ac73-cce13c477378}TTPK_r_pstConfiguration&amp;#39;,
      fv!item
    )
  ),
  local!extractKey: a!keys(index(local!parseJson, 1, null())),
  local!headers: a!forEach(
    local!extractKey,
    displayvalue(
      fv!item,
      cons!TTPK_TXT_JSON_PARAMETERS,
      cons!TTPK_TXT_COLUMN_LABELS,
      null()
    )
  ),
  local!isLogisticsLevelCollapse: false(),
  local!isEditable: false,
  local!isNewRow: false,
  local!disableCancel: true,
  local!disableSave: true,
  {
    a!sideBySideLayout(
      items: {
        a!sideBySideItem(
          item: a!richTextDisplayField(
            labelPosition: &amp;quot;COLLAPSED&amp;quot;,
            value: {
              a!richTextItem(
                text: {
                  &amp;#39;translation!{4813a583-da1f-481b-adb1-124a9b27e0a6}TTPK Translations.{2fab036a-523a-424c-96a0-2e73bb424007}Logistics Impact Levels&amp;#39;
                },
                size: &amp;quot;STANDARD&amp;quot;,
                style: &amp;quot;STRONG&amp;quot;
              )
            },
            marginAbove: &amp;quot;STANDARD&amp;quot;
          )
        ),
        a!sideBySideItem(
          item: a!richTextDisplayField(
            value: a!richTextIcon(
              icon: if(
                local!isLogisticsLevelCollapse,
                &amp;quot;caret-down&amp;quot;,
                &amp;quot;caret-up&amp;quot;
              ),
              link: a!dynamicLink(
                saveInto: {
                  a!save(
                    local!isLogisticsLevelCollapse,
                    not(local!isLogisticsLevelCollapse)
                  )
                }
              ),
              linkStyle: &amp;quot;STANDALONE&amp;quot;,
              color: &amp;quot;#008294&amp;quot;,
              size: &amp;quot;MEDIUM&amp;quot;
            ),
            align: &amp;quot;RIGHT&amp;quot;
          )
        )
      }
    ),
    a!horizontalLine(marginAbove: &amp;quot;NONE&amp;quot;, marginBelow: &amp;quot;LESS&amp;quot;),
    a!cardLayout(
      contents: {
        a!gridLayout(
          label: &amp;quot;&amp;quot;,
          labelPosition: &amp;quot;ABOVE&amp;quot;,
          headerCells: {
            a!gridLayoutHeaderCell(
              label: &amp;#39;translation!{4813a583-da1f-481b-adb1-124a9b27e0a6}TTPK Translations.{04c61647-fadb-43ec-876c-119024f26a05}Logistics Impact&amp;#39;
            ),
            a!gridLayoutHeaderCell(
              label: &amp;#39;translation!{4813a583-da1f-481b-adb1-124a9b27e0a6}TTPK Translations.{82d09d08-4553-49ea-82ee-85ea089c9298}Operator&amp;#39;
            ),
            a!gridLayoutHeaderCell(
              label: &amp;#39;translation!{4813a583-da1f-481b-adb1-124a9b27e0a6}TTPK Translations.{a3643f4a-801c-4e26-b824-e347f80959dd}Previous From&amp;#39;
            ),
            a!gridLayoutHeaderCell(
              label: &amp;#39;translation!{4813a583-da1f-481b-adb1-124a9b27e0a6}TTPK Translations.{9978e4b7-d23e-4d2d-b460-6ce00b7332f9}Previous To&amp;#39;
            ),
            a!gridLayoutHeaderCell(
              label: &amp;#39;translation!{4813a583-da1f-481b-adb1-124a9b27e0a6}TTPK Translations.{abbf3ef4-fa23-4e52-9e95-ee0708a58a68}From&amp;#39;
            ),
            a!gridLayoutHeaderCell(
              label: &amp;#39;translation!{4813a583-da1f-481b-adb1-124a9b27e0a6}TTPK Translations.{d932cdec-954d-4707-8950-9bda619fcc4c}To&amp;#39;
            ),
            a!gridLayoutHeaderCell(label: &amp;quot;&amp;quot;),
            
          },
          columnConfigs: {},
          rows: {
            a!forEach(
              items: local!parseJson,
              expression: a!localVariables(
                a!gridRowLayout(
                  id: fv!index,
                  contents: {
                    a!textField(
                      label: &amp;quot;logisticImpact&amp;quot; &amp;amp; fv!index,
                      value: fv!item.logisticImpact,
                      saveInto: fv!item.logisticImpact,
                      readOnly: true()
                    ),
                    a!textField(
                      /* Labels are not visible in grid cells but are necessary to meet accessibility requirements */
                      label: &amp;quot;operator&amp;quot; &amp;amp; fv!index,
                      value: fv!item.operator,
                      saveInto: fv!item.operator,
                      readOnly: true()
                    ),
                    /* For the Title Column*/
                    a!textField(
                      label: &amp;quot;fromPreviousValue&amp;quot; &amp;amp; fv!index,
                      value: fv!item.fromPreviousValue,
                      saveInto: fv!item.fromPreviousValue,
                      readOnly: true()
                    ),
                    /* For the Phone Number Column*/
                    a!textField(
                      label: &amp;quot;toPreviousValue&amp;quot; &amp;amp; fv!index,
                      value: fv!item.toPreviousValue,
                      saveInto: fv!item.toPreviousValue,
                      readOnly: true()
                    ),
                    a!textField(
                      label: &amp;quot;from&amp;quot; &amp;amp; fv!index,
                      value: fv!item.from,
                      saveInto: fv!item.from,
                      readOnly: if(
                        a!isNullOrEmpty(local!editingRowIndex),
                        true,
                        if(
                          local!editingRowIndex = fv!index,
                          false,
                          true
                        )
                      )
                    ),
                    a!textField(
                      label: &amp;quot;to&amp;quot; &amp;amp; fv!index,
                      value: fv!item.to,
                      saveInto: fv!item.to,
                      disabled: not(
                        if(
                          fv!item.logisticImpact = &amp;quot;High&amp;quot;,
                          true,
                          false
                        )
                      ),
                      readOnly: if(
                        a!isNullOrEmpty(local!editingRowIndex),
                        true,
                        if(
                          local!editingRowIndex = fv!index,
                          false,
                          true
                        )
                      )
                    ),
                    a!richTextDisplayField(
                      value: a!richTextIcon(
                        icon: &amp;quot;pencil&amp;quot;,
                        linkStyle: &amp;quot;STANDALONE&amp;quot;,
                        caption: &amp;quot;Click here to edit&amp;quot;,
                        link: a!dynamicLink(
                          saveInto: {
                            a!save(local!editingRowIndex, fv!index),
                            a!save(local!disableCancel, false),
                            a!save(local!disableSave, false)
                          }
                        )
                      )
                    )
                  }
                )
              )
            )
          },
          selectionSaveInto: {},
          validations: {},
          shadeAlternateRows: true
        ),
        a!columnsLayout(
          columns: {
            a!columnLayout(
              contents: {
                a!buttonArrayLayout(
                  buttons: {
                    a!buttonWidget(
                      label: &amp;#39;translation!{4813a583-da1f-481b-adb1-124a9b27e0a6}TTPK Translations.{015775ca-76af-416a-9011-4c84f861f9b6}Cancel&amp;#39;,
                      style: &amp;quot;LINK&amp;quot;,
                      color: &amp;quot;#008294&amp;quot;,
                      saveInto: a!save(
                        local!parseJson,
                        local!originalParseJson
                      )
                    ),
                    a!buttonWidget(
                      label: &amp;#39;translation!{4813a583-da1f-481b-adb1-124a9b27e0a6}TTPK Translations.{1dcf6341-4906-4546-a0f1-074350544f5f}Save&amp;#39;,
                      icon: &amp;quot;floppy-o&amp;quot;,
                      style: &amp;quot;OUTLINE&amp;quot;,
                      color: &amp;quot;#008294&amp;quot;,
                      saveInto: {
                        a!save(
                          ri!sectionDetails,
                          a!forEach(
                            items: local!parseJson,
                            expression: a!map(
                              sectionName: &amp;quot;Logistics Impact Levels&amp;quot;,
                              sectionValue: a!toJson(fv!item),
                              createdBy: loggedInUser(),
                              createdOn: now(),
                              modifiedBy: loggedInUser(),
                              modifiedOn: now(),
                              isActive: true()
                            )
                          )
                        ),
                        a!writeRecords(
                          records: local!dataToWrite,
                          onSuccess: a!save(local!isNewRow, true),
                          onError: a!save(local!isNewRow, fv!error)
                        )
                      }
                    ),
                    
                  },
                  align: &amp;quot;END&amp;quot;,
                  marginBelow: &amp;quot;NONE&amp;quot;
                )
              }
            )
          }
        )
      },
      showWhen: if(
        local!isLogisticsLevelCollapse,
        false,
        true
      ),
      showBorder: false()
    )
  }&lt;/pre&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Editable grid</title><link>https://community.appian.com/thread/148330?ContentTypeID=1</link><pubDate>Fri, 23 May 2025 06:16:54 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:c04cef4a-fa28-49f5-a7ba-7f49ea3c35b8</guid><dc:creator>baji mekala</dc:creator><description>&lt;p&gt;Hi &lt;a href="/members/reenab0003"&gt;reenab0003&lt;/a&gt;&amp;nbsp;,&lt;/p&gt;
&lt;p&gt;&amp;nbsp;This code might help you for editable grid ( add, remove ,edit )&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="text"&gt;a!localVariables(
  local!data: {
    a!map(
      studentId: 1,
      loginId: 1,
      lastName: &amp;quot;gill&amp;quot;,
      phone: &amp;quot;9899878788&amp;quot;,
      photoDocId: 168045,
      statusId: 11,
      modifiedOn: fn!datetime(2023, 12, 6, 10, 24, 45, 0),
      isActive: false,
      age: 23,
      createdBy: &amp;quot;Yashwanth&amp;quot;,
      modifiedBy: &amp;quot;yashwanth.akula@yexle.com&amp;quot;,
      emailAddress: &amp;quot;subman@gmail.com&amp;quot;,
      firstName: &amp;quot;Subman&amp;quot;,
      dob: fn!date(2000, 9, 29),
      createdOn: fn!datetime(2023, 12, 6, 5, 37, 29, 0)
    ),
    a!map(
      studentId: 2,
      loginId: 4,
      lastName: &amp;quot;PPP&amp;quot;,
      phone: &amp;quot;9877776767&amp;quot;,
      photoDocId: 168123,
      statusId: 12,
      modifiedOn: fn!datetime(2023, 12, 7, 6, 10, 24, 0),
      isActive: false,
      age: 33,
      createdBy: &amp;quot;Stark&amp;quot;,
      modifiedBy: &amp;quot;Stark&amp;quot;,
      emailAddress: &amp;quot;rahane@gmail.com&amp;quot;,
      firstName: &amp;quot;RRR&amp;quot;,
      dob: fn!date(1990, 11, 1),
      createdOn: fn!datetime(2023, 12, 7, 6, 9, 31, 0)
    ),
    a!map(
      studentId: 3,
      loginId: 5,
      lastName: &amp;quot;jaganadh&amp;quot;,
      phone: &amp;quot;9855677665&amp;quot;,
      photoDocId: 168181,
      statusId: 12,
      modifiedOn: fn!datetime(2023, 12, 8, 5, 9, 30, 0),
      isActive: false,
      age: 23,
      createdBy: &amp;quot;Mahesh&amp;quot;,
      modifiedBy: &amp;quot;Mahesh&amp;quot;,
      emailAddress: &amp;quot;puri@gmail.com&amp;quot;,
      firstName: &amp;quot;puri&amp;quot;,
      dob: fn!date(2000, 12, 8),
      createdOn: fn!datetime(2023, 12, 8, 4, 22, 40, 0)
    ),
    a!map(
      studentId: 5,
      loginId: 5,
      lastName: &amp;quot;jaganadh&amp;quot;,
      phone: &amp;quot;9855677665&amp;quot;,
      photoDocId: 168190,
      statusId: 10,
      modifiedOn: fn!datetime(2023, 12, 8, 5, 10, 4, 0),
      isActive: true,
      age: 23,
      createdBy: &amp;quot;Mahesh&amp;quot;,
      modifiedBy: &amp;quot;yashwanth.akula@yexle.com&amp;quot;,
      emailAddress: &amp;quot;puri@gmail.com&amp;quot;,
      firstName: &amp;quot;puri&amp;quot;,
      dob: fn!date(2000, 12, 8),
      createdOn: fn!datetime(2023, 12, 8, 4, 46, 15, 0)
    ),
    a!map(
      studentId: 6,
      loginId: 5,
      lastName: &amp;quot;KO&amp;quot;,
      phone: &amp;quot;7877676556&amp;quot;,
      photoDocId: 168234,
      statusId: 10,
      modifiedOn: fn!datetime(2023, 12, 8, 10, 2, 1, 0),
      isActive: true,
      age: 23,
      createdBy: &amp;quot;Mahesh&amp;quot;,
      modifiedBy: &amp;quot;yashwanth.akula@yexle.com&amp;quot;,
      emailAddress: &amp;quot;subman@gmail.com&amp;quot;,
      firstName: &amp;quot;Yashwanth&amp;quot;,
      dob: fn!date(2000, 10, 30),
      createdOn: fn!datetime(2023, 12, 8, 9, 49, 58, 0)
    ),
    a!map(
      studentId: 8,
      loginId: 4,
      lastName: &amp;quot;mahesh&amp;quot;,
      phone: &amp;quot;7899875467&amp;quot;,
      photoDocId: 168758,
      statusId: 10,
      modifiedOn: fn!datetime(2023, 12, 23, 12, 21, 44, 0),
      isActive: true,
      age: 23,
      createdBy: &amp;quot;Stark&amp;quot;,
      modifiedBy: &amp;quot;yashwanth.akula@yexle.com&amp;quot;,
      emailAddress: &amp;quot;pandu@gmail.com&amp;quot;,
      firstName: &amp;quot;Pandu&amp;quot;,
      dob: fn!date(2000, 12, 14),
      createdOn: fn!datetime(2023, 12, 23, 11, 59, 45, 0)
    ),
    a!map(
      studentId: 9,
      loginId: 4,
      lastName: &amp;quot;james&amp;quot;,
      phone: &amp;quot;7899875467&amp;quot;,
      photoDocId: 168761,
      statusId: 11,
      modifiedOn: fn!datetime(2023, 12, 23, 12, 21, 52, 0),
      isActive: true,
      age: 23,
      createdBy: &amp;quot;Stark&amp;quot;,
      modifiedBy: &amp;quot;yashwanth.akula@yexle.com&amp;quot;,
      emailAddress: &amp;quot;pandu@gmail.com&amp;quot;,
      firstName: &amp;quot;Ferguson&amp;quot;,
      dob: fn!date(2000, 12, 14),
      createdOn: fn!datetime(2023, 12, 23, 12, 18, 33, 0)
    ),
    a!map(
      studentId: 10,
      loginId: 3,
      lastName: &amp;quot;james&amp;quot;,
      phone: &amp;quot;7899875467&amp;quot;,
      photoDocId: 169025,
      statusId: 11,
      modifiedOn: fn!datetime(2024, 1, 3, 14, 47, 51, 0),
      isActive: true,
      age: 24,
      createdBy: &amp;quot;Taylor&amp;quot;,
      modifiedBy: &amp;quot;yashwanth.akula@yexle.com&amp;quot;,
      emailAddress: &amp;quot;pandu@gmail.com&amp;quot;,
      firstName: &amp;quot;Ferguson&amp;quot;,
      dob: fn!date(2000, 12, 14),
      createdOn: fn!datetime(2024, 1, 3, 14, 37, 42, 0)
    ),
    a!map(
      studentId: 12,
      loginId: 1,
      lastName: &amp;quot;mouse&amp;quot;,
      phone: &amp;quot;5545456767&amp;quot;,
      photoDocId: 170248,
      statusId: 11,
      modifiedOn: fn!datetime(2024, 8, 27, 5, 48, 52, 0),
      isActive: true,
      age: 22,
      createdBy: &amp;quot;Yashwanth&amp;quot;,
      modifiedBy: &amp;quot;yashwanth.akula@yexle.com&amp;quot;,
      emailAddress: &amp;quot;mickey@gmail.com&amp;quot;,
      firstName: &amp;quot;mickey&amp;quot;,
      dob: fn!date(2002, 10, 31),
      createdOn: fn!datetime(2024, 1, 21, 8, 55, 54, 0)
    )
  },
  local!readOnly: { 0 },
  {
    a!gridLayout(
      label: &amp;quot;Students&amp;quot;,
      labelPosition: &amp;quot;ABOVE&amp;quot;,
      headerCells: {
        a!gridLayoutHeaderCell(label: &amp;quot;Name&amp;quot;),
        a!gridLayoutHeaderCell(label: &amp;quot;age&amp;quot;),
        a!gridLayoutHeaderCell(label: &amp;quot;phone&amp;quot;),
        a!gridLayoutHeaderCell(label: &amp;quot;Email&amp;quot;),
        a!gridLayoutHeaderCell(label: &amp;quot;DOB&amp;quot;),
        a!gridLayoutHeaderCell(label: &amp;quot;&amp;quot;),
        a!gridLayoutHeaderCell(label: &amp;quot;&amp;quot;)
      },
      columnConfigs: {
        a!gridLayoutColumnConfig(),
        a!gridLayoutColumnConfig(),
        a!gridLayoutColumnConfig(),
        a!gridLayoutColumnConfig(),
        a!gridLayoutColumnConfig(),
        a!gridLayoutColumnConfig(width: &amp;quot;ICON&amp;quot;),
        a!gridLayoutColumnConfig(width: &amp;quot;ICON&amp;quot;)
      },
      rows: {
        a!forEach(
          items: local!data,
          expression: a!gridRowLayout(
            contents: {
              a!textField(
                value: fv!item.lastName,
                saveInto: fv!item.lastName,
                readOnly: and(
                  not(contains(local!readOnly, fv!index)),
                  a!isNotNullOrEmpty(fv!item.lastName)
                )
              ),
              a!integerField(
                value: fv!item.age,
                saveInto: fv!item.age,
                readOnly: and(
                  not(contains(local!readOnly, fv!index)),
                  a!isNotNullOrEmpty(fv!item.age)
                )
              ),
              a!textField(
                value: fv!item.phone,
                saveInto: fv!item.phone,
                readOnly: and(
                  not(contains(local!readOnly, fv!index)),
                  a!isNotNullOrEmpty(fv!item.phone)
                )
              ),
              a!textField(
                value: fv!item.emailAddress,
                saveInto: fv!item.emailAddress,
                readOnly: and(
                  not(contains(local!readOnly, fv!index)),
                  a!isNotNullOrEmpty(fv!item.emailAddress)
                )
              ),
              a!dateField(
                value: fv!item.dob,
                saveInto: fv!item.dob,
                readOnly: and(
                  not(contains(local!readOnly, fv!index)),
                  a!isNotNullOrEmpty(fv!item.dob)
                )
              ),
              a!richTextDisplayField(
                value: if(
                  and(
                    not(contains(local!readOnly, fv!index)),
                    a!isNotNullOrEmpty(fv!item.studentId)
                  ),
                  a!richTextIcon(
                    icon: &amp;quot;pencil&amp;quot;,
                    caption: &amp;quot;Edit Record&amp;quot;,
                    linkStyle: &amp;quot;STANDALONE&amp;quot;,
                    link: a!dynamicLink(
                      saveInto: {
                        a!save(
                          local!readOnly,
                          append(local!readOnly, fv!index)
                        )
                      }
                    )
                  ),
                  a!richTextIcon(
                    icon: &amp;quot;floppy-o&amp;quot;,
                    color: &amp;quot;POSITIVE&amp;quot;,
                    caption: &amp;quot;Save record&amp;quot;,
                    linkStyle: &amp;quot;STANDALONE&amp;quot;,
                    link: a!dynamicLink(
                      saveInto: {
                        if(
                          a!isNullOrEmpty(fv!item.studentId),
                          {},
                          a!save(
                            local!readOnly,
                            remove(
                              local!readOnly,
                              wherecontains(fv!index, local!readOnly)
                            )
                          )
                        )
                      }
                    )
                  )
                )
              ),
              a!richTextDisplayField(
                value: {
                  a!richTextIcon(
                    icon: &amp;quot;times&amp;quot;,
                    color: &amp;quot;NEGATIVE&amp;quot;,
                    linkStyle: &amp;quot;STANDALONE&amp;quot;,
                    caption: &amp;quot;remove row&amp;quot;,
                    link: a!dynamicLink(
                      saveInto: a!save(local!data, remove(local!data, fv!index))
                    ),
                    showWhen: a!isNullOrEmpty(fv!item)
                  ),
                  a!richTextIcon(
                    icon: &amp;quot;trash&amp;quot;,
                    color: &amp;quot;NEGATIVE&amp;quot;,
                    linkStyle: &amp;quot;STANDALONE&amp;quot;,
                    caption: &amp;quot;delete &amp;quot;,
                    link: a!dynamicLink(saveInto: {}),
                    showWhen: a!isNotNullOrEmpty(fv!item.studentId)
                  )
                }
              )
            }
          )
        )
      },
      addRowLink: a!dynamicLink(
        label: &amp;quot;Add&amp;quot;,
        saveInto: {
          a!save(
            local!data,
            append(local!data, save!value)
          )
        }
      ),
      selectionSaveInto: {},
      validations: {},
      shadeAlternateRows: true
    )
  }
)&lt;/pre&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Editable grid</title><link>https://community.appian.com/thread/148326?ContentTypeID=1</link><pubDate>Thu, 22 May 2025 18:01:06 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:80723a62-74cc-45f6-b5f0-96805e733061</guid><dc:creator>Mike Schmitt</dc:creator><description>[quote userid="205180" url="~/discussions/f/user-interface/39141/editable-grid/148292"]Everytime when i edit add new row gets added into database[/quote]
&lt;p&gt;Without seeing the code you&amp;#39;re attempting to use, it&amp;#39;s hard to guess at a fix, fwiw.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Editable grid</title><link>https://community.appian.com/thread/148325?ContentTypeID=1</link><pubDate>Thu, 22 May 2025 18:00:06 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:44f046dc-0059-45f0-b88b-6129872c6c01</guid><dc:creator>Piyush Vaswani </dc:creator><description>&lt;p&gt;&lt;a href="https://youtu.be/z0FF9aCZRBE?feature=shared"&gt;https://youtu.be/z0FF9aCZRBE?feature=shared&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;CHECKOUT THIS VIDEO AVAILABLE ON APPIAN COMMUNITY YOUTUBE CHANNEL&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Editable grid</title><link>https://community.appian.com/thread/148299?ContentTypeID=1</link><pubDate>Thu, 22 May 2025 06:12:25 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:251f9826-0f3e-4552-88ba-e4131a1cec70</guid><dc:creator>Harsha Sharma</dc:creator><description>&lt;p&gt;Ensure that when you are editing, the primary key id column value is not overwritten. If originally id was 2 then after edit operation and submits also the id for that row still be 2. If it goes null somewhere then you will find a new row in database instead of the original row being updated. So look out for the &amp;#39;id&amp;#39; column value in your interface and process.&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Editable grid</title><link>https://community.appian.com/thread/148298?ContentTypeID=1</link><pubDate>Thu, 22 May 2025 06:09:39 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:b21d58bb-9836-4d09-aa67-157acee8ac7e</guid><dc:creator>Harshmodi</dc:creator><description>&lt;p&gt;Hi &lt;a href="/members/reenab0003"&gt;reenab0003&lt;/a&gt;&amp;nbsp;,&lt;/p&gt;
&lt;p&gt;I guess this code might help you for editable grid ( add, remove ,edit )&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="text"&gt;a!localVariables(
  local!data: {
    {
      empId: 1,
      firstName: &amp;quot;Test&amp;quot;,
      lastName: &amp;quot;User 1&amp;quot;,
      designation: &amp;quot;Consultant&amp;quot;,
      department: &amp;quot;Delivery&amp;quot;
    },
    {
      empId: 2,
      firstName: &amp;quot;Test&amp;quot;,
      lastName: &amp;quot;User 2&amp;quot;,
      designation: &amp;quot;Junior Consultant&amp;quot;,
      department: &amp;quot;Delivery&amp;quot;
    }
  },
  {
    a!gridLayout(
      label: &amp;quot;Editable Grid&amp;quot;,
      labelPosition: &amp;quot;ABOVE&amp;quot;,
      headerCells: {
        a!gridLayoutHeaderCell(label: &amp;quot;EMP ID&amp;quot;),
        a!gridLayoutHeaderCell(label: &amp;quot;FIRST NAME&amp;quot;),
        a!gridLayoutHeaderCell(label: &amp;quot;LAST NAME&amp;quot;),
        a!gridLayoutHeaderCell(label: &amp;quot;DESIGNATION&amp;quot;),
        a!gridLayoutHeaderCell(label: &amp;quot;DEPARTMENT&amp;quot;),
        a!gridLayoutHeaderCell(label: &amp;quot;ACTION&amp;quot;),
        
      },
      columnConfigs: {},
      rows: {
        a!forEach(
          items: local!data,
          expression: a!gridRowLayout(
            contents: {
              a!integerField(
                value: fv!item.empId,
                saveInto: fv!item.empId
              ),
              a!textField(
                value: fv!item.firstName,
                saveInto: fv!item.firstName
              ),
              a!textField(
                value: fv!item.lastName,
                saveInto: fv!item.lastName
              ),
              a!textField(
                value: fv!item.designation,
                saveInto: fv!item.designation
              ),
              a!textField(
                value: fv!item.department,
                saveInto: fv!item.deparment
              ),
              a!richTextDisplayField(
                value: {
                  a!richTextIcon(
                    icon: &amp;quot;times&amp;quot;,
                    color: &amp;quot;NEGATIVE&amp;quot;,
                    link: a!dynamicLink(
                      saveInto: a!save(local!data, remove(local!data, fv!index))
                    ),
                    linkStyle: &amp;quot;STANDALONE&amp;quot;
                  )
                }
              )
            }
          )
        )
      },
      totalCount: length(local!data),
      addRowLink: a!dynamicLink(
        label: &amp;quot;Add Emp&amp;quot;,
        saveInto: a!save(
          local!data,
          append(
            local!data,
            {
              empId: null,
              firstName: null,
              lastName: null,
              deisgnation: null,
              department: null
            }
          )
        )
      ),
      selectionSaveInto: {},
      validations: {},
      shadeAlternateRows: true
    )
  }
)&lt;/pre&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Editable grid</title><link>https://community.appian.com/thread/148292?ContentTypeID=1</link><pubDate>Thu, 22 May 2025 05:03:49 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:d8fcbeaf-a421-45ee-a910-b9802c80097c</guid><dc:creator>reenab0003</dc:creator><description>&lt;p&gt;Everytime when i edit add new row gets added into database. The above receipe i m not able to find configuring edit&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Editable grid</title><link>https://community.appian.com/thread/148290?ContentTypeID=1</link><pubDate>Thu, 22 May 2025 04:39:55 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:f1fb1a4d-956b-450a-a3c2-6d63cfe977c2</guid><dc:creator>Stefan Helzle</dc:creator><description>&lt;p&gt;Where are you stuck? Maybe this recipe gives you some inspiration:&amp;nbsp;&lt;a href="https://docs.appian.com/suite/help/25.1/recipe-add-edit-and-remove-data-in-an-inline-editable-grid.html"&gt;docs.appian.com/.../recipe-add-edit-and-remove-data-in-an-inline-editable-grid.html&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Editable grid</title><link>https://community.appian.com/thread/148289?ContentTypeID=1</link><pubDate>Thu, 22 May 2025 03:15:13 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:6b0b89bb-d459-4b34-95dd-18904fd6d5fc</guid><dc:creator>reenab0003</dc:creator><description>&lt;p&gt;&amp;nbsp;&lt;a href="/members/mikes0011"&gt;Mike Schmitt&lt;/a&gt;&amp;nbsp;I have tried this. I m able to get the data populated in the grid. But I m stuck at how to configure the add , edit and save buttons&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Editable grid</title><link>https://community.appian.com/thread/148285?ContentTypeID=1</link><pubDate>Wed, 21 May 2025 17:24:44 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:edc2d280-584b-4ea1-a9c7-2f3e4352af58</guid><dc:creator>Mike Schmitt</dc:creator><description>&lt;p&gt;There are various recipes in the official documentation: &lt;a href="https://docs.appian.com/suite/help/25.1/Editable_Grid_Component.html#record-type-example"&gt;https://docs.appian.com/suite/help/25.1/Editable_Grid_Component.html#record-type-example&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Have you tried anything already and/or having any particular trouble?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>