我在SharePoint 2010中开发了一个自定义编辑表单。它包含一个使用此标记插入的ListFieldIterator:
<SharePoint:ListFieldIterator ID="Test" runat="server" ControlMode="Edit" />
它正确运行,当显示表单时,它会显示列表中每个字段的输入字段,标签和说明。 现在,我尝试将此表单迁移到SharePoint 2013,但它不起作用。它正确呈现字段标签和描述,但不呈现输入字段。相反,我使用此标记获得空跨度:
<span id="WPQ2d28b528a-a28d-45a6-8709-153c43078463Title" data-sp-options="{"mode":2,"source":"Title"}" data-sp-control="SPFieldText"></span>
如果我尝试在自定义表单标记中插入FormField,它将正确呈现。问题似乎与ListFieldIterator有关。 我该如何解决这个问题?有人可以帮帮我吗?谢谢,
的Fabio
答案 0 :(得分:1)
对于其他任何人来说,这是一个好日子的反复试验的结果。这成功地创建了一个表单字段并呈现它。问题是DefaultValue部分。由于一个错误 - 没有设置,你得到一个空的渲染字符串。
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() });