‏إظهار الرسائل ذات التسميات SharePoint. إظهار كافة الرسائل
‏إظهار الرسائل ذات التسميات SharePoint. إظهار كافة الرسائل

السبت، 26 يونيو 2010

كيف تعرض ملف فلاش من مكتبة الصور باستخدام جزء ويب لاستعلام المحتوى



في هذه المقالة سنستعرض كيفية استخدام جزء ويب الخاص باستعلام المحتوى Content Query Web Part لعرض ملف فلاش من مكتبة الصور, حيث أن في بعض الأحيان يكون لدينا صور وملفات فلاش في مكتبة الصور ونريد عرضها باستخدام نفس الأداة, والؤسال هو كيف نستطيع تنفيذ ذلك؟ للإجابة على هذا السؤال أرجو اتباع الخطوات التالية بدقة:

  1. أنشء مكتبة للصور ولكين اسمه MyImageLib من النوع "مكتبة الصور Picture Library".




  2. أضف إليها ملف فلاش أو أكثر إضافة إلى بعض الصور بهدف التجريب فقط, وتأكد بأن ملفات الفلاش التي يتم رفعها تعمل بشكل صحيح.


    طبعاً نلاحظ بأن مكتبة الصور لا تعرض صورة مصغرة للفلاش لأنها غير مخصصة لذلك.
  3. أضف جزء ويب الخاص باستعلام المحتوى Content Query Web Part إلى أي صفحة من صفحات موقعك, ويفضل أن تكون صفحة تجربة لاختبار عمل هذه الطريقة.
  4. الآن حدد مكتبة الصور لتكون هي القائمة التي سيقرأ منها جزء الويب العناصر التي سيعرضها كما في الشكل التالي:








  5. الآن سيتم بناء قالب جديد في الملف ItemStyle.xsl الموجود في المكتبة Style Library وذلك باستخدام SharePoint Designer, واسم القالب الجديد هو ShowFlashFromImgLib, وشيفرته كما يلي:
    <xsl:template name=" ShowFlashFromImgLib" match="Row[@Style=' ShowFlashFromImgLib']" mode="itemstyle">
    <xsl:param name="CurPos">
    <xsl:param name="Last">
    <xsl:variable name="SafeLinkUrl">
    <xsl:call-template name="OuterTemplate.GetSafeLink">
    <xsl:with-param name="UrlColumnName" select="'LinkUrl'">
    </xsl:with-param></xsl:call-template>
    </xsl:variable>
    <xsl:variable name="DisplayTitle">
    <xsl:call-template name="OuterTemplate.GetTitle">
    <xsl:with-param name="Title" select="@Title">
    <xsl:with-param name="UrlColumnName" select="'LinkUrl'">
    </xsl:with-param></xsl:with-param></xsl:call-template>
    </xsl:variable>
    <xsl:variable name="LinkTarget">
    <xsl:if test="@OpenInNewWindow = 'True'">_blank</xsl:if>
    </xsl:variable>
    <xsl:if test="contains($SafeLinkUrl, '.swf')">
    <xsl:text escaping="yes"><object>
    <param name="movie" value=""></xsl:text><xsl:value-of select="">
    <xsl:text escaping="yes">
    <embed src=""></embed></xsl:text><br /> <xsl:value-of select="">
    <xsl:text escaping="yes">
    </xsl:text></xsl:text></object>]]></xsl:text>
    </xsl:if>
    </xsl:param></xsl:param></xsl:template>
  6. الآن يجب تحديد أن جزء الويب الخاص باستعلام المحتوى يطبق القالب السابق, وذلك من خلال قسم العرض التقديمي لخصائص جزء الويب:






  7. اضغط على زر موافق لحفظ تعديلات جزء الويب وستلاحظ عرض ملفات الفلاش التي تمت إضافتها إلى مكتبة الصور السابقة.
ملاحظة: هذا المثال لا يعرض الصور أيضاً وإنما يمكن تعديله لعمل ذلك من خلال القالب ذاته, إضافة إلى أن طريقة عرض ملفات الفلاش لا تأخذ بعين الاعتبار عرض وارتفاع الفلاش وإنما يتم وضع أبعاد افتراضية, وطبعاً يمكن للمطور التعديل على شيفرة هذا القالب لتتناسب مع تصميم موقعه والهدف من عرض الفلاش.


