Set form fields to 'required' based on state

Hi all, I hope you can help me with this one: I have a workflow controlled Item with some properties set as required. When the Item reaches a certain state, some more properties should be made required. Until this state is reached these properties are also hidden, so I can't just make them required on the ItemType, as the user would have no way of entering data into the hidden fields. Showing / hiding the fields on a specific state is achieved using javascript, now I need to set them required, prevent saving the form if they are not filled and paint them blue to indicate they are mandatory. Any help on the matter will be greatly appreciated.   Best regards Carsten
Parents
  • Thanks Yoann, this was what I was looking for. Idadvertently I used the names of the form selects instead of the data source(doh!) For completeness sake and for future readers, here is my solution for the server method [edit]sorry for the formatting on the code, don't know how to make it nice[/edit]
    
    var inn = this.getInnovator();
    
    var niceFields = new List<KeyValuePair<string, string>>
    {
    new KeyValuePair<string, string>("part_number", "Part Number"),
    new KeyValuePair<string, string>("uom_dd", "Unit of Measure"),
    new KeyValuePair<string, string>("purch_man_dd", "Purchased / Manufactured"),
    new KeyValuePair<string, string>("lot_serial_dd", "Lot / Serial"),
    new KeyValuePair<string, string>("product_line_dd", "Product Line"),
    new KeyValuePair<string, string>("ksup_dd", "KSUP"),
    new KeyValuePair<string, string>("item_type_dd", "Item Type")
    };
    
    var lcState = this.getProperty("state");
    
    if (lcState == "Awaiting Part Details")
    {
    foreach (var partField in niceFields)
    {
    if (this.getProperty(partField.Key, "") == "")
    {
    return inn.newError("Please fill out " + partField.Value);
    }
    }
    }
    return this;
    
Reply
  • Thanks Yoann, this was what I was looking for. Idadvertently I used the names of the form selects instead of the data source(doh!) For completeness sake and for future readers, here is my solution for the server method [edit]sorry for the formatting on the code, don't know how to make it nice[/edit]
    
    var inn = this.getInnovator();
    
    var niceFields = new List<KeyValuePair<string, string>>
    {
    new KeyValuePair<string, string>("part_number", "Part Number"),
    new KeyValuePair<string, string>("uom_dd", "Unit of Measure"),
    new KeyValuePair<string, string>("purch_man_dd", "Purchased / Manufactured"),
    new KeyValuePair<string, string>("lot_serial_dd", "Lot / Serial"),
    new KeyValuePair<string, string>("product_line_dd", "Product Line"),
    new KeyValuePair<string, string>("ksup_dd", "KSUP"),
    new KeyValuePair<string, string>("item_type_dd", "Item Type")
    };
    
    var lcState = this.getProperty("state");
    
    if (lcState == "Awaiting Part Details")
    {
    foreach (var partField in niceFields)
    {
    if (this.getProperty(partField.Key, "") == "")
    {
    return inn.newError("Please fill out " + partField.Value);
    }
    }
    }
    return this;
    
Children
No Data