2016-09-15 6 views
0

私は、特定のリストをクエリするために、オンプレミスアプリケーションでCSOM C#ClientContext検索を使用していますが、クエリが通過するときにすべてのアイテムを受け取ります。しかし、私は単一のクエリが必要です。値の使用によって提供されるクエリは、別の共有ポイントリストから取得されたラベルに格納されます。だから私はCamlQueryのどの部分が間違っているのだろうと思っています。 (CLIENTCONTEXT cdmContext =新しいCLIENTCONTEXT(URL))を使用してSharePoint 2013 On Premise C#ClientContext Camlクエリ結果がフィルタリングされない

    { 
         cdmContext.Credentials = fabrikam_credentials; 

         Web cdmWeb = cdmContext.Web; 

         List cdmList = cdmWeb.Lists.GetByTitle("ListOfClasses"); 

         if (cdmList == null) return; 

         CamlQuery cdmQuery = new CamlQuery(); 
         cdmQuery.ViewXml = "<Query><Where><And><Or><Eq><FieldRef Name='ClassName'></FieldRef><Value Type='Text'>" + Label1.Text + "</Value></Eq><Eq><FieldRef Name='ClassName'></FieldRef><Value Type='Text'>" + Label2.Text + "</Value></Eq></Or><Or><Eq><FieldRef Name='ClassName'></FieldRef><Value Type='Text'>" + Label3.Text + "</Value></Eq><Eq><FieldRef Name='ClassName'></FieldRef><Value Type='Text'>" + Label4.Text + "</Value></Eq></Or></And></Where></Query>"; 
         ListItemCollection cdmItems = cdmList.GetItems(cdmQuery); 
         if (cdmItems == null) return; 

         cdmContext.Load(cdmItems); 
         cdmContext.ExecuteQuery(); 

         if (cdmItems != null) 
         { 
          foreach (ListItem cdmItem in cdmItems) 
          { 
           string cClassName = cdmItem["ClassName"].ToString(); 
           string cInstructorName = "Professor Buckman"; 
           DateTime cStartDate = DateTime.Parse(cdmItem["StartDate"].ToString()); 
           DateTime cEndDate = DateTime.Parse(cdmItem["_EndDate"].ToString()); 
           int cRoomNumber = Int32.Parse(cdmItem["ClassNumber"].ToString()); 
           string cDayOfTheWeek = cStartDate.DayOfWeek.ToString(); 

           System.Web.UI.WebControls.TableRow fuRow1 = new System.Web.UI.WebControls.TableRow(); 
           System.Web.UI.WebControls.TableCell fuR1C1 = new System.Web.UI.WebControls.TableCell(); 
           fuR1C1.Text = cClassName; 
           System.Web.UI.WebControls.TableCell fuR1C2 = new System.Web.UI.WebControls.TableCell(); 
           fuR1C2.Text = cRoomNumber.ToString(); 
           System.Web.UI.WebControls.TableCell fuR1C3 = new System.Web.UI.WebControls.TableCell(); 
           fuR1C3.Text = cStartDate.ToString(); 
           fuRow1.Cells.Add(fuR1C1); 
           fuRow1.Cells.Add(fuR1C2); 
           fuRow1.Cells.Add(fuR1C3); 
           FUScheduler.Rows.Add(fuRow1); 
           System.Web.UI.WebControls.TableRow fuRow2 = new System.Web.UI.WebControls.TableRow(); 
           System.Web.UI.WebControls.TableCell fuR2C1 = new System.Web.UI.WebControls.TableCell(); 
           fuR2C1.Text = cInstructorName; 
           System.Web.UI.WebControls.TableCell fuR2C2 = new System.Web.UI.WebControls.TableCell(); 
           fuR2C2.Text = cDayOfTheWeek; 
           System.Web.UI.WebControls.TableCell fuR2C3 = new System.Web.UI.WebControls.TableCell(); 
           fuR2C3.Text = cStartDate.ToString(); 
           fuRow2.Cells.Add(fuR2C1); 
           fuRow2.Cells.Add(fuR2C2); 
           fuRow2.Cells.Add(fuR2C3); 
           FUScheduler.Rows.Add(fuRow2); 


          } 
         } 

答えて

0

私は理解していれば、あなたは4つの値の間のフィールドの値が 'className' を持っているすべてのアイテムを取得したい(LABEL1、LABEL2、LABEL3またはラベル4)。このCAML whil テスト: あなたはビュー追加する必要があります。

<View> [The CAML Query]</View> 

あなたのオブジェクトのViewXMLを設定する;)

あなたと間違っていると要求した場合、等でテスト:

<View> 
<Query> 
    <Where> 
     <Or> 
     <Eq> 
      <FieldRef Name='ClassName' /> 
      <Value Type='Text'>" + Label1.Text + "</Value> 
     </Eq> 
     <Or> 
      <Eq> 
       <FieldRef Name='ClassName' /> 
       <Value Type='Text'>" + Label2.Text + "</Value> 
      </Eq> 
      <Or> 
       <Eq> 
        <FieldRef Name='ClassName' /> 
        <Value Type='Text'>" + Label3.Text + "</Value> 
       </Eq> 
       <Eq> 
        <FieldRef Name='ClassName' /> 
        <Value Type='Text'>" + Label4.Text + "</Value> 
       </Eq> 
      </Or> 
     </Or> 
     </Or> 
    </Where> 
</Query> 
</View> 

フィールド 'ClassName'のタイプはテキスト(1行のテキスト)ですか? その他の外部ツールを使用すると、Camlの構築に役立ちます。CAML Designer U2U Caml Query Builder

関連する問題