How can I have two different Paging Grids on the same interface?

Hi All,

I'm less than two weeks of working with SAIL and I have a paging grid on my interface (which is working as I want to).  Very happy about that, thanks mostly to the support I have received from this forum.  However, I need to include a different Paging Grid using a different data source into the same interface.  In the example code I used for the first Paging Grid (see SAIL code below), I defined the query for the grid data source in the with() function of the interface.  What I am now trying to find out is if I can have a second query defined in my with() so I can use for my second grid, and where I might place it (getting errors that I cannot us multiple datasubsets).  If not, how might I created a second Paging Grid and also define a query from a CDT as the data source for the second Paging Grid?

Thanks.

---

=load(
  local!pagingInfo: a!pagingInfo(
    startIndex: 1,
    batchSize: 20
   ),
  with(
    local!datasubset: a!queryEntity(
      entity: cons!CSHV_LINE_ITEM_CDT,
      query: a!query(
      selection: a!querySelection(columns: {
          a!queryColumn(field: "itemName"),
          a!queryColumn(field: "amount"),
          a!queryColumn(field: "qty"),
          a!queryColumn(field: "total"),
        }), 
      filter: a!queryFilter(
     field: "cashAdvnaceId.id",
     operator: "=",
     value: ri!CashAdvanceData.id
      ),
      pagingInfo: local!pagingInfo
      )
    ),
   
    ...

    ...

    ...

 


       

  Discussion posts and replies are publicly visible

Parents
  • Thanks all for your kind answers and code samples. I have set it up for two grids on a page thanks to you. Enjoy the rest of your day(s).
  • Hi friends,

    Is it possible to append two datasubsets and show it in the single grid which is total count differen?

    Business Case: Initially the application was task based , now client wants it to be record based.
    I have added the related actions.
    Now I want to show all the active tasks from old report ( which is from task based ), new tasks from the related actions .
    I am unable to do this because of the total count issue.

    In my old report I have 3 tasks and new report I have 6 tasks.
    And if suppose I give the batchsize=3 .

    I am getting the below error
    A grid component [label=“”] has an invalid value for “value” and “totalCount”. “startIndex” must not be greater than “totalCount”, but “startIndex” was 4 and “totalCount” was 3.



    Here is code

    load(local!pagingInfo: a!pagingInfo(
    startIndex: 1,
    batchSize:3
    ),


    with(

    /* Fetching the datasubsets here */

    local!tempData:append(index(local!datasubsetOldTaskList,"data"),
    index(local!datasubsetNewTaskList,"data")
    ),
    local!tempDataSubset: todatasubset(
    local!tempData, local!pagingInfo
    ))
  • Hi,

    It is possible to combine datasubsets, such as the following:

    =load(
      local!ds1: rule!query1(),
      local!ds2: rule!query2(),
      local!pagingInfo: topaginginfo(1,10),
      with(
        local!datasubset: todatasubset(
           {
             local!ds1.data,
             local!ds2.data
           },
           local!pagingInfo
        ),
        a!gridField(
          value: local!pagingInfo,
          saveInto: local!pagingInfo,
          totalCount: local!datasubset.totalCount,
          columns: {...}
        )
      )
    )

    However, this requires querying all data up front, so whenever possible you should look into using a view to combine the datasets you are working with rather than doing it like this on-form.

Reply
  • Hi,

    It is possible to combine datasubsets, such as the following:

    =load(
      local!ds1: rule!query1(),
      local!ds2: rule!query2(),
      local!pagingInfo: topaginginfo(1,10),
      with(
        local!datasubset: todatasubset(
           {
             local!ds1.data,
             local!ds2.data
           },
           local!pagingInfo
        ),
        a!gridField(
          value: local!pagingInfo,
          saveInto: local!pagingInfo,
          totalCount: local!datasubset.totalCount,
          columns: {...}
        )
      )
    )

    However, this requires querying all data up front, so whenever possible you should look into using a view to combine the datasets you are working with rather than doing it like this on-form.

Children
No Data