2011-01-26 3 views
2

私はこのSitecoreクエリコードに苦労しています。すべてのアイテムが公開され、クエリはXPath Builderで機能しますが、コードの背後には常に0の結果が返されます。他の人が不平を言っても結果が得られないコードサンプルからこれをコピーしました。私は "query:"で追加しようとしましたが、構文エラーがスローされます。コードの中で動作中のSitecoreクエリを使用する

string query = "/sitecore/content/ShrinersHospital2/CareAndTreatment//*[@@templatename = 'CareAndTreatmentType' and @TreatmentType = '{ECDBE944-99DE-4347-8FA2-6613FA85402C}']"; 

Item[] items = Sitecore.Context.Database.SelectItems(query); 

答えて

5

この特定の問題は、発行に関する問題と関連しています。照会されたアイテムにはテンプレートが変更されており、インクリメンタルパブリッシュは変更を正しくプッシュできませんでした。スマートパブリッシュにより、コードが機能し始めました。

また、私はこのようなものが発生したときに、次のように私は、コードを使用して、両方のデータベース上でテストする必要があることを知らされた:

Item[] items = Sitecore.Context.Database.SelectItems(query); 

Database master = Factory.GetDatabase("master"); 
master.SelectItems(query); 

Database web = Factory.GetDatabase("web"); 
web.SelectItems(query); 
3

は、私は以下のソリューションを同じ問題を抱えていたと見られますこれはあなたのコードが(現在の)の文脈で実行されているので機能しません。そして、コードパスで実行され

/サイトコア/コンテンツ/ ShrinersHospital2/CareAndTreatmentクエリで

あなたはパスから検索するサイトコアを伝える上

/サイトコア/コンテンツ/ ShrinersHospital2/CareAndTreatment/sitecore/content/ShrinersHospital2/CareAndTreatment

これは0を返しますパスが存在しないため、結果としてmsを返します。

は、次のクエリを試してみてください:あなたが「ウェブ」にデータベースを切り替えると

string query = "//*[@@templatename = 'CareAndTreatmentType' and @TreatmentType = '{ECDBE944-99DE-4347-8FA2-6613FA85402C}']"; 
Item[] items = Sitecore.Context.Database.SelectItems(query); 

、あなたはコンテキストを持っていないし、あなたの「開始」パスは/です。パスが

/サイトコア/コンテンツ/ ShrinersHospital2/CareAndTreatment

string query = "/sitecore/content/ShrinersHospital2/CareAndTreatment//*[@@templatename = 'CareAndTreatmentType' and @TreatmentType = '{ECDBE944-99DE-4347-8FA2-6613FA85402C}']"; 
var database = Sitecore.Configuration.Factory.GetDatabase("web"); 
items = database.SelectItems(query); 
が存在するため、そして、以下のコードは、クエリでのアイテムを返します。
関連する問題