カスタム選択フィールド定義の<MAPPINGS> CAML要素の目的

11
BlueSoul 2011-10-15 01:45.

このトピックに対する明確な答えはまだ見つかっていないので、誰かが私の目標を達成するための正しい方法を説明してくれることを願って、この質問を書いています。 また、すべてのテストがSharePoint 2007で行われたことを追加する必要があり ます、私が知る限り、2010バージョンを使用した場合の動作は同じである必要があります。 編集:SP 2010でいくつかのテストを実施しましたが、動作が同じように見えることを確認できました。

前提:ローカリゼーションをサポートするカスタム選択フィールドを構築しようとしていました。選択ラベルは現在のロケールに基づいて変更されるため(SP 2010多言語を少し忘れて、1言語のWebサイトのみが使用されていると仮定します)、カスタムフィールドにロケールに依存しない値を実装する方法を探し始めました。 、従来のASP選択コントロールで使用される古典的な「id-value」概念のようなもの。

このページ(ここにもリンクされています)で<MAPPINGS>、FieldCAML要素スキーマによって定義されたタグへの参照を見つけました。このページには、「Choiceフィールド内に表示される選択肢への値のマッピングが含まれています」というタグが記載されています。

ここでの参照として、リンクされたページから取得したサンプルフィールド定義を示します。

<Field ID="{c15b34c3-ce7d-490a-b133-3f4de8801b76}" Type="Choice" Name="Status" DisplayName="$Resources:core,Tasks_Status;" SourceID="http://schemas.microsoft.com/sharepoint/v3" StaticName="Status"> <CHOICES> <CHOICE>$Resources:core,Tasks_NotStarted;</CHOICE>
   <CHOICE>$Resources:core,Tasks_InProgress;</CHOICE> <CHOICE>$Resources:core,Tasks_Completed;</CHOICE>
   <CHOICE>$Resources:core,Tasks_Deferred;</CHOICE> <CHOICE>$Resources:core,Tasks_Waiting;</CHOICE>
</CHOICES>
<MAPPINGS>
   <MAPPING Value="1">$Resources:core,Tasks_NotStarted;</MAPPING> <MAPPING Value="2">$Resources:core,Tasks_InProgress;</MAPPING>
   <MAPPING Value="3">$Resources:core,Tasks_Completed;</MAPPING> <MAPPING Value="4">$Resources:core,Tasks_Deferred;</MAPPING>
   <MAPPING Value="5">$Resources:core,Tasks_Waiting;</MAPPING> </MAPPINGS> <Default>$Resources:core,Tasks_NotStarted;</Default>

ご覧のとおり、サンプルではローカライズされる5つの選択肢を定義してから、それらを1から5までの値にマップします。

問題は、カスタムコードからマップされた値を読み取ることができなかったことです。フィールド読み取りメソッドのいずれも期待値を返しませんでした。CAMLフィールド定義によって定義されたすべてのマッピングは単に無視されているように思われます。

一部の情報源によると、タグは開発者側には実際の影響はなく、SharePointによってコンテンツデータベースに保存されている値にのみ影響します。 編集:さらにいくつかの発掘の後、コンテンツデータベースにはマップされていないデータのみが含まれているように見えるので、このオプションは使用できないようです

他の人はそれをあなたの特徴ファイルの宇宙エネルギーの流れを強化するために使用できる風水の形として示していますが、誰も具体的な答えを持っていないようです。

このタグの用途を知っている人はいますか?

PS:SPFieldMultiChoice.Mappingsプロパティの使用を検討し、拡張メソッドを構築して、フィールド選択の「テキスト」をマップされた値にデコードするロジックを実装しました(これができるはずです。プロパティには完全なxmlマッピングノードが含まれています)フィールド定義から取得)が、このソリューションを試す前に、タグの使用法を誤解していないかどうかを知りたいと思います。


編集:私はこのトピックについてさらに調査を行いました。具体的な答えは見つかりませんでしたが(誰かがmsdnで同じ質問をしているようですが、運が悪かったようです...)、タグは確かに洗練された形の風水である可能性があると信じ始めています。

HealtRuleScopeフィールドのOOB定義を見てください。

