2009年5月31日日曜日

CAML と日本語列名

WSS の CAML を使用して SPQuery にクエリ設定をするときは、WSS 内部で使われる列名を使わなければいけないとのこと。クエリあってるじゃないのおっ、と CAML とにらめっこしてたんですが・・・

調べてみたら日本語だと列作成時に UTF-16に変換されたものがつけられるとのこと。標準ビューでソートをかけた時に URL に SortField というパラメータがつけられますが、ここに出ているのが内部的な列名ですね。

ASP.NET の HTML エンコーディングみたいなもんか。でも変換されているものをいちいち変換するのはめんどくさい。たぶん変換する便利なメソッドがどこかにあると思いますが、探している時間もないわということで・・・

「はじめは列名を英語表記(例: TargetAmt) にしておいて、作成したら列名を日本語(例:目標額)に戻す」

・・・に落ち着きました。

こうしておけば CAML で記述する時もは英語表記をそのまま使えばいいのでこけません。英語表記でもスペースが入るとそれも変換されるので、戻す処理をするかスペースをいれないか気をつけましょう。

ちなみにリストを作成するときはかってにList1とか名前がつくので要注意。

0 件のコメント: