2010-07-14 8 views
7

द्वारा अनदेखा क्यों किया जाता है, हालांकि मैं अपनी शेयरपॉइंट सूची सेवा की GetListItems क्वेरी में व्यूफ़िल्ड्स तत्व निर्दिष्ट करता हूं, सभी फ़ील्ड लौटाए जाते हैं। निम्नलिखित कोड अनुरोध बनाता है:<ViewFields> मानदंड SharePoint List Service's GetListItems विधि

XmlDocument xmlDoc = new System.Xml.XmlDocument(); 
XmlNode query = xmlDoc.CreateNode(XmlNodeType.Element, "Query", ""); 
XmlNode viewFields = xmlDoc.CreateNode(XmlNodeType.Element, "ViewFields", ""); 
XmlNode queryOptions = xmlDoc.CreateNode(XmlNodeType.Element, "QueryOptions", "");  

... set query ... 

viewFields.InnerXml = "<FieldRef Name='LinkFilename' /><FieldRef Name='FileDirRef' /><FieldRef Name='FileLeafRef' />";    

queryOptions.InnerXml = "<IncludeMandatoryColumns>FALSE</IncludeMandatoryColumns><DateInUtc>TRUE</DateInUtc><Folder>Resource Management Tools</Folder><ViewAttributes Scope='Recursive' />"; 

XmlNode xmlNode = SharePointListWebService.GetListItems(
_listServiceConfigurationSettings.ListName, 
           string.Empty, 
           query, 
           viewFields, 
           null, 
           queryOptions, 
           null); 

Fiddler के अनुसार, निम्नलिखित साबुन लिफाफे में यह परिणाम सूची सेवा में पोस्ट किए जाने:

<?xml version="1.0" encoding="utf-8"?> 
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <soap:Body> 
    <GetListItems xmlns="http://schemas.microsoft.com/sharepoint/soap/">  
     <listName>Shared Documents</listName> 
     <viewName /> 
     <query> 
     <Query xmlns=""> 
      <Where> 
      <And> 
       <Contains> 
       <FieldRef Name="FileLeafRef" /> 
       <Value Type="Text">.xls</Value> 
       </Contains> 
       <Geq> 
       <FieldRef Name="Modified" 
       IncludeTimeValue="True" /> 
       <Value Type="DateTime">2010-05-10T11:53:32Z</Value> 
       </Geq> 
      </And> 
      </Where> 
      <OrderBy> 
      <FieldRef Name="FileDirRef" /> 
      </OrderBy> 
     </Query> 
     </query> 
     <viewFields> 
     <ViewFields xmlns=""> 
      <FieldRef Name="LinkFilename" /> 
      <FieldRef Name="FileDirRef" /> 
      <FieldRef Name="FileLeafRef" /> 
     </ViewFields> 
     </viewFields> 
     <queryOptions> 
     <QueryOptions xmlns=""> 
      <IncludeMandatoryColumns>FALSE</IncludeMandatoryColumns> 
      <DateInUtc>TRUE</DateInUtc> 
      <Folder>Resource Management Tools</Folder> 
      <ViewAttributes Scope="Recursive" /> 
     </QueryOptions> 
     </queryOptions> 
    </GetListItems> 
    </soap:Body> 
</soap:Envelope> 

और निम्नलिखित साबुन प्रतिक्रिया सेवा से लौटा जा रहा है:

<?xml version="1.0" encoding="utf-8"?> 
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <soap:Body> 
    <GetListItemsResponse xmlns="http://schemas.microsoft.com/sharepoint/soap/"> 
     <GetListItemsResult> 
     <listitems xmlns:s='uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882' 
     xmlns:dt='uuid:C2F41010-65B3-11d1-A29F-00AA00C14882' 
     xmlns:rs='urn:schemas-microsoft-com:rowset' 
     xmlns:z='#RowsetSchema'> 
      <rs:data ItemCount="19"> 
      <z:row ows_LinkFilename='[SENSITIVE DATA].xls' 
      ows_FileDirRef='278;#sites[SENSITIVE DATA]' 
      ows_FileLeafRef='278;#[SENSITIVE DATA].xls' 
      ows_MetaInfo='278;#Subject:SW| vti_parserversion:SR|12.0.0.6421 ContentTypeId:SW|0x0101006C2E647253A1074FB6079F08E5F2A395 _Author:SW|[SENSITIVE DATA] _Category:SW| vti_author:SR|[SENSITIVE DATA] _Comments:SW| vti_approvallevel:SR| vti_categories:VW| vti_cachedcustomprops:VX|vti_approvallevel vti_categories Subject vti_assignedto Keywords _Author _Category _Comments vti_assignedto:SR| Keywords:SW| vti_modifiedby:SR|[SENSITIVE DATA]' 
      ows__ModerationStatus='0' ows__Level='1' 
      ows_Last_x0020_Modified='278;#2010-06-29T18:55:38Z' 
      ows_ID='278' ows_owshiddenversion='53' 
      ows_UniqueId='278;#{0E51B2B1-89A7-4895-8ECC-0FE7D420470C}' 
      ows_FSObjType='278;#0' 
      ows_Created_x0020_Date='278;#2009-03-09T16:06:41Z' 
      ows_ProgId='278;#' ows_Modified='2010-06-29T18:55:37Z' 
      ows_FileRef='278;#sites[SENSITIVE DATA].xls' 
      ows_DocIcon='xls' 
      ows_Editor='262;#[SENSITIVE DATA]' />    
      </rs:data> 
     </listitems> 
     </GetListItemsResult> 
    </GetListItemsResponse> 
    </soap:Body> 