<?xml version="1.0" encoding="utf-16"?>
<Field ID="{E59F08C9-FA34-4f94-A00A-F6458B1D3C56}" Name="HealthRuleScope" DisplayName="Scope" Type="Choice" Description="..." Group="_Hidden" SourceID="http://schemas.microsoft.com/sharepoint/v3/fields" StaticName="HealthRuleScope" AllowDeletion="FALSE" Required="TRUE">
   <CHOICES>
      <CHOICE>All Servers</CHOICE>
      <CHOICE>Any Server</CHOICE>
   </CHOICES>
   <MAPPINGS>
      <MAPPING Value="1">All Servers</MAPPING>
      <MAPPING Value="2">Any Server</MAPPING>
   </MAPPINGS>
   <Default>Any Server</Default>
</Field>

この定義は、SharePoint Managerツールを使用して中央管理Webサイトのサイト列から取得されました(カスタムアプリケーションでも同じことができますが、何も再発明する必要はありません)。ご覧のとおり、14フォルダーのfield.xml機能定義に従って、MAPPINGセクションはまだ存在しています。

サーバーの全体管理の[ヘルスルール]リストの同じフィールドを見ると(SharePoint Manager 2010などのツールを使用)、マッピングセクション全体が欠落していることがわかります。この場合、マッピングISNはリストインスタンスの子フィールドに伝播されていないように見えます。一方、マッピングセクションを使用するフィールドのカスタム機能を構築しようとしましたが、情報をリストに伝達することができました(マップされた値を取得することはできませんでした)。SharePointオブジェクトモデルで必要なときにマッピング情報が親フィールドから読み取られる可能性はありますが、今のところ、この機能は単に実装されていないと思い始めています... LinqToSharePointマッピングでさえ使用されていないようですそれ:

public enum Scope : int {   
   None = 0,    
   Invalid = 1,

   [Microsoft.SharePoint.Linq.ChoiceAttribute(Value="All Servers")]
   AllServers = 2,  
   [Microsoft.SharePoint.Linq.ChoiceAttribute(Value="Any Server")]
   AnyServer = 4,
}

編集:アミットが彼の答えで示唆したように、私は公式の「コラボレーティブアプリケーションマークアップ言語(CAML)構造仕様」ドキュメントをざっと見ました。ドキュメントの最新バージョンがスキーマ要素への参照を削除したことは確かに疑わしいです-それは要素が実際に未使用/実装されていないことを示している可能性があります。反対に、HealthRuleScopeフィールドはマッピング宣言を使用します-そして私が知る限り、それはSP2010でのみ導入されました...

3 answers

3
Amit Kumawat 2011-11-30 04:36.

詳細について<Mappings>は、[MS-WSSCAML]:Collaborative Application Markup Language(CAML)Structure SpecificationV0.1を参照してください。

" MAPPINGS:MAPPING要素で指定された値を持つ対応するCHOICEの正規の言語に依存しない識別子を表すMAPPING文字列要素のセット。Type属性がChoiceまたはMultiChoiceでない場合、リーダーはMAPPINGSを無視する必要があります。ライターはMAPPINGSを省略すべきです。 Type属性はChoiceまたはMultiChoiceではありません。」

"2.3.2.13MAPPINGDEFINITIONSタイプMAPPINGDEFINITIONSタイプは1つ以上のMAPPINGSのコンテナです
。ChoiceまたはMultiChoice以外のフィールドにはMAPPINGSを定義しないでください。ChoiceフィールドにMAPPINGDEFINITION要素を定義してはいけません。対応する各CHOICE要素」

仕様の最新(およびすべて)バージョンはここにあります: http://msdn.microsoft.com/en-us/library/cc313121(v=office.12).aspx。しかし、最新バージョンには情報がありません<Mappings>!!

2
BlueSoul 2012-12-08 00:31.

結局、私はStuartによって提案された指示に従い、これをさらに別のSharePointブラックホールとしてマークしたので、このCAMLタグを最後に使用するという希望を今のところ残しました。

調査中にフレームワークの多くのクラスを調べましたが、マッピングの「属性」の使用に関連するものが見つからないため、未完成の機能であると推測できます。SP2013で変更されるかどうかを確認します。

