I've recently started creating a order form which will automatically fill in either the item description, product number, or unit price once selected either the product number or item description from the drop down box.
I made a smaller trial version of this form and it worked perfectly however adding all the possible 'actions' for when selecting from the drop down box took a very long time. The real order form will have a lot more items to choose from therefore will take even more time, which I don't have.
Is there a way to copy the actions I have for the first row (Product01, Description01, Unit01) for the rest of the rows in the order form, all I would need to change is the Product01 to Product02 etc etc.
This is what my table in my order form looks like:
Product No: | Description | Quantity | Unit Price | Total |
---|---|---|---|---|
PN01 | Description 01 | QTY 01 | UNIT 01 | TTL 01 |
PN02 | Description 02 | QTY 02 | UNIT 02 | TTL 01 |
PN03 | Description 03 | QTY 03 | UNIT 03 | TTL 03 |
PNO4 | Description 04 | QTY 04 | UNIT 04 | TTL 04 |
Field Names
Product No & Description are both drop down boxs
This is the code for one of the actions:
//- //+ GENERATED - DO NOT EDIT (ID:5F8FCFED-90F7-48DF-9CDA-91C02E1BC86F CRC:3737938537) //+ Type: Action //+ Result2: SetFieldValue("$Node3","tovalue","4.99") //+ Result1: SetFieldValue("$Node2","tovalue","Quality safety spectacles") //+ Node3: topmostSubform[0].Page1[0].UNIT_01[0] //+ Node2: topmostSubform[0].Page1[0].Description_01[0] //+ Node1: topmostSubform[0].Page1[0].PN01[0] //+ Condition1: ListField("$Node1","textselected","NB04B") //+ ActionName: PN01.change if ($.boundItem(xfa.event.newText) == "NB04B") { this.resolveNode("Description_01").rawValue = "Quality safety spectacles"; this.resolveNode("UNIT_01").rawValue = "4.99"; }
I just used an action builder to create these actions.
If someone could explain a way to copy these actions and apply it to each of the rows it would be a great help and very much appriciated!
Thanks
Views
Replies
Total Likes
Is your table a set size? Can you use JavaScript on your form? Is your form dynamic?
Ok, I'm going to guess at these things and hope this answers your questions. (I'm guessing "no", "yeah, duh!", and "yes".)
Make sure your form is dynamic and whatever subform houses the table is able to pagebreak and is flowed.
Create your table with one header row and one other row.
in that other row, add your drop down list in the first column and textfields in the others.
In the 'exit' event add the following code:
var rowNum = this.parent.instanceManager.count - 1;
if (!this.isNull && this.parent.instanceIndex == rowNum) this.parent.instanceManager.addInstance();
switch(this.rawValue){
case("PN01"):
this.parent.tfDescription.rawValue = "Description of PN01";
this.parent.tfUnitPrice = "15.00";
break;
case("PN02"):
this.parent.tfDescription.rawValue = "Description of PN02";
this.parent.tfUnitPrice = "5.00";
break;
case("PN03"):
this.parent.tfDescription.rawValue = "Description of PN03";
this.parent.tfUnitPrice = "25.00";
break;
//etc. for each PN
}
Of course, I don't know your prices, so I'm just guessing those and the variable names. Since you aren't adding product serial numbers, they should be strings. Make sure you put "quotes" around them in the case( ): lines
This code will automatically be added to each line in the table, and the table will add rows for you automatically. It will not add rows if the client is changing his/her selection. It will also not remove a line if the user decides to remove that choice. You can add a button for that if you'd like.
Views
Replies
Total Likes