Skip to main content
10-Marble
April 15, 2024
Solved

Need to get selected rows from a Custom MVC table in a formProcessor

  • April 15, 2024
  • 2 replies
  • 2143 views

I am using Windchill PDMLink Release 12.1 and Datecode with CPS 12.1.2.8

I have a 3 Multiple Wizards a on a custom action , in each wizard page I have a different MVC table on which I'm rendering data using Custom Bean object . When I'm submitting the wizard form , I want to get the rows selected in the MVC table in 3rd wizard page in Formprocessor. I'm not getting the values using nmcommandbean object . Please help me if there is any other way to get these values.

Best answer by SVG_10111100101

Hello Charles,

 I managed to get the data what I need in Oid String . My problem got resolved . Thank you so much for your help.

 

I have extended the NmObject to my custom Bean created a URL encoded Json Object and setting that as Oid. In the Json object I have input all the needed data.   Below is the code I used. I got the values in formprocessor using getNmOidSelected().

 

public class customBean extends NmObject {

String partNumber;
String partName;
String partState;
String locationName;
String clientNumber;
String plantNumber;
boolean nonSelectableRow;

public customBean () {

}

public customBean (WTPart selectedPart, WTPart selectedDownStreamSystem, boolean updateFlag,String traType)
{
updateNmOid(selectedPart, selectedDownStreamSystem, updateFlag,traType);
}

private void updateNmOid(WTPart selectedPart, WTPart selectedDownStreamSystem,String traType)
{
NmSimpleOid simpleOid = new NmSimpleOid();
JSONObject joNmOid = new JSONObject();
try {
joNmOid.put("selectedPartOid", selectedPart.getPersistInfo().getObjectIdentifier().toString());
joNmOid.put("selectedDssOid", selectedDownStreamSystem.getPersistInfo().getObjectIdentifier().toString());
joNmOid.put("updateFlag", updateFlag);
joNmOid.put("transferType", traType);

String encodedBeanKey = Base64.encodeBase64URLSafeString(joNmOid.toString().getBytes());
simpleOid.setInternalName(encodedBeanKey);
} catch (JSONException ex) {

ex.printStackTrace();
}

setOid(simpleOid);
}

}

 

2 replies

1-Visitor
April 18, 2024

Add a hidden input field in your form for each row in the MVC table. This hidden field will store the row ID or any other relevant identifier. Use JavaScript to capture the submit button click and populate the hidden field with the row ID corresponding to the clicked button. When the form is submitted, the hidden field value will be included in the request parameters. When the form is submitted, the hidden field value will be included in the request parameters. 

18-Opal
May 2, 2024

Hello SG_9899099,

Was the information provided helpful somehow ?

KR,

Charles.

SVG_1011110010110-MarbleAuthorAnswer
10-Marble
May 3, 2024

Hello Charles,

 I managed to get the data what I need in Oid String . My problem got resolved . Thank you so much for your help.

 

I have extended the NmObject to my custom Bean created a URL encoded Json Object and setting that as Oid. In the Json object I have input all the needed data.   Below is the code I used. I got the values in formprocessor using getNmOidSelected().

 

public class customBean extends NmObject {

String partNumber;
String partName;
String partState;
String locationName;
String clientNumber;
String plantNumber;
boolean nonSelectableRow;

public customBean () {

}

public customBean (WTPart selectedPart, WTPart selectedDownStreamSystem, boolean updateFlag,String traType)
{
updateNmOid(selectedPart, selectedDownStreamSystem, updateFlag,traType);
}

private void updateNmOid(WTPart selectedPart, WTPart selectedDownStreamSystem,String traType)
{
NmSimpleOid simpleOid = new NmSimpleOid();
JSONObject joNmOid = new JSONObject();
try {
joNmOid.put("selectedPartOid", selectedPart.getPersistInfo().getObjectIdentifier().toString());
joNmOid.put("selectedDssOid", selectedDownStreamSystem.getPersistInfo().getObjectIdentifier().toString());
joNmOid.put("updateFlag", updateFlag);
joNmOid.put("transferType", traType);

String encodedBeanKey = Base64.encodeBase64URLSafeString(joNmOid.toString().getBytes());
simpleOid.setInternalName(encodedBeanKey);
} catch (JSONException ex) {

ex.printStackTrace();
}

setOid(simpleOid);
}

}

 

10-Marble
February 3, 2025

@SVG_10111100101 

I am more interested with this solution approach . i have a question on your code , how did you managed to get the below selected objects in your  table builder custom bean class. 
I believe you used the custom bean to render the data in your custom table builder columns . 

selectedPart
selectedDownStreamSystem
traType