そうは言っても、FieldオブジェクトのMappingsプロパティを利用して、マッピングxmlを手動で解析し、期待される動作をシミュレートする代替ソリューションをテストしました。MUIのサポートが開始されると、それはすぐに手に負えなくなったので、結局私もその道を離れました(ダイアログなどに関連する問題があるようですが、それは私が当時経験していた他の問題に依存している可能性があります一部のCUは間違った順序で適用されているため、これを一粒の塩と一緒に使用してください)。

0
CigarDoug 2013-12-05 04:10.

複数選択が許可されていないSPFieldChoice "Status"でリスト "Resources"(objList)の例を使用します。objItemは、Statusフィールドのインデックスを知りたいobjList内のアイテムです。

int i;
i = ((SPFieldChoice)objList.Fields["Status"])Choices.IndexOf(objItem["Status"].ToString());

Related questions

MORE COOL STUFF

Reba McEntire は、彼女が息子の Shelby Blackstock と共有する「楽しい」クリスマスの伝統を明らかにしました:「私たちはたくさん笑います」

Reba McEntire は、彼女が息子の Shelby Blackstock と共有する「楽しい」クリスマスの伝統を明らかにしました:「私たちはたくさん笑います」

Reba McEntire が息子の Shelby Blackstock と共有しているクリスマスの伝統について学びましょう。

メーガン・マークルは、自然な髪のスタイリングをめぐってマライア・キャリーと結ばれました

メーガン・マークルは、自然な髪のスタイリングをめぐってマライア・キャリーと結ばれました

メーガン・マークルとマライア・キャリーが自然な髪の上でどのように結合したかについて、メーガンの「アーキタイプ」ポッドキャストのエピソードで学びましょう.

ハリー王子は家族との関係を修復できるという「希望を持っている」:「彼は父親と兄弟を愛している」

ハリー王子は家族との関係を修復できるという「希望を持っている」:「彼は父親と兄弟を愛している」

ハリー王子が家族、特にチャールズ王とウィリアム王子との関係について望んでいると主張したある情報源を発見してください。

ワイノナ・ジャッドは、パニックに陥った休暇の瞬間に、彼女がジャッド家の家長であることを認識しました

ワイノナ・ジャッドは、パニックに陥った休暇の瞬間に、彼女がジャッド家の家長であることを認識しました

ワイノナ・ジャッドが、母親のナオミ・ジャッドが亡くなってから初めての感謝祭のお祝いを主催しているときに、彼女が今では家長であることをどのように認識したかを学びましょう.

セントヘレナのジェイコブのはしごを登るのは、気弱な人向けではありません

セントヘレナのジェイコブのはしごを登るのは、気弱な人向けではありません

セント ヘレナ島のジェイコブズ ラダーは 699 段の真っ直ぐ上る階段で、頂上に到達すると証明書が発行されるほどの難易度です。

The Secrets of Airline Travel Quiz

The Secrets of Airline Travel Quiz

Air travel is far more than getting from point A to point B safely. How much do you know about the million little details that go into flying on airplanes?

Where in the World Are You? Take our GeoGuesser Quiz

Where in the World Are You? Take our GeoGuesser Quiz

The world is a huge place, yet some GeoGuessr players know locations in mere seconds. Are you one of GeoGuessr's gifted elite? Take our quiz to find out!

バイオニック読書はあなたをより速く読むことができますか?

バイオニック読書はあなたをより速く読むことができますか?

BionicReadingアプリの人気が爆発的に高まっています。しかし、それは本当にあなたを速読術にすることができますか?

誰かがこのナンバープレートを取得するために490万ドルを費やした

誰かがこのナンバープレートを取得するために490万ドルを費やした

著者による画像。(グラフィック:パガニ、エミレーツオークション)少数のナンバープレートは、UAEの主要なステータスシンボルです。

ドナルド・トランプは、攻撃用武器ではなく、シリア人に対する禁止案でオーランド銃乱射事件に対応します

ドナルド・トランプは、攻撃用武器ではなく、シリア人に対する禁止案でオーランド銃乱射事件に対応します

