2014-10-07 64 views
2

我有SharePoint 2010中开发自定义编辑表单它包含插入此标记一个ListFieldIterator:的SharePoint 2013 - 渲染内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有关。 我该如何解决这个问题?任何人都可以帮助我?谢谢,

法比奥

回答

0

对于其他人,这是试错的好日子的结果。这成功地创建一个表单字段并呈现它。陷阱是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() });