الأربعاء، 24 مارس 2010

كيف أتعلم شيربوينت SharePoint




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


  • تقنيات Technology.
  • لغات وتقنيات برمجية C#, ASP.NET, VB.NET, JavaScript.
  • قواعد بيانات SQL Server.
  • إدخال البيانات Data Entry.
  • إضافة إلى كل ما يتبع للعناصر الأربعة الرئيسية السابقة.


وطبعاً تعلم كل ماسبق يحتاج إلى وقت طويل وجهد قد يمتد لسنوات, إذاً كيف نتعلم شيربونيت SharePoint, هل من المنطقي أن نقضي سنوات نتعلم هذه التقنيات ولغات البرمجة, أم نستطيع وضع منهج واضح للتعلم بحيث نخطوا خطوات ثابتة وواضحة أثناء مرحلة التعلم والتعليم المرتبطة بشيربوينت SharePoint. وجوابي يجب وضع منهج واضح للتعلم والهدف من التعلم, يجب أن تحدد ماذا تريد أن تعمل على شيربونيت SharePoint, هل أنت مبرمج أو مبرمجة SharePoint Developer, مدخل بيانات, مدير شيربونيت SharePoint Administrator, بالضبط يجب تحديد ماهو هدفك وتضع البرنامج الصحيح لتحقيق ذلك, وإلا فإن التخبط سيكون سيد الموقف أثناء تعلمك لشيربونيت SharePoint ولن تتعلم العمل على شيربوينت SharePoint بشكل صحيح, وإنما معلومات مبهمة وغير واضحة عن الميزات الرئيسية في شيربوينت SharePoint.

مراحل تعلم شيربوينت SharePoint
كما أسلفت سابقاً حتى تتعلم شيربوينت SharePoint بشكل صحيح يجب أن تحدد بالضبط ماذا تريد أن تكون في هذا المجال, ومايلي التقسيمات الرئيسية التي يمكن أن تختص فيها من خلال عملك على شيربوينت SharePoint:
  • مدخل بيانات Data Entry.
  • مطور شيربوينت SharePoint Developer.
  • مدير شيربوينت SharePoint Administrator.
التقسيمات الثلاثة السابقة ذكرتها بالتسلسل المنطقي من وجهة نظري من الأسهل إلى الأكثر تعقيداً, ولكن هذا لا يعني بأن عملية إدخال البيانات هي عملية سهلة (هنا لا أخص شيربوينتSharePoint). وكل مرحلة من هذه المراحل تنقسم إلى عدة مراحل مختلفة في كل واحدة منها تتعلم أو تتعلمين مواضيع هي جميعها في النهاية مترابطة مع بعضها البعض ولكن مدى التعمق في هذه المواضيع يختلف من مرحلة إلى أخرى, فمثلاً فهم تعريف عمود الموقع Site Column يختلف من مرحلة إدخال البيانات إلى مرحلة المطور إلى مرحلة المدير, وهذا المفهوم يمر في جميع المراحل الثلاثة لكن مع اختلاف في كيفية النظر إلى مفهوم عمود الموقع Site Column في كل مرحلة, وعند التقدم في المراحل تزداد المفاهيم والتعقيدات المرتبطة بعمود الموقع Site Column, لذلك فهم جميع المواضيع المتعلقة في كل مرحلة من مراحل تعلم شيربوينت SharePoint يعني أن دخول المرحلة التالية سيكون أسهل وأكثر فائدة.
نصيحة: لا تتجاوز أي مفهوم مهما كان بسيطاً أثناء تعلمك شيربوينت SharePoint وخاصة في المرحلة الأولى "مدخل البيانات Data Entry".
ولا شك بأن كل مرحلة من المراحل الثلاثة السابقة لها متطلبات يجب أن يحققها كل من يريد الدخول في عالم شيربوينت SharePoint بشكل صحيح, وفقدانه لأي متطلب من المتطلبات لا يعني عدم قدرته على تجاوز المرحلة وإنما يعني نقص في فهم مواضيع هذه المرحلة, وهذه المتطلبات تتوزع كما يلي:


  1. مدخل البيانات Data Entry

    • معرفة جيدة في برامج أوفيس Office.
    • معرفة أساسيات الـ HTML التي تسمح لمدخل البيانات على الأقل بفهم طريقة صياغة شيفرة الـ HTML.
    • فهم جيد لأنواع الصور الثلاثة jpg, gif, png المستخدمة لتمثيل الصور الرسومية على الإنترنت.
    • معرفة الفلاش Flash وماهو الهدف منه.
    • فهم ممتاز لوظيفة مدخل البيانات بغض النظر عن التقنية أو الأدوات المستخدمة لإدخال البيانات.



  2. مطور شيربوينت SharePoint Developer

    • إتقان المفاهيم البرمجية العامة التي لا تتعلق بأي لغة برمجة أو تقنية.
    • مستوى جيد في جافا سكريبت JavaScript.
    • إتقان شيفرة HTML.
    • معرفة ممتازة بإحدى اللغتين C# أو VB.NET.
    • إتقان تقنية ASP.NET وكل ما يتعلق بها.
    • فهم بيئة عمل الشيربوينت SharePoint Framework وكيفية بنائه والتقنيات المستخدمة في عملية بنائه.
    • إتقان خدمات الويب Web Services.
    • معرفة مبدئية بقواعد البيانات إن افترضنا بأن المبرمج لن يتعامل مع قواعد البيانات بشكل مباشر وإنما هناك أشخاص مختصون بقواعد البيانات.



  3. مدير شيربوينت SharePoint Administrator

    • إتقان عملية إدخال البيانات على شيربوينت SharePoint
    • العمل كمطور شيربوينت SharePoint لمدة كافية تسمح له بفهمه بشكل صحيح.
    • الإلمام بمبادئ الشبكات الأساسية Network Essentials.
    • فهم جميع الخدمات التي يقدمها شيربوينت SharePoint بشكل صحيح والهدف من كل خدمة.
    • فهم جميع وظائف المخدمات Server Roles التي يعمل عليها شيربوينت SharePoint.




