私のホームページには、ユーザーがリストのエントリをすばやく入力できるシンプルなWebパーツが必要です。
リストには、たとえば、タイトル(テキスト)、本文(リッチテキスト)、カテゴリ(ルックアップ)の3つのフィールドがあります。
標準のDataFormWebPartを使用したくないのは、リストの技術的な非表示フィールドも埋めるコードビハインドが少しあるためです(実際には、DataFormWebPartを除外していませんが、使用方法がわかりませんでした。コードビハインド付き)。
そこで、カスタムWebパーツの実装を開始しました。各フィールド入力を手動で処理する必要がないためFormField
、レンダリングコントロールを自動的に選択Value
し、正しい形式のプロパティを提供するコントロールを使用し始めました。
<SharePoint:FormField runat="server" id="fldTitle" FieldName="Title" />
このコードでは不十分です。listidを指定する必要があります。
<SharePoint:FormField runat="server" id="fldTitle" FieldName="Title" ListId="{title list guid}" />
これは非常に正しく機能しています。コードでにアクセスしfldTitle.Value
て、ユーザー入力を取得できます。
ただし、アクティブ化できる適切にパッケージ化およびデプロイされた機能にWebパーツを含める必要があります。Webパーツは常に同じリストをターゲットにしますが、リストは機能(ListInstance要素)でもインスタンス化されているため、事前にGUIDを知ることはできません。
私はいくつかの技術を使ってリストIDをその場で設定しようとしましたが、成功しませんでした。
また、SP dllを「反映」して、FormComponentクラスがListFormWebPartによって設定された「コンテキスト」を使用していることを確認しました。
最後に、私の質問は次のとおりです。
- ホームページにカスタム入力Webパーツを作成する正しい方法ですか(リストカスタムフォームではありません)?
- FormFieldの動作を維持するにはどうすればよいですか(適切なコントロールを選択し、入力とそのストレージ形式への変換を処理します)?
- カスタムListFormWebPartを作成する必要がありますか?
- ControlTemplatesで遊んでもいいですか?
助けてくれてありがとう...私はこの単純なケースに何日も苦労しています...