SharePoint 2013 - 在ListFieldIterator中呈现

时间:2014-10-07 10:39:05

标签: sharepoint-2013

我在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

1 个答案:

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