2009-05-19 10 views
0

SharePointでカスタムフィールドタイプを作成しようとしています。編集と作成モードでSharePointカスタムフィールドタイプを非表示

このコントロールの値は、同じリストの別のフィールドに基づいて設定されています。 この要件のため、このフィールドは表示モードでのみ表示され、編集モードまたは作成モードでは表示されません。

どうすればよいですか?

フィールドをレンダリングしないようにASCXコントロールをコーディングすれば、編集と作成モードでフィールドがこのように表示されます。

alt text http://www.mannsoftware.com/blog/Lists/Photos/121308_0204_CrossSiteLo6.png

答えて

0

ShowInEditFormプロパティとShowInNewFormプロパティを設定すると、これが解決されました。

1

は、一般的に、あなたは、任意のフィールドのために必要な動作を実現するためにTrueにSPField.ReadOnlyFieldプロパティを設定します。 (それに応じてSPField.Updateを忘れないでください!)リスト定義には同等のCAML属性があります。

BaseFieldControlから派生したコントロールクラスでは、RenderFieldForInput()メソッドをオーバーライドするだけで、ベースの実装を呼び出して、作成または編集中に何も表示されないようにすることができます。しかし、これはフィールドのテーブル行をフォームにレンダリングしますが、これはおそらくあなたが望むものではありません。したがって、望ましい動作を実行するには、ReadOnlyFieldを使用し、SPField(フィールドコントロールではない)クラスのUpdate()をオーバーライドして常にTrueに設定します。

+0

申し訳ありません...機能しません...または間違っていますか?これは私がSPFieldクラスに書いたものです: public override void Update() { this.ReadOnlyField = true; base.Update(); } – ashwnacharya

+0

すべてのコンストラクタでプロパティを設定するだけで、Update()の呼び出しや上書きは完全に無視されます。 (あなたのコンストラクタで必ず更新しないでください!) –

+0

試してみました...いいえ....編集ページの行はまだレンダリングされています。悪いことに、それはフィールドの値の更新を停止します。表示されるフィールドの値を変更すると値が変わらない.. – ashwnacharya

0

ちょうど、List SettingsAdvancedセクションに行くYesからAllow management of content types?を設定し、その後 'に自分のフィールドの値を変更するには、コンテンツタイプを編集して、リスト・バイ・リスト毎にこれを変更する方が簡単かもしれませんhidden '。

0

試してみて、などの隠しフィールドを設定しましたか? http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spfield.hidden.aspx

新しい項目と編集項目(NewForm.aspxとEditForm.aspx)のカスタムFORMSページは、これを実現する別の方法です。

+0

これはまた表示フォームのフィールドを非表示にしませんか?私は、OQに関してShowInEditFormとShowInNewFormを再強調することができます;) –

関連する問題