<?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>Validation on Grid Plus</title><link>https://community.appian.com/discussions/f/new-to-appian/38659/validation-on-grid-plus</link><description>Hi All, 
 
 I am using gridPlusLayout , i want to know how can we put validation on columnConfigs. 
 
 1.Like if want to put validation for null or empty. 
 2. the second concern is when i am editing a field after made changes it save data into separate</description><dc:language>en-US</dc:language><generator>Telligent Community 12</generator><item><title>RE: Validation on Grid Plus</title><link>https://community.appian.com/thread/146108?ContentTypeID=1</link><pubDate>Fri, 07 Mar 2025 15:01:30 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:509a9d3b-8b30-4c82-846f-21e75517e9a2</guid><dc:creator>riya0005</dc:creator><description>&lt;p&gt;i am unable to paste code here.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Validation on Grid Plus</title><link>https://community.appian.com/thread/146107?ContentTypeID=1</link><pubDate>Fri, 07 Mar 2025 14:59:54 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:073a049c-5a40-42c3-812f-4d78cfda752d</guid><dc:creator>riya0005</dc:creator><description>&lt;p&gt;&lt;pre class="ui-code" data-mode="text"&gt;a!localVariables(
  local!changeData: {},
  local!deletedData:{},
  local!structureType:  {&amp;quot;rooftop&amp;quot;, &amp;quot;micro&amp;quot;},
  local!region: {&amp;quot;bc&amp;quot;},
  local!coverageType:  {&amp;quot;macro&amp;quot;,&amp;quot;micro&amp;quot;},
  local!uniqueStructuretype: union(
    local!structureType,
    local!structureType
  ),
  local!uniqueRegion: union(local!region, local!region),
  local!uniqueCoverageType: union(local!coverageType, local!coverageType),
  local!isDisable: false,
  local!gridData: rule!MTFT_getTftData(),
  local!record: a!forEach(
    items: local!changeData,
    expression: cast(
      &amp;#39;recordType!{a335f9cf-6867-4270-aed4-53c7bdcc9404}MTFT Default Rules&amp;#39;,
      fv!item
    )
  ),
   
  local!deafultGridData:local!gridData,
  
    

  a!formLayout(
    contents: {
      a!sectionLayout(
        label: &amp;quot;Manage Forecast Date Rules&amp;quot;,
        labelIcon: &amp;quot;user-edit&amp;quot;,
        contents: {
          a!columnsLayout(
          
            columns: {
              a!columnLayout(
                
                contents: a!boxLayout(
                label: &amp;quot;Instructions&amp;quot;,
                contents: {
                  a!cardLayout(
                    contents: {
                      a!sideBySideLayout(
                        items: {
                          a!sideBySideItem(
                            item: a!richTextDisplayField(
                              labelPosition: &amp;quot;COLLAPSED&amp;quot;,
                              value: {
                                a!richTextIcon(
                                  icon: &amp;quot;info-circle&amp;quot;,
                                  color: &amp;quot;#555&amp;quot;,
                                  size: &amp;quot;MEDIUM&amp;quot;
                                )
                              }
                            ),
                            width: &amp;quot;MINIMIZE&amp;quot;
                          ),
                          a!sideBySideItem(
                            /* Replace this rich text with your information message */
                            item: a!richTextDisplayField(
                              labelPosition: &amp;quot;COLLAPSED&amp;quot;,
                              value: {
                                cons!MTFT_FORECAST_DATE_RULES_INSTRUCTIONS[1]
                              }
                            )
                          )
                        },
                        alignVertical: &amp;quot;MIDDLE&amp;quot;
                      )
                    },
                    style: &amp;quot;STANDARD&amp;quot;,
                    marginBelow: &amp;quot;STANDARD&amp;quot;,
                    accessibilityText: &amp;quot;Information message&amp;quot;
                  ),
                  a!cardLayout(
                    contents: {
                      a!sideBySideLayout(
                        items: {
                          a!sideBySideItem(
                            item: a!richTextDisplayField(
                              labelPosition: &amp;quot;COLLAPSED&amp;quot;,
                              value: {
                                a!richTextIcon(
                                  icon: &amp;quot;info-circle&amp;quot;,
                                  color: &amp;quot;#555&amp;quot;,
                                  size: &amp;quot;MEDIUM&amp;quot;
                                )
                              }
                            ),
                            width: &amp;quot;MINIMIZE&amp;quot;
                          ),
                          a!sideBySideItem(
                            /* Replace this rich text with your information message */
                            item: a!richTextDisplayField(
                              labelPosition: &amp;quot;COLLAPSED&amp;quot;,
                              value: {
                                cons!MTFT_FORECAST_DATE_RULES_INSTRUCTIONS[2]
                              }
                            )
                          )
                        },
                        alignVertical: &amp;quot;MIDDLE&amp;quot;
                      )
                    },
                    style: &amp;quot;STANDARD&amp;quot;,
                    marginBelow: &amp;quot;STANDARD&amp;quot;,
                    accessibilityText: &amp;quot;Information message&amp;quot;
                  )
                },
                style: &amp;quot;#FFFFFF&amp;quot;,
                shape: &amp;quot;ROUNDED&amp;quot;,
                isCollapsible: true,
                isInitiallyCollapsed: true,
                marginBelow: &amp;quot;STANDARD&amp;quot;
              )
              ),
              a!columnLayout(contents:   a!buttonLayout(
                primaryButtons: a!buttonWidget(
                  label: &amp;quot;Save&amp;quot;,
                  value: true,
                  saveInto: {

                    a!save(ri!tftRules[&amp;#39;recordType!{a335f9cf-6867-4270-aed4-53c7bdcc9404}MTFT Default Rules.fields.{4372a136-1961-4168-842f-60543664d9b9}createdBy&amp;#39;], loggedInUser()),
                    a!save(ri!tftRules[&amp;#39;recordType!{a335f9cf-6867-4270-aed4-53c7bdcc9404}MTFT Default Rules.fields.{87abe090-0ef4-4efd-8d62-59b8f07e98de}createdDate&amp;#39;], now()),
                    a!save(ri!tftRules[&amp;#39;recordType!{a335f9cf-6867-4270-aed4-53c7bdcc9404}MTFT Default Rules.fields.{c4ea5ff1-bb01-48a3-a9af-9003cd1e0efc}isDeleted&amp;#39;], false),
                    

                    a!startProcess(
                      processModel: cons!MTFT_MANAGE_FORECAST_DATE_RULES_PM,
                      processParameters: { TFTRules: ri!tftRules, cancel: ri!cancel },

                    ),

                  },
                  submit: true,
                  style: &amp;quot;SOLID&amp;quot;,
                  disabled: if(local!isDisable, false, true),
                  validate: false()

                ),


              ))
              
            }
          ),
         
         
          
        }
      ),
      gridPlusLayout(
        label: &amp;quot; &amp;quot;,
        labelPosition: &amp;quot;ABOVE&amp;quot;,
        validations: {},
        height: &amp;quot;AUTO&amp;quot;,
        rowsValue: rule!MTFT_getTftData(),
        rowsSaveInto: {
          ri!tftRules
        
        },
        primaryKeyFieldName: tostring(&amp;#39;recordType!{a335f9cf-6867-4270-aed4-53c7bdcc9404}MTFT Default Rules.fields.{32565a2f-3b42-4ea7-b017-1f042bff8df1}idRule&amp;#39;),
        columnConfigs: {
          textcolconfig(
            field: &amp;quot;idRule&amp;quot;,
            title: &amp;quot;Rule&amp;quot;,
            linkConfig: Null,
            relationshipName: null,
            validator: null,
            readOnly: true,
            colWidth: 10
          ),
          dropdowncolconfig(
            field: tostring(&amp;#39;recordType!{a335f9cf-6867-4270-aed4-53c7bdcc9404}MTFT Default Rules.fields.{3d15dc17-a294-4c02-aee1-087a2fca5a14}structureType&amp;#39;),
            source: local!uniqueStructuretype,
            strict: true,
            filter: true,
            title: &amp;quot;Structure Type&amp;quot;,
            relationshipName: null,
            validator: null,
            /*validator(*/
              /*name: &amp;quot;Structure type should not be empty &amp;quot;,*/
/*             */
              /*operator:&amp;quot;isNotNullOrEmpty&amp;quot;,*/
              /*value: null*/
            /*),*/
            readOnly: false,
            colWidth: 250
          ),
          dropdowncolconfig(
            field: &amp;quot;coverageType&amp;quot;,
            source: local!uniqueCoverageType,
            strict: true,
            filter: true,
            title: &amp;quot;Coverage Type&amp;quot;,
            relationshipName: null,
            validator: null,
            readOnly: false,
            colWidth: 250
          ),
          dropdowncolconfig(
            field: &amp;quot;region&amp;quot;,
            source: local!uniqueRegion,
            strict: true,
            filter: true,
            title: &amp;quot;Region&amp;quot;,
            relationshipName: null,
            validator: null,
            readOnly: false,
            colWidth: 250
          ),
          textcolconfig(
            field: &amp;quot;pmGoConstruction&amp;quot;,
            title: &amp;quot;PMGo Construction&amp;quot;,
            linkConfig: Null,
            relationshipName: null,
            validator: null,
            readOnly: false,
            colWidth: 300
          ),
          textcolconfig(
            field: &amp;quot;materialRequired&amp;quot;,
            title: &amp;quot;Material Required&amp;quot;,
            linkConfig: Null,
            relationshipName: null,
            validator:  null,

            readOnly: false,
            colWidth: 300
          ),
          textcolconfig(
            field: tostring(&amp;#39;recordType!{a335f9cf-6867-4270-aed4-53c7bdcc9404}MTFT Default Rules.fields.{cdf0e62d-2b2a-44a4-a973-fb165bdc031a}constructionStart&amp;#39;),
            title: &amp;quot;Construction  Start&amp;quot;,
            linkConfig: Null,
            relationshipName: null,
            validator: null,
            readOnly: false,
            colWidth: 300
          ),
          textcolconfig(
            field: &amp;quot;constructionEnd&amp;quot;,
            title: &amp;quot;Construction End&amp;quot;,
            linkConfig: Null,
            relationshipName: null,
            validator: null,
            readOnly: false,
            colWidth: 300
          ),
          textcolconfig(
            field: &amp;quot;atpReady&amp;quot;,
            title: &amp;quot;ATP Ready&amp;quot;,
            linkConfig: Null,
            relationshipName: null,
            validator: null,
            readOnly: false,
            colWidth: 300
          ),
          textcolconfig(
            field: &amp;quot;atpComplete&amp;quot;,
            title: &amp;quot;ATP Complete&amp;quot;,
            linkConfig: Null,
            relationshipName: null,
            validator: null,
            readOnly: false,
            colWidth: 300
          ),
          textcolconfig(
            field: &amp;quot;forecastedOnAir&amp;quot;,
            title: &amp;quot;Site OnAir&amp;quot;,
            linkConfig: Null,
            relationshipName: null,
            validator: null,
            readOnly: false,
            colWidth: 300
          )
        },
        changeDataValue: local!changeData,
        changeDataSaveInto: {
          local!changeData,
          a!save(local!isDisable, true)
          
        },
        deleteDataValue: local!deletedData ,
        deleteDataSaveInto: local!deletedData,
        readOnly: null,
        rowHeaders: true,
        hiddenFields: null,
        showPrimaryKey: false
      )
    },
    
  )
  
)&lt;/pre&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Validation on Grid Plus</title><link>https://community.appian.com/thread/146101?ContentTypeID=1</link><pubDate>Fri, 07 Mar 2025 14:33:03 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:02830a6d-a89e-408d-9a7d-3622fc9831ed</guid><dc:creator>Stefan Helzle</dc:creator><description>&lt;p&gt;Can you share some example code?&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/62/pastedimage1741357978416v1.png" alt=" " /&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>