2012-05-15 4 views
0

다음 Caml 쿼리를 사용하여 공유 포인트 목록에서 데이터를 가져옵니다.공유 목록에서 원하는 열을 가져올 수 있습니까?

oSb.Append("   <OrderBy>") 
    oSb.Append("    <FieldRef Name=""Title"" />") 
    oSb.Append("   </OrderBy>") 

그러나이 쿼리는 모든 목록 열을 제공합니다. Caml Query를 사용하여 공유 목록에서 원하는 열만 가져올 수 있습니까? 도와주세요.

답변

4

보기 필드에 관한 MSDN 문서를 살펴보십시오. CAML 조회를 실행하기 전에이 필드를 지정할 수 있습니다.

using (SPSite site = new SPSite("http://localhost")) 
    { 
     using (SPWeb web = site.OpenWeb()) 
     { 
      // Build a query. 
      SPQuery query = new SPQuery(); 
      query.Query = string.Concat(
          "<Where><Eq>", 
          "<FieldRef Name='Status'/>", 
          "<Value Type='CHOICE'>Not Started</Value>", 
          "</Eq></Where>", 
          "<OrderBy>", 
          "<FieldRef Name='DueDate' Ascending='TRUE' />", 
          "<FieldRef Name=’Priority’ Ascending='TRUE' />", 
          "</OrderBy>");      

      query.ViewFields = string.Concat(
           "<FieldRef Name='AssignedTo' />", 
           "<FieldRef Name='LinkTitle' />", 
           "<FieldRef Name='DueDate' />", 
           "<FieldRef Name='Priority' />"); 

      query.ViewFieldsOnly = true; // Fetch only the data that we need. 

      // Get data from a list. 
      string listUrl = web.ServerRelativeUrl + "/lists/tasks"; 
      SPList list = web.GetList(listUrl); 
      SPListItemCollection items = list.GetItems(query); 

      // Print a report header. 
      Console.WriteLine("{0,-25} {1,-20} {2,-25} {3}", 
       "Assigned To", "Task", "Due Date", "Priority"); 

      // Print the details. 
      foreach (SPListItem item in items) 
      { 
       Console.WriteLine("{0,-25} {1,-20} {2,-25} {3}", 
       item["AssignedTo"], item["LinkTitle"], item["DueDate"], item["Priority"]); 
      } 
     } 
관련 문제