<?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>Advance Editable Grid - Insert, Delete and Update data in a CDT when users add, delete and make changes to grid rows</title><link>https://community.appian.com/discussions/f/user-interface/13468/advance-editable-grid---insert-delete-and-update-data-in-a-cdt-when-users-add-delete-and-make-changes-to-grid-rows</link><description>Dear All, 
 Here is an advance topic for those who have been working with SAIL and Appian for longer than a newbie like me. 
 I have an editable grid - see the screenshot and code below. I managed to set it up as the start form of a process (I&amp;#39;m new to</description><dc:language>en-US</dc:language><generator>Telligent Community 12</generator><item><title>RE: Advance Editable Grid - Insert, Delete and Update data in a CDT when users add, delete and make changes to grid rows</title><link>https://community.appian.com/thread/79242?ContentTypeID=1</link><pubDate>Fri, 29 Jan 2021 11:52:11 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:c26c1c1c-6f34-43aa-9fef-3fdbbc296277</guid><dc:creator>nanfak</dc:creator><description>&lt;p&gt;Hi&amp;nbsp;Amrit Verma,&lt;/p&gt;
&lt;p&gt;Please can I suggest that you post this question as a new question?&amp;nbsp; I don&amp;#39;t think it&amp;#39;s getting viewed under this question, as the original question has already been answered.&lt;/p&gt;
&lt;p&gt;Best wishes.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Advance Editable Grid - Insert, Delete and Update data in a CDT when users add, delete and make changes to grid rows</title><link>https://community.appian.com/thread/79160?ContentTypeID=1</link><pubDate>Wed, 27 Jan 2021 07:29:26 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:98a3717c-4339-4d25-b000-fc1416e1feeb</guid><dc:creator>amritv308</dc:creator><description>&lt;p&gt;How we can insert data into CDT from an editable grid which contains integer &amp;amp; textfield data and generated using forEach() method with&amp;nbsp;gridRowLayout() function. Can anyone suggest here because i am new in Appian development.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;My Editable grid Code:&lt;/p&gt;
&lt;p&gt;######################################################################################&lt;/p&gt;
&lt;p&gt;=a!localVariables(&lt;br /&gt; local!items: {&lt;br /&gt; {id:&amp;quot;Core&amp;quot;,jan: 0, feb: 0, mar: 0, apr: 0, may: 0, jun:0, jul: 0, aug: 0,sep:0, oct: 0,nov: 0, dec :0},&lt;br /&gt; {id:&amp;quot;External&amp;quot;,jan: 0, feb: 0, mar: 0, apr: 0, may: 0, jun:0, jul: 0, aug: 0,sep:0, oct: 0,nov: 0, dec :0},&lt;br /&gt; {id:&amp;quot;Internal&amp;quot;,jan: 0, feb: 0, mar: 0, apr: 0, may: 0, jun:0, jul: 0, aug: 0,sep:0, oct: 0,nov: 0, dec :0},&lt;br /&gt; {id:&amp;quot;Material&amp;quot;,jan: 0, feb: 0, mar: 0, apr: 0, may: 0, jun:0, jul: 0, aug: 0,sep:0, oct: 0,nov: 0, dec :0},&lt;br /&gt; {id:&amp;quot;Transmission&amp;quot;,jan: 0, feb: 0, mar: 0, apr: 0, may: 0, jun:0, jul: 0, aug: 0,sep:0, oct: 0,nov: 0, dec :0}&lt;br /&gt; },&lt;br /&gt; a!gridLayout(&lt;br /&gt; label: &amp;quot;Forecast&amp;quot;,&lt;br /&gt; headerCells: {&lt;br /&gt; a!gridLayoutHeaderCell(label: &amp;quot;&amp;quot;, align: &amp;quot;RIGHT&amp;quot;),&lt;br /&gt; a!gridLayoutHeaderCell(label: &amp;quot;January&amp;quot;, align: &amp;quot;RIGHT&amp;quot;),&lt;br /&gt; a!gridLayoutHeaderCell(label: &amp;quot;February&amp;quot;, align: &amp;quot;RIGHT&amp;quot;),&lt;br /&gt; a!gridLayoutHeaderCell(label: &amp;quot;March&amp;quot;, align: &amp;quot;RIGHT&amp;quot;),&lt;br /&gt; a!gridLayoutHeaderCell(label: &amp;quot;April&amp;quot;, align: &amp;quot;RIGHT&amp;quot;),&lt;br /&gt; a!gridLayoutHeaderCell(label: &amp;quot;May&amp;quot;, align: &amp;quot;RIGHT&amp;quot;),&lt;br /&gt; a!gridLayoutHeaderCell(label: &amp;quot;June&amp;quot;, align: &amp;quot;RIGHT&amp;quot;),&lt;br /&gt; a!gridLayoutHeaderCell(label: &amp;quot;July&amp;quot;, align: &amp;quot;RIGHT&amp;quot;),&lt;br /&gt; a!gridLayoutHeaderCell(label: &amp;quot;August&amp;quot;, align: &amp;quot;RIGHT&amp;quot;),&lt;br /&gt; a!gridLayoutHeaderCell(label: &amp;quot;September&amp;quot;, align: &amp;quot;RIGHT&amp;quot;),&lt;br /&gt; a!gridLayoutHeaderCell(label: &amp;quot;October&amp;quot;, align: &amp;quot;RIGHT&amp;quot;),&lt;br /&gt; a!gridLayoutHeaderCell(label: &amp;quot;November&amp;quot;, align: &amp;quot;RIGHT&amp;quot;),&lt;br /&gt; a!gridLayoutHeaderCell(label: &amp;quot;December&amp;quot;, align: &amp;quot;RIGHT&amp;quot;),&lt;br /&gt; a!gridLayoutHeaderCell(label: &amp;quot;Total&amp;quot;, align: &amp;quot;RIGHT&amp;quot;)&lt;br /&gt; },&lt;br /&gt; columnConfigs: {&lt;br /&gt; a!gridLayoutColumnConfig(width: &amp;quot;NARROW&amp;quot;),&lt;br /&gt; a!gridLayoutColumnConfig(width: &amp;quot;NARROW&amp;quot;),&lt;br /&gt; a!gridLayoutColumnConfig(width: &amp;quot;NARROW&amp;quot;),&lt;br /&gt; a!gridLayoutColumnConfig(width: &amp;quot;NARROW&amp;quot;),&lt;br /&gt; a!gridLayoutColumnConfig(width: &amp;quot;NARROW&amp;quot;),&lt;br /&gt; a!gridLayoutColumnConfig(width: &amp;quot;NARROW&amp;quot;),&lt;br /&gt; a!gridLayoutColumnConfig(width: &amp;quot;NARROW&amp;quot;),&lt;br /&gt; a!gridLayoutColumnConfig(width: &amp;quot;NARROW&amp;quot;),&lt;br /&gt; a!gridLayoutColumnConfig(width: &amp;quot;NARROW&amp;quot;),&lt;br /&gt; a!gridLayoutColumnConfig(width: &amp;quot;NARROW&amp;quot;),&lt;br /&gt; a!gridLayoutColumnConfig(width: &amp;quot;NARROW&amp;quot;),&lt;br /&gt; a!gridLayoutColumnConfig(width: &amp;quot;NARROW&amp;quot;),&lt;br /&gt; a!gridLayoutColumnConfig(width: &amp;quot;NARROW&amp;quot;),&lt;br /&gt; a!gridLayoutColumnConfig(width: &amp;quot;NARROW&amp;quot;)&lt;br /&gt; },&lt;br /&gt; rows: {&lt;br /&gt; a!forEach(&lt;br /&gt; items: local!items,&lt;br /&gt; expression: a!gridRowLayout(&lt;br /&gt; contents: {&lt;br /&gt; a!textField(&lt;br /&gt; label: &amp;quot;Core&amp;quot; &amp;amp; fv!index,&lt;br /&gt; value: fv!item.id,&lt;br /&gt; saveInto: fv!item.id,&lt;br /&gt; align: &amp;quot;LEFT&amp;quot;,&lt;br /&gt; readOnly: true&lt;br /&gt; ),&lt;br /&gt; a!integerField(&lt;br /&gt; label: &amp;quot;Jan&amp;quot; &amp;amp; fv!index,&lt;br /&gt; value: fv!item.jan,&lt;br /&gt; saveInto: fv!item.jan,&lt;br /&gt; align: &amp;quot;RIGHT&amp;quot;&lt;br /&gt; ),&lt;br /&gt; a!integerField(&lt;br /&gt; label: &amp;quot;Feb&amp;quot; &amp;amp; fv!index,&lt;br /&gt; value: fv!item.feb,&lt;br /&gt; saveInto: fv!item.feb,&lt;br /&gt; align: &amp;quot;RIGHT&amp;quot;&lt;br /&gt; ),&lt;br /&gt; a!integerField(&lt;br /&gt; label: &amp;quot;Mar&amp;quot; &amp;amp; fv!index,&lt;br /&gt; value: fv!item.mar,&lt;br /&gt; saveInto: fv!item.mar,&lt;br /&gt; align: &amp;quot;RIGHT&amp;quot;&lt;br /&gt; ),&lt;br /&gt; a!integerField(&lt;br /&gt; label: &amp;quot;Apr&amp;quot; &amp;amp; fv!index,&lt;br /&gt; value: fv!item.apr,&lt;br /&gt; saveInto: fv!item.apr,&lt;br /&gt; align: &amp;quot;RIGHT&amp;quot;&lt;br /&gt; ),&lt;br /&gt; a!integerField(&lt;br /&gt; label: &amp;quot;May&amp;quot; &amp;amp; fv!index,&lt;br /&gt; value: fv!item.may,&lt;br /&gt; saveInto: fv!item.may,&lt;br /&gt; align: &amp;quot;RIGHT&amp;quot;&lt;br /&gt; ),&lt;br /&gt; a!integerField(&lt;br /&gt; label: &amp;quot;Jun&amp;quot; &amp;amp; fv!index,&lt;br /&gt; value: fv!item.jun,&lt;br /&gt; saveInto: fv!item.jun,&lt;br /&gt; align: &amp;quot;RIGHT&amp;quot;&lt;br /&gt; ),&lt;br /&gt; a!integerField(&lt;br /&gt; label: &amp;quot;Jul&amp;quot; &amp;amp; fv!index,&lt;br /&gt; value: fv!item.jul,&lt;br /&gt; saveInto: fv!item.jul,&lt;br /&gt; align: &amp;quot;RIGHT&amp;quot;&lt;br /&gt; ),&lt;br /&gt; a!integerField(&lt;br /&gt; label: &amp;quot;Aug&amp;quot; &amp;amp; fv!index,&lt;br /&gt; value: fv!item.aug,&lt;br /&gt; saveInto: fv!item.aug,&lt;br /&gt; align: &amp;quot;RIGHT&amp;quot;&lt;br /&gt; ),&lt;br /&gt; a!integerField(&lt;br /&gt; label: &amp;quot;Sep&amp;quot; &amp;amp; fv!index,&lt;br /&gt; value: fv!item.sep,&lt;br /&gt; saveInto: fv!item.sep,&lt;br /&gt; align: &amp;quot;RIGHT&amp;quot;&lt;br /&gt; ),&lt;br /&gt; a!integerField(&lt;br /&gt; label: &amp;quot;Oct&amp;quot; &amp;amp; fv!index,&lt;br /&gt; value: fv!item.oct,&lt;br /&gt; saveInto: fv!item.oct,&lt;br /&gt; align: &amp;quot;RIGHT&amp;quot;&lt;br /&gt; ),&lt;br /&gt; a!integerField(&lt;br /&gt; label: &amp;quot;Nov&amp;quot; &amp;amp; fv!index,&lt;br /&gt; value: fv!item.nov,&lt;br /&gt; saveInto: fv!item.nov,&lt;br /&gt; align: &amp;quot;RIGHT&amp;quot;&lt;br /&gt; ),&lt;br /&gt; a!integerField(&lt;br /&gt; label: &amp;quot;Dec&amp;quot; &amp;amp; fv!index,&lt;br /&gt; value: fv!item.dec,&lt;br /&gt; saveInto: fv!item.dec,&lt;br /&gt; align: &amp;quot;RIGHT&amp;quot;&lt;br /&gt; ),&lt;br /&gt; a!textField(&lt;br /&gt; label: &amp;quot;Total&amp;quot; &amp;amp; fv!index,&lt;br /&gt; value: dollar(sum(fv!item.jan, fv!item.feb, fv!item.mar,fv!item.apr,&lt;br /&gt; fv!item.may,fv!item.jun,fv!item.jul,fv!item.aug,&lt;br /&gt; fv!item.sep,fv!item.oct , fv!item.nov,fv!item.dec)),&lt;br /&gt; readOnly: true,&lt;br /&gt; align: &amp;quot;RIGHT&amp;quot;&lt;br /&gt; )&lt;br /&gt; },&lt;br /&gt; id:fv!index&lt;br /&gt; )&lt;br /&gt; ),&lt;br /&gt; a!gridRowLayout(&lt;br /&gt; contents: {&lt;br /&gt; a!richTextDisplayField(&lt;br /&gt; labelPosition: &amp;quot;COLLAPSED&amp;quot;,&lt;br /&gt; value: a!richTextItem(&lt;br /&gt; text: &amp;quot;Total&amp;quot;,&lt;br /&gt; style: &amp;quot;STRONG&amp;quot;&lt;br /&gt; )&lt;br /&gt; ),&lt;br /&gt; a!textField(&lt;br /&gt; value: &amp;quot;$&amp;quot; &amp;amp; sum(local!items.jan) &amp;amp; &amp;quot;.00&amp;quot;,&lt;br /&gt; readOnly: true,&lt;br /&gt; align: &amp;quot;RIGHT&amp;quot;&lt;br /&gt; ),&lt;br /&gt; a!textField(&lt;br /&gt; value: dollar(sum(local!items.feb)),&lt;br /&gt; readOnly: true,&lt;br /&gt; align: &amp;quot;RIGHT&amp;quot;&lt;br /&gt; ),&lt;br /&gt; a!textField(&lt;br /&gt; value: dollar(sum(local!items.mar)),&lt;br /&gt; readOnly: true,&lt;br /&gt; align: &amp;quot;RIGHT&amp;quot;&lt;br /&gt; ),&lt;br /&gt; a!textField(&lt;br /&gt; value: dollar(sum(local!items.apr)),&lt;br /&gt; readOnly: true,&lt;br /&gt; align: &amp;quot;RIGHT&amp;quot;&lt;br /&gt; ),&lt;br /&gt; a!textField(&lt;br /&gt; value: dollar(sum(local!items.may)),&lt;br /&gt; readOnly: true,&lt;br /&gt; align: &amp;quot;RIGHT&amp;quot;&lt;br /&gt; ),&lt;br /&gt; a!textField(&lt;br /&gt; value: dollar(sum(local!items.jun)),&lt;br /&gt; readOnly: true,&lt;br /&gt; align: &amp;quot;RIGHT&amp;quot;&lt;br /&gt; ),&lt;br /&gt; a!textField(&lt;br /&gt; value: dollar(sum(local!items.jul)),&lt;br /&gt; readOnly: true,&lt;br /&gt; align: &amp;quot;RIGHT&amp;quot;&lt;br /&gt; ),&lt;br /&gt; a!textField(&lt;br /&gt; value: dollar(sum(local!items.aug)),&lt;br /&gt; readOnly: true,&lt;br /&gt; align: &amp;quot;RIGHT&amp;quot;&lt;br /&gt; ),&lt;br /&gt; a!textField(&lt;br /&gt; value: dollar(sum(local!items.sep)),&lt;br /&gt; readOnly: true,&lt;br /&gt; align: &amp;quot;RIGHT&amp;quot;&lt;br /&gt; ),&lt;br /&gt; a!textField(&lt;br /&gt; value: dollar(sum(local!items.oct)),&lt;br /&gt; readOnly: true,&lt;br /&gt; align: &amp;quot;RIGHT&amp;quot;&lt;br /&gt; ),&lt;br /&gt; a!textField(&lt;br /&gt; value: dollar(sum(local!items.nov)),&lt;br /&gt; readOnly: true,&lt;br /&gt; align: &amp;quot;RIGHT&amp;quot;&lt;br /&gt; ),&lt;br /&gt; a!textField(&lt;br /&gt; value: dollar(sum(local!items.dec)),&lt;br /&gt; readOnly: true,&lt;br /&gt; align: &amp;quot;RIGHT&amp;quot;&lt;br /&gt; ),&lt;br /&gt; a!textField(&lt;br /&gt; /*value: &amp;quot;$&amp;quot; &amp;amp; local!forecast_cost &amp;amp; &amp;quot;.00&amp;quot;,*/&lt;br /&gt; value: dollar(sum(local!items.jan,local!items.feb,local!items.mar,local!items.apr,local!items.may,local!items.jun,&lt;br /&gt; local!items.jul,local!items.aug,local!items.sep,local!items.oct,local!items.nov,local!items.dec)),&lt;br /&gt; readOnly: true,&lt;br /&gt; validations: {if(&lt;br /&gt; sum(local!items.jan,local!items.feb,local!items.mar,local!items.apr,local!items.may,local!items.jun,&lt;br /&gt; local!items.jul,local!items.aug,local!items.sep,local!items.oct,local!items.nov,local!items.dec) &amp;lt; 1,&lt;br /&gt; &amp;quot;You must Enter atleast one Cost&amp;quot;,&lt;br /&gt; &amp;quot;&amp;quot;&lt;br /&gt; )},&lt;br /&gt; align: &amp;quot;RIGHT&amp;quot;&lt;br /&gt; )&lt;br /&gt; }&lt;br /&gt; )&lt;br /&gt; },&lt;br /&gt; rowHeader: 1&lt;br /&gt; )&lt;br /&gt;)&lt;/p&gt;
&lt;p&gt;######################################################################################################&lt;/p&gt;
&lt;p&gt;==========================&lt;/p&gt;
&lt;p&gt;CDT FIELDS:&lt;/p&gt;
&lt;p&gt;ID&lt;/p&gt;
&lt;p&gt;JAN&lt;/p&gt;
&lt;p&gt;FEB&lt;/p&gt;
&lt;p&gt;MAR&lt;/p&gt;
&lt;p&gt;APR&lt;/p&gt;
&lt;p&gt;MAY&lt;/p&gt;
&lt;p&gt;JUN&lt;/p&gt;
&lt;p&gt;JUL&lt;/p&gt;
&lt;p&gt;AUG&lt;/p&gt;
&lt;p&gt;SEP&lt;/p&gt;
&lt;p&gt;OCT&lt;/p&gt;
&lt;p&gt;NOV&lt;/p&gt;
&lt;p&gt;DEC&lt;/p&gt;
&lt;p&gt;==================================&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Advance Editable Grid - Insert, Delete and Update data in a CDT when users add, delete and make changes to grid rows</title><link>https://community.appian.com/thread/61028?ContentTypeID=1</link><pubDate>Wed, 03 Oct 2018 00:54:32 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:1b96377c-50af-4cd4-829e-39c107b64a51</guid><dc:creator>aloks0189</dc:creator><description>&lt;p&gt;Please find the inline answers to the requested queries below:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1. Can I call up data rows that were previously entered into the grid to show up in an editable grid in a later task in the process?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ans)&lt;/strong&gt;Yes you can, if the previously entered data is persisted into the Database (or) at least available in the process variable, then you can populate the previously entered data in a later task.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2a. When a user edits a row, can the data be immediately updated in the database through the CDT?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ans)&amp;nbsp;&lt;/strong&gt;Yes, data can be immediately updated into the database using the smart service function (i.e. either&amp;nbsp;&lt;em&gt;a!writeToDataStoreEntity(), a!writeToMultipleDataStoreEntities(), a!startProcess() which triggers a process to perform DB operation or using Web API Call&lt;/em&gt;) under the saveInto of the fields, but i would recommend persisting the changes upon button/task submit via process, to avoid multiple DB call, and also&amp;nbsp;it will be easy to monitor if any issue occurred. However requirement&amp;nbsp;may vary and hence implementation approach can also vary.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2b. When a user inserts a row, can the data be immediately inserted in the database through in the CDT?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ans)&amp;nbsp;&lt;/strong&gt;Yes, here again the approach can be same as &lt;strong&gt;2a&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2c. When a user deletes a row, can the data be immediately deleted from the database through the CDT?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ans)&amp;nbsp;&lt;/strong&gt;Yes,&amp;nbsp;here again the approach can be same as&amp;nbsp;&lt;strong&gt;2a &lt;/strong&gt;with only one&amp;nbsp;change, we need to use&amp;nbsp;&lt;em&gt;a!deleteFromDataStoreEntities()&lt;/em&gt; smart service function instead of&amp;nbsp;&lt;em&gt;a!writeToDataStoreEntity() or a!writeToMultipleDataStoreEntities()&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Also it will be worth checking&amp;nbsp;&lt;a href="https://docs.appian.com/suite/help/18.3/recipe_add_edit_and_remove_data_in_an_inline_editable_grid.html"&gt;this link&lt;/a&gt; to understand how an editable grid works while performing Create/Update/Delete Operation.&lt;/p&gt;
&lt;p&gt;Also i would recommend you to explore &lt;a href="https://docs.appian.com/suite/help/18.3/SAIL_Recipes.html"&gt;SAIL Recipes&lt;/a&gt;&amp;nbsp;in order to understand the core functionality and behavior of SAIL.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Hope this will help you.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>