During a project I created a very complex custom newform.aspx / editform.aspx.
Usually a custom RenderingTemplate uses the < SharePoint:ListFieldIterator ID="ListFieldIterator1" runat="server"/> control to automatically iterate all fields belonging to that list.
But if you use field controls yourself, the ListFieldIterator is so smart not to render that field again.
In my case I had to use the same field two times in different views in a multipage tab strip scenario.
Within the first view I used this tag:
< SharePoint:TextField ID="TextFieldViewA" runat="server" FieldName="TestField" />
In the second view this one:
< SharePoint:TextField ID="TextFieldViewB" runat="server" FieldName="TestField" />
When rendering the custom page, SharePoint will only respond to changes on the second field. Somehow SharePoint uses the latest control in the control collection to update and persist the changes.
If I enter some text in the second control then save the changes and reopen the item. Both tags will render the field value. But if I enter some text in the first control it won't save the changes.
My workaround was in the code behind. If a certain condition appeared. For instance, the View A was selected. I copy the TextFieldViewA.Value to the TextFieldViewB.Value which will get persisted on the item.
It would be interesting to find out the reason, why the first control is not able to persist the changes to the item. Leave me a note if you know more.
Usually a custom RenderingTemplate uses the < SharePoint:ListFieldIterator ID="ListFieldIterator1" runat="server"/> control to automatically iterate all fields belonging to that list.
But if you use field controls yourself, the ListFieldIterator is so smart not to render that field again.
In my case I had to use the same field two times in different views in a multipage tab strip scenario.
Within the first view I used this tag:
< SharePoint:TextField ID="TextFieldViewA" runat="server" FieldName="TestField" />
In the second view this one:
< SharePoint:TextField ID="TextFieldViewB" runat="server" FieldName="TestField" />
When rendering the custom page, SharePoint will only respond to changes on the second field. Somehow SharePoint uses the latest control in the control collection to update and persist the changes.
If I enter some text in the second control then save the changes and reopen the item. Both tags will render the field value. But if I enter some text in the first control it won't save the changes.
My workaround was in the code behind. If a certain condition appeared. For instance, the View A was selected. I copy the TextFieldViewA.Value to the TextFieldViewB.Value which will get persisted on the item.
It would be interesting to find out the reason, why the first control is not able to persist the changes to the item. Leave me a note if you know more.
Comments
Post a Comment