إن شاء الله في المقالات القادمة سنفصل أكثر في النقاط التي يجب تعلمها في كل مرحلة من مراحل تعلم شيربوينت SharePoint مع وضع بعض المراجع المهمة والكتب المفيدة

الجمعة، 13 مارس 2009

تخصيص صفحة 404 في الـ SharePoint

عند طلب صفحة غير موجودة في موقع نشر SharePoint Publishing Web Site فإن الحالة الافتراضية هي أن المتصفح يعرض الصفحة الشهيرة "الصفحة غير موجودة" أو " 404 NOT FOUND " ولتخصيص هذه الصفحة يجب اتباع الخطوات التالية:
1 - تحديد الرابط الذي سيتم توجيه المستخدم إليه في حال أنه طلب صفحة غير مودجودة والتي تكون غالباً صفحة أخرى ضمن الموقع ذاته فيها توضيح بأن الصفحة المطلوبة غير موجودة في الموقع.
2 - قم بفتح المسار التالي على الجهاز الذي يعمل عليه الـ Office SharePoint 2007:


C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12\TEMPLATE\LAYOUTS\1025


طبعاً 1025 للغة العربية و 1033 للغة الانجليزية.
3 - يوجد ملف اسمه sps404.html وهو يعبر عن الملف الافتراضي الذي يتم تنفيذه في حال طلب صفحة غير موجودة.
4 - أنشئ ملفاً جديداً اسمه وليكن MySPS404.html وانسخ عليه الشيفرة الموجودة في الملف sps404.html كاملة.
5 - اكتب الشيفرة التالية لتوجيه المستخدم إلى http://yourdomain/Pages/404.aspx:




6 - انسخ الملف MySPS404.html إلى نفس المسار السابق ضمن المجلد 1025 على كل المخدمات التي يعمل عليها الـ Office SharePoint 2007.
7 - الخطوة الأخيرة هي كتابة بعض أسطر الشيفرة التي يجب تنفيذها على أحد المخدمات التي يعمل عليها الـ Office SharePoint 2007 وذلك لتحديث اسم الصفحة التي يجب تنفيذها في حال أن المستخدم طلب صفحة غير موجودة في الموقع:


Microsoft.SharePoint.Administration.SPWebApplication webapp = Microsoft.SharePoint.Administration.SPWebApplication.Lookup(new Uri("http://yourdomain"));
webapp.FileNotFoundPage = "MySPS404.html";webapp.Update();



حيث تستطيع تنفيذ هذه العملية على مستوى تطبيق الويب Web Application أي لكل Web Application صفحة خاصة بالخطأ 404.

