【SharePoint】SharePoint2010 今更だけど・・・2
■あいかわらずローカライズ後のテストをしないMSDN。
SharePoint 2010 コントロールを使用して視覚的 Web パーツを作成する
http://msdn.microsoft.com/ja-jp/library/ff728094(v=office.14).aspx
前回に引き続き、MSDNの困りネタ。今更のShaPoint2010だけど、同様のケースは新バージョンのSharePoint2013でも発生し得るので。
しかし前回よりひどい・・・。
「リスト’Projects’ はURL ‘http://win2008R2-sa’ のサイトには存在しません。」
元に戻せなくなっちゃいますよ~。
原因はまたしてもローカライズが原因。
ちゃんと手順は日本語環境に則ってローカライズされているから、
単純にソースコードを手順に沿ってテストしていないんだと思われる。
該当コードはこれ
DateTime dueDate = DateTime.Now;if (!string.IsNullOrEmpty(Request.QueryString["date"]))
{
dueDate = DateTime.Parse(Request.QueryString["date"]);
}
DueDate.SelectedDate = dueDate;SPWeb home = SPContext.Current.Web;
ProjectsListView.List = home.Lists["Projects"];
いけないのは赤字の部分で、そもそも”Projects"というプロジェクトタスクリストを前の手順として作らせていない。
ので、まずはテストサイトに該当するプロジェクトタスクリストを作成する。
すると、まずは大げさなエラーも発生せずWebパーツが正しく配置される。
ページの編集でWebパーツをページに配置できたかと思いきや・・・
と、今度は
「1つ以上のフィールドの種類が正しくインストールされていません。云々・・・」
と怒られる。
これは同じコード内の
SPQuery query = new SPQuery(ProjectsListView.List.DefaultView); query.ViewFields = "<FieldRef Name=\"Title\" /><FieldRef Name=\"Due_x0020_Date\" />"; query.Query = string.Format( "<Where><Leq><FieldRef Name=\"Due_x0020_Date\" /><Value Type=\"DateTime\">{0}</Value></Leq></Where>" , dueDate.ToString("s"));
例によって赤字部分が、海外の製品と日本の製品ではフィールド名が異なることによって発生する。タイトルは「Title」で一致しているからOK。問題は"Due_x0020_Date"。
日本語環境では、プロジェクトタスクリストの該当する”期限”は内部名が「DueDate」となっている。
ので、該当する箇所を直す。
SPQuery query = new SPQuery(ProjectsListView.List.DefaultView); query.ViewFields = "<FieldRef Name=\"Title\" /><FieldRef Name=\"DueDate\" />"; query.Query = string.Format( "<Where><Leq><FieldRef Name=\"DueDate\" /><Value Type=\"DateTime\">{0}</Value></Leq></Where>" , dueDate.ToString("s"));
ただしく表示できましたとさ。
内部名の調べ方はまた今度。
ちなみに、TitleとDueDateさえあればプロジェクトタスクリストではなくお知らせとかでも動きます。
東海地方のSharePointに関するお仕事情報、お問い合わせは、こちらまでどうぞ。
|
~失敗しない家作りブログのAuthorの本職はSE。家作りとITがどうかかわるかわかりませんが、SEならではの視点でPC,ITに物申してみたいと思います。~
Share |
|
| |||
ランキング参加始めました。駄文ですが、ほんのチョビっとでも役に立ったと思われたらクリックお願いいたします:-) |