Recently I've posted following question on stackoverflow:
I have following request from my customer to be implemented in Acumatica:
- Create form which have input fields on top.
- Form should have first grid, which reacts on parameters on top
- Form should have second grid, which reacts on top parameters and grid 1.
- Form should have third grid, which reacts on top parameters and grid 1 and 2.
Acumatica has following master templates: Form2Detail.master, FormDetail.master, FormTab.master, FormView.master, ListView.master, TabDetail.master, Workspace.master. But there is nothing like Form3Detail.master. Also three grids are not available in T200, T300 manuals of Acumatica. So, my questions are the following:
a. How to create three grids?
b. Is it needed to create master page with three grids?
c. If answer on question 2 is yes, then how to include master page into customization?
PS I now how to make points 1 - 3. The challenge is with 4
For my surprise stackoverflow modersators decided to put on hold my question as to broad, and to my disappointment they considered my comments as not worthy of answering.
So, in order to preserve recipe of how to implement it I decided to leave it on my blog.
So, below goes an answer:
- If you want a form on top, you should choose a template that contains a master part.
- You can add multiple grids in ASPX code for a new screen, that's also possible in the project customizer.
- It's not template specific, where there's a grid you should be able to add another one below.
- Look for split containers if needed.
- You can inspect and view ASPX code of screens that contains multiple grids to help you.
- You need to use autocallback to refresh dependent grids, <AutoCallBack Target="gridName" Command="Refresh" />
Little bit more clarification is needed for second grid updating. In order for first grid to send updates to second one following elements are needed:
Take note how it can look in grid which sends notification:
<px:PXGrid ID="grdSender" runat="server" Style="z-index: 100;" Width="100%" Height="200px" SyncPosition="True" SkinID="DetailsInTab" DataSourceID="ds" TabIndex="18300" KeepPosition="True" TemporaryFilterCaption="Filter Applied" AutoCallBack-Target="gridReceiver" AutoCallBack-Command="Refresh" >
I've bolded important details.
grdSender will notify grdReceiver about need in refresh.