Sharepoint 2013 SharePoint 2013-在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 2010中开发的自定义编辑表单。它包含插入此标记的ListFieldIterator:

<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() });