الخميس، 5 مارس 2009

نظرة على لغة الاستعلام CAML Overview - 3


تشكل عبارات عمليات المقارنة الجزء الأكبر من عبارات لغة الاستعلام CAML Query والجزء التالي سيركز على شرح كافة هذه العبارات:

عبارة BeginsWith

تستخدم هذه العبارة للبحث عن قيمة نصية في بداية قيمة حقل نصي ويتم استخدام هذه العبارة ضمن عبارة Where مباشرة أو ضمن عبارة And أو عبارة Or:



<Query>
<Where>
<BeginWith>
<FieldRef Name="Title" />
<Value Type="Text">Person</Value>
</BeginWith>
</Where>
</Query>


العبارة السابقة تبحث عن كل العناصر التي يبدأ حقل العنوان Title بـ Person, ويتم استخدام العبارة BeginWith بنفس الطريقة في حال استخدام العبارة And أو العبارة Or.

عبارة Contains

تتشابه عبارة Contains مع عبارة BeginsWith في أنها تطبق على الحقول النصية والاختلاف هو أنها تبحث عن سلسلة نصية في جزء من أجزاء قيمة الحقل النصي أي ليس من الضروري أن تظهر السلسلة النصية في بداية قيمة الحقل, ويتم استخدام هذه العبارة ضمن عبارة Where مباشرة أو ضمن عبارة And أو عبارة Or:



<Query>
<Where>
<And>
<BeginsWith>
<FieldRef Name="Title" />
<Value Type="Text">Person</Value>
</BeginsWith>
<Contains>
<FieldRef Name="Description" />
<Value Type="Note">Ahmed</Value>
</Contains
</And>
</Where>
</Query>


المثال السابق يدمج بين العبارتين BeginsWith و Contains ضمن عبارة And, وبنفس الطريقة يمكن استخدام العبارة Contains مع عبارة Or أو حتى بشكل مباشر ضمن عبارة Where.

عبارة Eq

العبارة Eq هي اختصار للكلمة Equal وتستخدم للتأكد من أن قيمة حقل ما تساوي قيمة محددة سواء نصية أو رقمية أو حتى تاريخ ووقت أو أي قيمة أخرى. ويمكين استخدامها ضمن العبارة And أو العبارة Or أو مباشرة ضمن العبارة Where:



<Query>
<Where>
<Eq>
<FieldRef Name="Status" />
<Value Type="Text">Completed</Value>
</Eq>
</Where>
</Query>


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

عبارة Neq

عبارة Neq هي اختصار لـ Not Equal والتي تفيد في التأكد من قيمة حقل ما لا تساوي قيمة معينة, نصية أو رمقية أو حتى تاريخ ووقت أو أي قيمة أخرى وهي بعكس العبارة Eq, وطريقة استخدامها مشابهة تماماً للعبارة Eq حيث يمكن استخدامها ضمن العبارة And أو العبارة Or أو مباشرة ضمن عبارة Where.



<Query>
<Where>
<Neq>
<FieldRef Name="Status" />
<Value Type="Text">Completed</Value>
</Neq>
</Where>
</Query>


عبارة Gt

عبارة Gt هي اختصار لـ Greater Than (أكبر تماماً من) وهي معامل رياضي تستخدم لمقارنة قيمة حقل ما مع قيمة من النوع الرقمي أو تاريخ أو وقت وطبعاً يمكن استخدام العبارة Gt ضمن عبارة And أو عبارة Or أو حتى ضمن عبارة Where مباشرة:


<Query>
<Where>
<Gt>
<FieldRef Name="DeadLine" />
<Value Type="DateTime><Today /></Value>
</Gt>
</Where>
</Query>


المثال السابق يقارن قيمة الحقل DeadLine وهو من النوع DateTime مع تاريخ اليوم الذي عُبر عنه باستخدام قيمة معرفة سابقاً ضمن لغة الاستعلام CAML وهذه القيمة هي عندها تظهر العناصر التي تكون فيها قيمة الحقل DeadLine أكبر تماماً من تاريخ اليوم.

عبارة Geq

عبارة Geq هي اختصار لـ Greater Than or Equal (أكبر أو يساوي) وهذه العبارة مشابهة تماماً للعبارة Gt في كيفية استخدامها, حيث يمكن استخدام العبارة Geq ضمن عبارة And أو عبارة Or أو حتى ضمن عبارة Where مباشرة:



