トップ回答者
選択肢列の値を動的に更新したい

質問
-
MOSS2007のドキュメントライブラリに列を追加しました。
列の情報の種類は「選択肢(メニューから選択)」に設定し、その選択肢を、
一般ユーザから追加出来る様に設定しています。例えば「製品名」という列とし、ユーザが「Windows7」という選択肢を追加したとします。
ユーザが追加した選択肢を次回ドキュメントアップロード時に新たな選択肢として
表示されるように、選択肢の項目を動的に更新する方法などございますでしょうか?現状では「ビュー」で選択肢毎に表示するように設定しており、例えば
ユーザAが「Windows7」、ユーザBが「Windows 7」と入力した場合、ビューでは
別カテゴリという事で表示されてしまいます。2008年11月12日 4:42
回答
-
SPItemEventReceiverのItemAdded、ItemUpdatedにて、
以下のようなコードを実行して、ユーザーが追加した新しい選択肢を動的に
SPFieldChoice.Choicesへ
追加することが可能になると思いますが。。。
Code Snippetprivate void HowToGetOrSetSPFieldChoiceInfo(SPListItem li)
{
//SPListItemでSPFieldChoiceの現在の設定値の参照
string strProductName = ((SPFieldChoice)li.Fields["製品名"]).GetFieldValueAsText(li["製品名"]);
//SPFieldChoiceの参照
SPFieldChoice spFieldChoiceProductName = (SPFieldChoice)li.Fields["製品名"];//SPFieldChoiceの選択肢の追加
if (!spFieldChoiceProductName.Choices.Contains(strProductName))
{
spFieldChoiceProductName.Choices.Add(strProductName);//SPFieldChoiceの選択肢の追加のデータベースへのアップデート
spFieldChoiceProductName.Update();
}}
2008年11月20日 10:20
すべての返信
-
SPItemEventReceiverのItemAdded、ItemUpdatedにて、
以下のようなコードを実行して、ユーザーが追加した新しい選択肢を動的に
SPFieldChoice.Choicesへ
追加することが可能になると思いますが。。。
Code Snippetprivate void HowToGetOrSetSPFieldChoiceInfo(SPListItem li)
{
//SPListItemでSPFieldChoiceの現在の設定値の参照
string strProductName = ((SPFieldChoice)li.Fields["製品名"]).GetFieldValueAsText(li["製品名"]);
//SPFieldChoiceの参照
SPFieldChoice spFieldChoiceProductName = (SPFieldChoice)li.Fields["製品名"];//SPFieldChoiceの選択肢の追加
if (!spFieldChoiceProductName.Choices.Contains(strProductName))
{
spFieldChoiceProductName.Choices.Add(strProductName);//SPFieldChoiceの選択肢の追加のデータベースへのアップデート
spFieldChoiceProductName.Update();
}}
2008年11月20日 10:20