</soap:Envelope> 

ध्यान दें z: पंक्ति तत्व में मेरे व्यूफिल्ड्स मानदंडों में निर्दिष्ट किए गए फ़ील्ड में अधिक फ़ील्ड शामिल हैं। मैंने अपने क्वेरी विकल्पों में गलत करने के लिए IncludeMandatoryColumns भी सेट किया है। क्या मैंने कुछ गलत किया है या नहीं, मुझे समझ में नहीं आता कि व्यूफिल्ड्स वास्तव में कैसे काम करता है क्योंकि मैंने सोचा था कि यह फ़ील्ड को सीमित करेगा i.e. z: पंक्ति विशेषताएँ SharePoint सूची सेवा द्वारा लौटाई गई हैं।

उत्तर

12

मैं भी इस मुद्दे से जूझ रहा हूं। आज रात मुझे एक समाधान मिला जो मेरे लिए काम करता प्रतीत होता है ... उम्मीद है कि यह दूसरों के लिए भी सहायक है।

अपने viewFields नोड की संरचना ठीक है ...

<viewFields> 
    <ViewFields xmlns=""> 
     <FieldRef Name="LinkFilename" /> 
     <FieldRef Name="FileDirRef" /> 
     <FieldRef Name="FileLeafRef" /> 
    </ViewFields> 
    </viewFields> 

समस्या होने की संभावना अपने फील्ड के नाम है। स्पष्ट रूप से आपको प्रदर्शन नामों के बजाय आंतरिक नामों का उपयोग करना होगा। एक त्वरित & आंतरिक नाम निर्धारित करने का आसान तरीका आपकी सूची के लिए सूची सेटिंग्स पृष्ठ पर जाना है और सूची में प्रत्येक कॉलम पर होवर करना है। ब्राउज़र की स्थिति पट्टी एक URL कुछ ऐसा दिखाई देगा ..

http://YOUR_SITE/_layouts/FldEdit.aspx?List=%7B12345678%2D1234%2D1234%2D1234%2D123456789012%7D&Field=INTERNAL_FIELD_NAME 

क्षेत्रों आप() सेवा GetListItems से लौटना चाहते से प्रत्येक के लिए वहाँ से पता चला आंतरिक क्षेत्र का नाम का प्रयोग करें। उदाहरण के लिए,

<FieldRef Name="LinkFilename" /> 

.... रूप में लिखा जा करना पड़ सकता है ...

<FieldRef Name="Link_x0020_Filename" /> 

कम से कम क्या यह मेरे लिए समस्या को हल करने में ले लिया है कि। उम्मीद है की वो मदद करदे!

+0

धन्यवाद! मैं कोशिश करूँगा और अपने परिणामों का पालन करूंगा। –

+0

क्या यह आपके लिए काम करता है? मैं उत्सुक हूं अगर ऐसे अन्य मुद्दे हैं जो इन प्रकार की त्रुटियों का कारण बन सकते हैं। धन्यवाद! – GreggB

-1

मेरे अपने शोध के किसी भी कर के बिना, टीटी लगता है कि आप निम्न XML नोड जेनरेट कर रहे हैं की तरह:

<viewFields> 
    <ViewFields xmlns=""> 
     <FieldRef Name="LinkFilename" /> 
     <FieldRef Name="FileDirRef" /> 
     <FieldRef Name="FileLeafRef" /> 
    </ViewFields> 
    </viewFields> 

आप अपने ViewFields तत्व एक और viewFields तत्व में एम्बेड करना मतलब है?

+1

नेस्टेड व्यूफिल्ड्स/व्यूफिल्ड्स वेब सेवा प्रॉक्सी द्वारा उत्पन्न होता है।फिडलर में अनुरोध (साबुन पोस्ट) को दोबारा चलाने के दौरान मैंने पाया कि व्यूफिल्ड्स वैकल्पिक है लेकिन अगर मैं व्यूफिल्ड्स को हटा देता हूं, तो सर्वर साबुन गलती देता है –

+1

एसओएपी - लंगड़ा डिजाइन में यह आवश्यक है, लेकिन यह वही तरीका है। –

1

उद्देश्य के लिए ViewFieldsOnly संपत्ति है (हालांकि मैंने इसके साथ प्रयोग नहीं किया है)।

जब आप ViewFields प्रॉपर्टी सेट करके फ़ील्ड निर्दिष्ट करते हैं, तो क्वेरी केवल उन फ़ील्ड से अधिक डेटा पुनर्प्राप्त करती है। प्रदर्शन को अनुकूलित करने के लिए, आप ViewFieldsOnly प्रॉपर्टी को सत्य पर सेट करके क्वेरी द्वारा लौटाए गए डेटा को सीमित कर सकते हैं।