<Query>
<Where>
<Geq>
<FieldRef Name="DeadLine" />
<Value Type="DateTime><Today /></Value>
</Geq>
</Where>
</Query>


عبارة Lt
عبارة Lt هي اختصار لـ Less Than (أصغر تماماً من) وهي معامل رياضي تستخدم لمقارنة قيمة حقل ما مع قيمة من النوع الرقمي أو تاريخ أو وقت وطبعاً يمكن استخدام العبارة Lt ضمن عبارة And أو عبارة Or أو حتى ضمن عبارة Where مباشرة:

<Query>
<Where>
<Lt>
<FieldRef Name="DeadLine" />
<Value Type="DateTime><Today /></Value>
</Lt>
</Where>
</Query>


المثال السابق يقارن قيمة الحقل DeadLine وهو من النوع DateTime مع تاريخ اليوم الذي عُبر عنه باستخدام قيمة معرفة سابقاً ضمن لغة الاستعلام CAML وهذه القيمة هي عندها تظهر العناصر التي تكون فيها قيمة الحقل DeadLine أصغر تماماً من تاريخ اليوم.

عبارة Leq
عبارة Leq هي اختصار لـ Less Than or Equal (أصغر أو يساوي) وهذه العبارة مشابهة تماماً للعبارة Lt في كيفية استخدامها, حيث يمكن استخدام العبارة Leq ضمن عبارة And أو عبارة Or أو حتى ضمن عبارة Where مباشرة:

<Query>
<Where>
<Leq>
<FieldRef Name="DeadLine" />
<Value Type="DateTime><Today /></Value>
</Leq>
</Where>
</Query>

عبارة IsNotNull
تستخدم عبارة IsNotNull لاستخراج العناصر التي يكون فيها الحقل المستهدف لا يحتوي على قيمة خالية, ويمكن استخدام عبارة IsNotNull ضمن عبارة And أو عبارة Or أو مباشرة ضمن عبارة Where:

<Query>
<Where>
<IsNotNull>
<FieldRef Name="DeadLine" />
</IsNotNull >
</Where>
</Query>

ونلاحظ أن العبارة IsNotNull لا تتطلب وجود العبارة Value بعد العبارة FieldRef.

عبارة IsNull
تستخدم عبارة IsNull لاستخراج العناصر التي يكون فيها الحقل المستهدف يحتوي على قيمة خالية, ويمكن استخدام عبارة IsNull ضمن عبارة And أو عبارة Or أو مباشرة ضمن عبارة Where:

<Query>
<Where>
<IsNull>
<FieldRef Name="DeadLine" />
</IsNull >
</Where>
</Query>

ونلاحظ أن العبارة IsNull لا تتطلب وجود العبارة Value بعد العبارة FieldRef.

الأربعاء، 4 مارس 2009

نظرة على لغة الاستعلام CAML Overview - 2


ضمن لغة الاستعلام CAML يمكن استخدام تعليمتين منطقيتين فقط وهما And و Or وذلك ضمن عبارة Where مباشرة ولا يمكن استخدامهما إلا ضمن عبارة Where أو إحداهما ضمن الأخرى, وما يلي شرح لطريقة الاستخدام لـ Or و And:
تستخدم عبارة Or ضمن عبارة And أو عبارة Where مباشرة وطبعاً من المعروف أن عبارة Or المنطقية تعمل بالطريقة التالية:

TRUEORTRUETRUE
TRUEORFALSETRUE
FALSEORTRUETRUE
FALSEORFALSEFALSE



من الجدول السابق نستنتج أنه يكفي أن تكون إحدى العبارتين صحيحة لتكون نتيجة العبارة Or تساوي TRUE. وتستخدم العبارة Or ضمن لغة الاستعلام CAML كما يلي:

<or>...</or>



وضمن عبارة Or يمكن استخدام البعارات التالية فقط:

  • And
  • BeginsWith
  • Contains
  • DateRangesOverlap
  • Eq
  • Geq
  • Gt
  • IsNotNull
  • IsNull
  • Leq
  • Lt
  • Membership
  • Neq

يمكن استخدام أي تتابع من العبارات السابقة ضمن عبارة Or مع الانتباه إلى أنه يجب استخدام عبارتين ضمن كل عبارة Or, كما في المثال التالي:



<Query>
<Where>
<Or>
<Eq>
<FieldRef Name="DisplayAtMain" />
<Value Type="Boolean">1</Value>
</Eq>
<Eq>
<FieldRef Name="Title" />
<Value Type="Text">تجربة</Value>
</Eq>
</Or>
</Where>
</Query>


في المثال السابق تظهر النتائج عندما تكون قيمة الحقل DisplayAtMain = 1 (TRUE) أو قيمة الحقل النصي Title تساوي "تجربة".
أما في حال استخدام العبارة Or من أجل أكثر من عبارتين فيجب تضمين عبارة Or داخل عبارة Or خارجية وذلك كما في المثال التالي:


<query>
<Where>
<Or>
<And>
<Eq>
<FieldRef Name="DisplayAtMain" />
<Value Type="Boolean">1</Value>
</Eq>
<Eq>
<FieldRef Name="Title" />
<Value Type="Text">تجربة</Value>
</Eq>
</And>
<Gt>
<FieldRef Name="ID" />
<Value Type="Number">10</Value>
</Gt>
</Or>
</Where>
</query>


في المثال السابق تظهر نتائج عندما يتحقق أحد الشرطين فإما (تكون قيمة الحقل DisplayAtMain = 1 (TRUE) و قيمة الحقل النصي Title تساوي "تجربة") أو (قيمة الحقل ID أكبر تماماً من القيمة 10). وهنا نلاحظ كيف تمت كتابة الشرطين الأولين ضمن عبارة And وعبارة And نفسها تم تضمينها ضمن عبارة Or.

عبارة And

تستخدم عبارة And ضمن عبارة Or أو عبارة Where مباشرة وطبعاً من المعروف أن عبارة And المنطقية تعمل بالطريقة التالية:


TRUEORTRUETRUE
TRUEORFALSEFALSE
FALSEORTRUEFALSE
FALSEORFALSEFALSE


من الجدول السابق نستنتج أنه يجب أن تكون العبارتين صحيحتين لتكون نتيجة العبارة And تساوي TRUE. وتستخدم العبارة And ضمن لغة الاستعلام CAML كما يلي:

<And> … </And>



وضمن عبارة And يمكن استخدام البعارات التالية فقط:

  • Or
  • BeginsWith
  • Contains
  • DateRangesOverlap
  • Eq
  • Geq
  • Gt
  • IsNotNull
  • IsNull
  • Leq
  • Lt
  • Membership
  • Neq

يمكن استخدام أي تتابع من العبارات السابقة ضمن عبارة And مع الانتباه إلى أنه يجب استخدام عبارتين ضمن كل عبارة And, كما في المثال التالي:




<Query>
<Where>
<And>
<Eq>
<FieldRef Name="DisplayAtMain" />
<Value Type="Boolean">1</Value>
</Eq>
<Eq>
<FieldRef Name="Title" />
<Value Type="Text">تجربة</Value>
</Eq>
</And>
</Where>
</Query>


في المثال السابق تظهر النتائج عندما تكون قيمة الحقل DisplayAtMain = 1 (TRUE) و قيمة الحقل النصي Title تساوي "تجربة".
أما في حال استخدام العبارة And من أجل أكثر من عبارتين فيجب تضمين عبارة And داخل عبارة And خارجية وذلك كما في المثال التالي:


<Query>
<Where>
<And>
<And>
<Eq>
<FieldRef Name="DisplayAtMain" />
<Value Type="Boolean">1</Value>
</Eq>
<Eq>
<FieldRef Name="Title" />
<Value Type="Text">تجربة</Value>
</Eq>
</And>
<Gt>
<FieldRef Name="ID" />
<Value Type="Number">10</Value>
</Gt>
</And>
</Where>
</Query>


في المثال السابق تظهر نتائج عندما يتحقق أحد الشرطين فإما (تكون قيمة الحقل DisplayAtMain = 1 (TRUE) و قيمة الحقل النصي Title تساوي "تجربة") و (قيمة الحقل ID أكبر تماماً من القيمة 10). وهنا نلاحظ كيف تمت كتابة الشرطين الأولين ضمن عبارة And وعبارة And نفسها تم تضمينها ضمن عبارة And أخرى.

السبت، 28 فبراير 2009

نظرة على لغة الاستعلام CAML Overview - 1


تستخدم هذه اللغة في Windows SharePoint Services (WSS) وذلك لأغراض متعددة ومختلفة, منها تعريف الحقول Fields والمناظير Views ضمن المواقع والقوائم في الـ SharePoint بشكل عام وسنبدأ إن شاء الله بكيفية استخدام الـ CAML في عملية استخراج البيانات من القوائم أو مايسمى بـ CAML Query.

هيكلية لغة الاستعلام CAML Query
جميع الصيغ التي تهدف إلى استخراج البيانات من أي قائمة لها الشكل التالي:


<query>
<where>
...
</where>
<groupby>
...
</groupby>
<orderby>
...
</orderby>
</query>


Query
حيث يعتبر العنصر Query أول عناصر هذه الصيغة وجميع العناصر الأخرى تنحصر بين و , والعناصر التي تأتي تحت هذا العنصر مباشرة هي:
  • Where
  • OrderBy
  • GroupBy

ملاحظة: لا يجب استخدام هذا العنصر في حال استخدام الصف SPQuery عند كتابة شيفرة بلغة C# أو VB.NET لاستخراج البيانات من القوائم بالاعتماد على لغة الاستعلام CAML.

Where

يدل اسم هذا العنصر على وظيفته حيث يعبر عن وجود شرط يجب أن تحققه العناصر التي سيتم استخراجها من القائمة التي تنفذ عليها عملية الاستعلام, وضمنها يمكن استخدام العناصر التالية فقط:

  • And
  • BeginsWith
  • Contains
  • DateRangesOverlap
  • Eq
  • Geq
  • Gt
  • IsNotNull
  • IsNull
  • Leq
  • Lt
  • Membership
  • Neq
  • Or

وطبعاً يمكن الدمج بين العناصر السابقة لتوفير مجموعة من الشروط والفصل بينها باستخدام And أو Or, وإجراء عمليات حسابية بسيطة ويمكن استخدام ثوابت معرفة سابقاً في لغة الاستعلام CAML.

OrderBy

وظيفة هذا العنصر هو ترتيب نتائج الاستعلام وفقاً لحقل Field أو أكثر من حقول القائمة التي يُنفذ الاستعلام عليها, وصيغة هذا العنصر هي:


<OrderBy>
<FieldRef
Ascending = "TRUE" "FALSE"
Name = "Text" />
...
</OrderBy>


حيث استخدم العنصر FieldRef لتعريف اسم الحقل الذي سيتم ترتيب النتائج وفقاً له, وذلك بتحديد الخاصتين التاليتين:
  • Ascending: وتقبل إحدى القيمتين TRUE أو FALSE فول كانت القيمة هي TRUE فسيتم ترتيب نتائج الاستعلام بشكل تصاعدي وفقاً للحقل الحالي (وهي القيمة الافتراضية) أما لو كانت القيمة هي FALSE فسيتم ترتيب نتائج الاستعلام بشكل تنازلي وفقاً للحقل الحالي.
  • Name: اسم الحقل الذي سيتم الترتيب وفقاً له, وهنا يجب كتابة اسم الحقل بشكل صحيح مع الانتباه إلى أن اسم الحقل غالباً هو ليس نفسه الاسم الظاهر فهو يختلف باختلاف طريقة تسمية الحقل عند إنشاء أعمدة القائمة.

GroupBy

يُستخدم هذا العنصر بهدف تجميع النتائج حسب أحد حقول القائمة, ولها الصيغة التالية:



<GroupBy
Collapse = "TRUE" "FALSE">
<FieldRef Name = "Field_Name"/>
</GroupBy>

وهذا العنصر لها خاصية اسمها Collapse وتأخذ إما القيمة TRUE عندها سيتم طي البيانات ضمن مجموعات أما FALSE فسيتم توسيع كل المجموعات وإظهار البيانات, أما العنصر FieldRef فيستخدم فقط الخاصية التالية:
  • Name: اسم الحقل الذي سيتم التجميع وفقاً له, وهنا يجب كتابة اسم الحقل بشكل صحيح مع الانتباه إلى أن اسم الحقل غالباً هو ليس نفسه الاسم الظاهر فهو يختلف باختلاف طريقة تسمية الحقل عند إنشاء أعمدة القائمة.