SharePointで新しいリストアイテムを作成するためのフォームをレンダリングするカスタムWebパーツを作成しています。 ListIdセットとControlMode.Newとsavebuttonを持つlistfielditeratorがあります。これは動作します!SharePoint ListfieldIteratorのデフォルト値
唯一の追加機能は、レンダリングされたフィールドコントロールに動的なデフォルト値を設定することです。私は次のように私はこれを達成できると思っていた:
のOnInitでは、イテレータの仕事をするために:
SPContext.Current.FormContext.FormMode = SPControlMode.New;
newFormIterator.ListId = SPContext.Current.Web.Lists["MyList"].ID;
newFormIterator.ItemContext = SPContext.GetContext(HttpContext.Current,0, newFormIterator.ListId, SPContext.Current.Web);
のOnInitまたは読み込み時やOnPrerenderでは、値を設定する:
TextField field = (TextField)newFormIterator.Fields["Customer"].FieldRenderingControl;
//field.ItemContext = newFormIterator.ItemContext;
//field.RenderContext = newFormIterator.ItemContext;
//field.ListItemFieldValue = settings.CustomerName;
field.Value = settings.CustomerName;
field.UpdateFieldValueInItem();
私が試してみましたコメント行もありますが、結果はありません。 UpdateFieldValueInItem()が呼び出されたときにfield.Itemがnullであるため、この問題は例外です。
質問:私は(通常のページ上のWebパーツに)listcontext外に適切にlistfielditeratorを使用するにはどうすればよい
- 。コンテキストがないのですか?
- リストのフィールドタイプフィールドで指定されている以外のリストフィールドテーターのフィールドにデフォルト値を設定するにはどうすればよいですか。
読む資源:
http://karinebosch.wordpress.com/sharepoint-controls/listfielditerator/
http://pholpar.wordpress.com/2009/12/
私が難しいやり方をして、OnPreRenderでcontroltreeをループして、TextFieldを検索したら、それを見つけて値を直接設定できます。これはうまくいきます:)しかし、なぜ上のシナリオがうまくいかないのか不思議です。 – Rene