ドナルド・トランプは、「過激なイスラムテロに正直である」ことをすぐに祝福した後、トゥデイのショーに呼びかけ、日曜日の早朝に50人が死亡したような大量射殺を防ぐために何をすべきかについて話し合った。オーランドのパルスナイトクラブ。トランプは、情報収集の改善の必要性を強調しました(「何らかの理由で、彼らはこれらの人々を報告しておらず、間違っていることがたくさん起こっていることを知っています」と彼は言い、「彼ら」が誰であるかを明確にしませんでした)。

それにふたを置きます。実際、すべてに蓋をしてください。14ドルで12個のシリコンストレッチキッチン蓋を手に入れよう. [エクスクルーシブ]

それにふたを置きます。実際、すべてに蓋をしてください。14ドルで12個のシリコンストレッチキッチン蓋を手に入れよう. [エクスクルーシブ]

Tomorrow's Kitchen シリコンストレッチ蓋 12個パック | $14 | アマゾン | プロモーション コード 20OFFKINJALids は基本的にキッチンの靴下です。常に迷子になり、二度と閉じられない孤立したコンテナーが残ります。しかし、蓋が伸びて、残った容器、鍋、フライパン、さらには大きなスライスされた果物のすべてに適合するとしたらどうでしょうか? その非常に特殊な蓋を失うことを二度と心配する必要はありません。

あなたの最高のワシントン DC ハックを教えてください

あなたの最高のワシントン DC ハックを教えてください

このコラムでは、ロサンゼルスやラスベガスなど、いくつかの産業都市をハッキングしました。今こそ、軍産複合都市の時代です。

米国のフィギュア スケートは、チーム イベントでの最終決定の欠如に「苛立ち」、公正な裁定を求める

米国のフィギュア スケートは、チーム イベントでの最終決定の欠如に「苛立ち」、公正な裁定を求める

ロシアのフィギュアスケーター、カミラ・バリエバが関与したドーピング事件が整理されているため、チームは2022年北京冬季オリンピックで獲得したメダルを待っています。

Amazonの買い物客は、わずか10ドルのシルクの枕カバーのおかげで、「甘やかされた赤ちゃんのように」眠れると言っています

Amazonの買い物客は、わずか10ドルのシルクの枕カバーのおかげで、「甘やかされた赤ちゃんのように」眠れると言っています

何千人ものAmazonの買い物客がMulberry Silk Pillowcaseを推奨しており、現在販売中. シルクの枕カバーにはいくつかの色があり、髪を柔らかく肌を透明に保ちます。Amazonで最大46%オフになっている間にシルクの枕カバーを購入してください

パデュー大学の教授が覚醒剤を扱った疑いで逮捕され、女性に性的好意を抱かせる

パデュー大学の教授が覚醒剤を扱った疑いで逮捕され、女性に性的好意を抱かせる

ラファイエット警察署は、「不審な男性が女性に近づいた」という複数の苦情を受けて、12 月にパデュー大学の教授の捜査を開始しました。

コンセプト ドリフト: AI にとって世界の変化は速すぎる

コンセプト ドリフト: AI にとって世界の変化は速すぎる

私たちの周りの世界と同じように、言語は常に変化しています。以前の時代では、言語の変化は数年または数十年にわたって発生していましたが、現在では数日または数時間で変化する可能性があります。

SF攻撃で91歳のアジア人女性が殴られ、コンクリートに叩きつけられた

犯罪擁護派のオークランドが暴力犯罪者のロミオ・ロレンゾ・パーハムを釈放

SF攻撃で91歳のアジア人女性が殴られ、コンクリートに叩きつけられた

認知症を患っている 91 歳のアジア人女性が最近、47 番街のアウター サンセット地区でロメオ ロレンゾ パーハムに襲われました。伝えられるところによると、被害者はサンフランシスコの通りを歩いていたところ、容疑者に近づき、攻撃を受け、暴行を受けました。

ℝ

“And a river went out of Eden to water the garden, and from thence it was parted and became into four heads” Genesis 2:10. ? The heart is located in the middle of the thoracic cavity, pointing eastward.

メリック・ガーランドはアメリカに失敗しましたか?

バイデン大統領の任期の半分以上です。メリック・ガーランドは何を待っていますか?

メリック・ガーランドはアメリカに失敗しましたか?

人々にチャンスを与えることは、人生で少し遅すぎると私は信じています。寛大に。

Language