add grid again when i click addrow an remove the grid

Hi i have written code like this to get a grid it's a editable grid and for this now when i click add row then complete grid has to be added 

how can i write logic for it can anyone help on this 

a!gridLayout(
      labelPosition: "COLLAPSED",
      headerCells: {
        a!gridLayoutHeaderCell(
          align: "LEFT"
        ),
        a!gridLayoutHeaderCell(
          align: "LEFT"
        )
      },
      columnConfigs: {
        a!gridLayoutColumnConfig(
          width: "DISTRIBUTE",
          weight: 5
        ),
        a!gridLayoutColumnConfig(
          width: "DISTRIBUTE",
          weight: 3
        )
      },
      rows: a!forEach(
        items: ri!crAPPContractExtension_cdt,
        expression: with(
          local!SingleREFContractExtension_cdt: index(
            ri!crREFContractExtension_cdt,
            wherecontains(
              fv!item.extensionRefId_int,
              ri!crREFContractExtension_cdt.id_int
            ),
            {}
          ),
          a!gridRowLayout(
            contents: {
              a!textField(
                value: fv!item.fieldName_txt,
                readOnly: true()
              ),
              choose(
                if(
                  index(
                    local!SingleREFContractExtension_cdt,
                    "fieldType_txt",
                    {}
                  ) = cons!CR_APP_USERINPUTFIELD_IDENTIFIERS[12],
                  1,
                  if(
                    index(
                      local!SingleREFContractExtension_cdt,
                      "fieldType_txt",
                      {}
                    ) = cons!CR_APP_USERINPUTFIELD_IDENTIFIERS[1],
                    2,
                    if(
                      index(
                        local!SingleREFContractExtension_cdt,
                        "fieldType_txt",
                        {}
                      ) = cons!CR_APP_USERINPUTFIELD_IDENTIFIERS[3],
                      3,
                      if(
                        index(
                          local!SingleREFContractExtension_cdt,
                          "fieldType_txt",
                          {}
                        ) = cons!CR_APP_USERINPUTFIELD_IDENTIFIERS[5],
                        4,
                        if(
                          index(
                            local!SingleREFContractExtension_cdt,
                            "fieldType_txt",
                            {}
                          ) = cons!CR_APP_USERINPUTFIELD_IDENTIFIERS[4],
                          5,
                          if(
                            contains(
                              split(
                                index(
                                  local!SingleREFContractExtension_cdt,
                                  "fieldType_txt",
                                  {}
                                ),
                                ": "
                              ),
                              cons!CR_APP_USERINPUTFIELD_IDENTIFIERS[7]
                            ),
                            6,
                            7
                          )
                        )
                      )
                    )
                  )
                ),
                choice1: a!radioButtonField(
                  choiceLabels: cons!CR_APP_TXT_CHOICE_LABELS_YES_NO,
                  choiceValues: touniformstring(
                    cons!CR_APP_INT_CHOICE_VALUES
                  ),
                  choiceLayout: "COMPACT",
                  value: fv!item.value_txt,
                  saveInto: fv!item.value_txt,
                  disabled: ri!IsReadOnly_bool
                ),
                choice2: a!textField(
                  value: fv!item.value_txt,
                  saveInto: fv!item.value_txt,
                  readOnly: if(
                    index(
                      local!SingleREFContractExtension_cdt,
                      "readOnlyFlag_int",
                      {}
                    ) = 1,
                    true(),
                    false()
                  )
                ),
                choice3: a!dateField(
                  value: fv!item.value_txt,
                  saveInto: fv!item.value_txt,
                  readOnly: if(
                    index(
                      local!SingleREFContractExtension_cdt,
                      "readOnlyFlag_int",
                      {}
                    ) = 1,
                    true(),
                    false()
                  )
                ),
                choice4: a!integerField(
                  value: fv!item.value_txt,
                  saveInto: fv!item.value_txt,
                  readOnly: if(
                    index(
                      local!SingleREFContractExtension_cdt,
                      "readOnlyFlag_int",
                      {}
                    ) = 1,
                    true(),
                    false()
                  ),
                  validations: rule!CR_Fn_setMaximumLengthForInteger(
                    inputText_txt: fv!item.value_txt,
                    maxLength_int: 7
                  )
                ),
                choice5: a!integerField(
                  value: fv!item.value_txt,
                  saveInto: fv!item.value_txt,
                  validations: rule!CR_Fn_setMaximumLengthForInteger(
                    inputText_txt: fv!item.value_txt,
                    maxLength_int: 7
                  ),
                  readOnly: if(
                    index(
                      local!SingleREFContractExtension_cdt,
                      "readOnlyFlag_int",
                      {}
                    ) = 1,
                    true(),
                    false()
                  )
                ),
                choice6: a!dropdownField(
                  labelPosition: "COLLAPSED",
                  placeholderLabel: cons!CR_APP_TXT_PLACEHOLDER_VALUE,
                  choiceLabels: remove(
                    split(
                      split(
                        index(
                          local!SingleREFContractExtension_cdt,
                          "fieldType_txt",
                          {}
                        ),
                        ":"
                      ),
                      ";"
                    ),
                    1
                  ),
                  choiceValues: remove(
                    split(
                      split(
                        index(
                          local!SingleREFContractExtension_cdt,
                          "fieldType_txt",
                          {}
                        ),
                        ":"
                      ),
                      ";"
                    ),
                    1
                  ),
                  value: fv!item.value_txt,
                  saveInto: fv!item.value_txt
                ),
                choice7: a!textField(
                  value: fv!item.value_txt,
                  saveInto: fv!item.value_txt
                )
              )
            }
          )
        )
      ),
      shadeAlternateRows: true,
      addRowLink: a!dynamicLink(
        value: true(),
        label: "Add Contract",
        saveInto: {
          a!save(
            ri!crAPPContractExtension_cdt,
           append(
             ri!crAPPContractExtension_cdt,
             'type!{urn:com:appian:types:NBF}CR_APP_ContractExtension'()
           )
          )
        }
      )
    )
this is the code for that grid.. even want to remove then complete grid has to be removed 

  Discussion posts and replies are publicly visible