2014-10-07 46 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() });