SharePoint - كيف يمكن إدراج عناصر جديدة باستخدام خدمة القائمة على الويب؟

StackOverflow https://stackoverflow.com/questions/85392

  •  01-07-2019
  •  | 
  •  

سؤال

لدي قائمة تحتوي على حقلين نصيين وحقل اختيار.كيف يمكنني استخدام خدمة الويب Lists.asmx لإدراج عنصر جديد؟يمكنني عمل مرجع ويب لخدمة lists.asmx، لذا يمكنك افتراض أن هذا معروف.

أرغب في الحصول على مثال كامل يتضمن الكود وXML لاستعلام CAML.من الناحية المثالية، يجب أن تستخدم العينة C#.

هل كانت مفيدة؟

المحلول

قد يكون استخدام خدمة القوائم على الويب لإدراج عنصر في قائمة SharePoint أمرًا صعبًا بالفعل.وبما أن هذه الطريقة هي من الشكل:قد يكون من الصعب الحصول على المعلمات الصحيحة.

أولاً يجب عليك إلقاء نظرة على تعريف القائمة.ويمكن استرجاعها باستخدام طريقة GetList() كما هو موضح أدناه:

XmlNode listXml = sharePointLists.GetList(listName);
File.WriteAllText("listdefinition.xml", listXml.OuterXml);

من المهم هنا أسماء الحقول وأنواع البيانات الخاصة بها.لن تكون أسماء الحقول أبدًا هي نفس الأسماء التي تراها في واجهة المستخدم الرسومية لـ SharePoint.وخير مثال على ذلك هو حقل العنوان الذي يتم استخدامه للحقل الأول من القائمة.

الآن بعد أن عرفت ذلك، يمكنك إنشاء استعلام للانتقال إلى SharePoint.مثال:

<Batch OnError="Continue">
    <Method ID="1" Cmd="New">
        <Field Name="Title">Abcdef</Field>
        <Field Name="Project_x0020_code">999050</Field>
        <Field Name="Status">Open</Field>    
    </Method>
</Batch>

عنصر الدفعة هو العنصر الجذر لـ XML.في الداخل يمكنك وضع طرق مختلفة.يجب أن تحصل هذه على معرف فريد (يُستخدم لإبلاغك بالأخطاء) وأمر يمكن أن يكون على سبيل المثال "جديد" أو "تحديث".داخل الطريقة، يمكنك وضع عناصر الحقل التي تحدد قيمة كل حقل.على سبيل المثال، يحصل حقل العنوان على القيمة "Abcdef".كن حذراً عند استخدام الاسم الدقيق كما يتم إرجاعه بواسطة GetList().

لتنفيذ الاستعلام على SharePoint، استخدم الأسلوب UpdateListItems():

XmlNode result = sharePointLists.UpdateListItems(listDefinition.Name, updates);

القيمة المرجعة هي جزء XML يحتوي على حالة كل تحديث.على سبيل المثال:

<Results xmlns="http://schemas.microsoft.com/sharepoint/soap/">
    <Result ID="1,New">
    <ErrorCode>0x00000000</ErrorCode>
    <z:row ows_ContentTypeId="0x010036F3F587127F1A44B8BA3FEFED4733C6" 
         ows_Title="Abcdef" 
         ows_Project_x0020_code="999050" 
         ows_Status="Open" 
         ows_LinkTitleNoMenu="Abcdef" 
         ows_LinkTitle="Abcdef" 
         ows_ID="1005"            
         ... 
         xmlns:z="#RowsetSchema" />
    </Result>
</Results>

يمكنك تحليل هذا وإلقاء نظرة على ErrorCode لمعرفة الطرق التي فشلت.

من الناحية العملية، قمت بإنشاء فئة مجمعة تهتم بكل التفاصيل القذرة بالنسبة لي.لسوء الحظ، هذا مملوك لصاحب العمل، لذا لا أستطيع مشاركته معك.

تعد فئة المجمع هذه جزءًا من أداة مساعدة داخلية تُستخدم لاسترداد المعلومات من قاعدة بيانات مشروعنا ونشرها على SharePoint.نظرًا لأنه تم تطويره خلال فترة عمل الشركة، فلا يُسمح لي بنشره هنا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top