Dynamic CDT

Hi All,
Is there any way to create the fields dynamically in cdt and then assign values.

I have a use case,
User will be uploading a excel and i need to show the excel data in grid format (excel can be different),So for that i am using readexceldata function and and I am trying to create a cdt with the column names and their respective row values (here column names are dynamic) to use that in the data field for grid field.

Ex:excel file has 2 columns A,B now the cdt will be an array of row data like {{A:first row A value,B:first row B value},{A:seconf row A value,B:second row B value}} and if the excel has 3 columsn as A,B,C then the expected cdt should be {{A:first row A value,B:first row B value,C:first row C value},{A:seconf row A value,B:second row B value,C:second row C value}} and use this cdt in gridfield data parameter.

Thanks in Advance,
SSP

  Discussion posts and replies are publicly visible

Parents Reply
  • Hi  I tried with the code you gave. I got  {a!map('Mentee GGID': "9008752"), a!map('Enter Mentor name': "Harikrishnan")} only 2 fileds I thinks that is because i have 2 data row but the column are 25. Can you help me understand what i did wrong?

     

    a!localVariables(
      /* Step 1: Read the data from the Excel file */
      local!excelData: index(
        index(
          readExcelSheet(
            excelDocument: ri!document,
            sheetNumber: 0,
            startRow: 2,
            numberOfColumns: 0
          ),
          "result",
          null
        ),
        "values",
        null
      ),
    
      /* Step 2: Extract headers from the first row */
      local!headers: index(
        index(
          readExcelSheet(
            excelDocument: ri!document,
            sheetNumber: 0,
            startRow: 1,
            numberOfColumns: 0
          ),
          "result",
          null
        ),
        "values",
        null
      ),
      local!firstRow:index(local!headers,1,null),
    
      /* Step 3: Map headers to each row’s values and prepare for database insert */
      local!rowsToInsert: a!forEach(
        items: local!excelData,
        expression: a!update(
          a!map(),
          local!firstRow[fv!index],
          fv!item[fv!index]
    
        )
      ),
    
    
      local!rowsToInsert
    
    
    )
    

Children