Sharepoint 2013 SharePoint 2013-在ListFieldIterator内部呈现
我有一个在SharePoint 2010中开发的自定义编辑表单。它包含插入此标记的ListFieldIterator:Sharepoint 2013 SharePoint 2013-在ListFieldIterator内部呈现,sharepoint-2013,Sharepoint 2013,我有一个在SharePoint 2010中开发的自定义编辑表单。它包含插入此标记的ListFieldIterator: <SharePoint:ListFieldIterator ID="Test" runat="server" ControlMode="Edit" /> <span id="WPQ2d28b528a-a28d-45a6-8709-153c43078463Title" data-sp-options="{"mode":2,"source":"Title"}"
<SharePoint:ListFieldIterator ID="Test" runat="server" ControlMode="Edit" />
<span id="WPQ2d28b528a-a28d-45a6-8709-153c43078463Title" data-sp-options="{"mode":2,"source":"Title"}" data-sp-control="SPFieldText"></span>
它运行正常,当窗体显示时,它会显示“我的列表”中每个字段的输入字段、标签和说明。
现在我正在尝试将此表单迁移到SharePoint 2013,但它不起作用。它可以正确渲染字段标签和描述,但不会渲染输入字段。相反,我使用以下标记获取空跨度:
<SharePoint:ListFieldIterator ID="Test" runat="server" ControlMode="Edit" />
<span id="WPQ2d28b528a-a28d-45a6-8709-153c43078463Title" data-sp-options="{"mode":2,"source":"Title"}" data-sp-control="SPFieldText"></span>
如果我尝试在自定义表单标记中插入FormField,它将正确呈现。问题似乎与ListFieldIterator有关。
我如何解决这个问题?有人能帮我吗?谢谢
法比奥对于其他任何人来说,这都是一天好的尝试和错误的结果。这将成功创建一个表单字段并对其进行渲染。gotcha是DefaultValue部分。由于一个bug-不要设置它,你会得到一个空的渲染字符串
int id = 1;
FormField formField = new FormField();
formField.ControlMode = SPControlMode.New;
formField.ListId = SPContext.Current.List.ID;
formField.FieldName = "Title";
SPContext context = SPContext.Current;
formField.RenderContext = context;
formField.ItemContext = context;
formField.ID = String.Format("ff1{0}", field.Id.ToString());
StringWriter s = new StringWriter();
HtmlTextWriter h = new HtmlTextWriter(s);
formField.Value = field.DefaultValue;
formField.RenderControl(h);
//inputCell.Controls.Add(formField);
inputCell.Controls.Add(new Literal() { Text = s.ToString() });