What?
A really quick article on how to hide these using CSS... at least until Zoho have this as a setting using the GUI.

Why?
Our use-case is that we have a subform which gets autopopulated with a list of services. The client does not want their operations team adding/deleting rows and instead simply specifying quantity (defaulting to zero) alongside each serviceable item.

How?
So at time of print, this is the only way I know: add a note field to inject some CSS into it and hide the delete icon as well as the "Add new row" link.

  1. In Design mode: Add a special field of type "Add Notes" to your form. I'm going to call it CSS_Overrides. It is important that this field will never be hidden (it cannot be seen on the front-end of the application but it must not be removed by Creator). If you know the code to remove this field, then you know what I mean.
    Zoho Creator: Disable/Hide the add and delete subform row options: Add Notes Field

  2. In Workflow mode: add a workflow to the form whenever it is created or edited, on load of the form; I call mine "OnLoad". For Deluge Script, add the following:
    //
    // CSS overrides
    v_CssNotes = "<style>";
    //
    // this line hides the delete/cross icon next to each row
    v_CssNotes = v_CssNotes + ".subformRow .form-group{display:none;}";
    //
    // this line hides the "add new row" from every subform.  
    v_CssNotes = v_CssNotes + ".zc-subform-addnew a{display:none !important;}";
    //
    // close off the CSS style tag
    v_CssNotes = v_CssNotes + "</style>";
    //
    // add to the notes field (also overrides the displayed note of "Add your Note here...")
    input.CSS_Overrides = v_CssNotes;

Additional
  • If you don't want to apply this to the every subform on that form, you will need to brush up a little on your CSS with regard to referring to elements by ID, so for example, if my subform is called "Item Details", then I would adjust the code to something like the following:
    //
    // CSS overrides
    v_CssNotes = "<style>";
    v_CssNotes = v_CssNotes + ".subformRow .form-group{display:none;}";
    //
    // this line hides the "add new row" link of the subform "Item Details".  
    v_CssNotes = v_CssNotes + "#Item_Details_addNewLine a{display:none !important;}";
    v_CssNotes = v_CssNotes + "</style>";
    input.CSS_Overrides = v_CssNotes;