d مدونة الفريق – الصفحة 29 – مدونة فريق شركة المطورون بلس

Blog

  • تحديث ثغرة التشفير في asp.net

    صدر اليوم تحديث الثغرة التي سببها فك تشفير الكوكيز في ال Membership وهي ما كانت تعتبر خطيرة إذا لم يتم تغيير التشغير

    التحديث لا يتطلب تغييرات في الكود ، وينزل على أنظمة الوندوز أغلبها ، أيضا بالنسبة للمستخدمين العاديين فلا بأس بتحميله ، الهدف من التحميل هو سيرفرات الاستضافة

    (المزيد…)

  • حذف الفراغات الموجودة بين عناصر القائمة في أداة Menu

    كثيرا ما نقوم بتحويل عناصر القائمة الخاصة بالموقع إلى صور بدلا من النصوص فهي تجعل القائمة تبدو أجمل، ولكن هذا
    الجمال سيتلاشى بسبب الفراغات التي ستظهر بين الصور، فتظهر القائمة بشكل سيء لأنها تظهر عبارة عن صور مفككة غير مترابطة وتفقد بذلك معنى القائمة التي يجب أن تبدو عليها.
    والحل السريع لهذا الأمر هو وضع خلفية للقائمة وتتم بالطريقة التالية
    عمل style يحتوي على الخلفية ووضعه بين head tag

    
    <style type="text/css">
    .menuItem
    {
    background-image : url(http://www.gc.ca/images/lfblt.gif);
    padding:2px 5px;
    }
    </style>
    

    (المزيد…)

  • كل ما يتعلق بنشر موقعك على الإنترنت

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

    قبل رفع الموقع على الإنترنت ، تحتاج  لضبط عدة أمور في الموقع ، فمثلا يجب عليك لكي تنشر الموقع ألا يكون يحتوي على أخطاء برمجية لأنك لن تستطيع إخراجه في الصيغة المطلوبة، أيضا هنالك أمور يجب التأكد منها مثلا:
    1- مراجعة الموقع مرة أخرى كاملا ، وذلك بسبب ظهور أخطاء بسبب التعديل والتجربة ، ويفضل أن يقوم شخص غير مبرمج الموقع نفسه بمراجعته.
    2- تعطيل <compilation debug=”true” من الويب كونفج وذلك لكسب المزيد من السرعة.
    3- ضبط ترميز الصفحات ككل أو من الويب كوتفيج.
    4- إذا كنت مهتم بمحركات البحث وأرشفة موقعك، يمكنك ضبط بعض الخصائص في الموقع ، والتي سيتم التطرق لها في موضوع منفصل لاحقا.

     

    الاستضافة :
    إن اختيار شركة الاستضافة المناسبة له العديد من الفوائد عليك عزيزي المبرمج ، وذلك لتنوع الاستضافات واختلاف مزاياها ، ولكن بشكل عام ابحث عن :
    1- الشركة التي تقدم أخر نسخة من التحديثات والبرمجيات فمثلا ابحث عن الشركة التي تدعم آخر نسخة من إصدار التشغيل وندوز ، وآخر نسخة من محرك قواعد البيانات ، وآخر نسخة من منصة العمل دوت نت .
    2- الشركة التي تعطيك لوحة تحكم سهلة وكاملة وسيأتي التطرق لبعض هذه اللوحات..
    3- الشركة التي تعطيك الخدمات والصلاحيات العديدة على استضافتك ، مثلا أداة رفع قواعد البيانات والتحكم بها أون لاين ، لا يتطلب الأمر أن تراسل الدعم الفني دائما ليقوموا لك بما تريد.
    4- الشركة التي توفر دعم فني متواصل وسريع.
    5- الشركة التي توفر لك قواعد بيانات أكبر مساحة وأكثر عددا ، فبعض الشركات تعطيك حدود في مساحة القاعدة وقد تعطيك قاعدة بيانات سكول سيرفر واحدة فقط.

    لوحات الاستضافة :
    تتنوع لوحات تحكم الاستضافة وتتمايز فيما بينها وبعد تجربة طويلة ومريرة سأعرض أشهر اللوحات الموجودة في الإنترنت، حيث إذا عرضت عليك عدة شركات فاختر الشركة ذات اللوحة الأفضل

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

    لوحة تحكم هيلم Helm :
    هي ثاني أشهر لوحة انتشارا وهي رائعة وتتميز عن لوحة تحكم بليسك بأنها سريعة ، وأبسط في الاستخدام.

    لوحة تحكم WebHost4Lifet4Life
    هذه اللوحة سريعة جدا وكاملة المزايا إلا أنه يعيبها التعقيد والذي للآن أتغلب عند استخدانها من حين لآخر.

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

    هنالك العديد من اللوحات التي استخدمتها والتي تتميز كل واحدة منها ولم اذكرها لانها خاصة بشركات معينة بحد ذاتها وليست لوحات يمكن شراءها وتركيبها، ولكن اللوحات التي فوق هي الأكثر انتشارا

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

    وسأتطرق هنا للموقع التقليدي Web Site وليس Web Application ولأنه وببساطة من يستخدم ال Web Application عليه أن يكون متمرساً.
    لكي يعمل الموقع بعد رفعه يجب عليك -قبل هذا- أن تقوم باعداد النشر وذلك عبر الذهاب لقائمة Build  ثم  Publish Web Site

    ستظهر الخيارات التالية:
    asp.net publish site
    عليك أولا ان تحدد مجلد لتقوم بنشر الملفات بداخله ومن ثم اختيار أحد الخيارين في الصندوق الأحمر او يمكنك الاستمرار بدونهما.
    – الخيار الأول Allow this precompiled site to be updatable
    عند عدم اختيار هذا الخيار أو أي خيار آخر ومتابعة عملية النشر ستجد أن الملفات الخاصة بالكود البرمجي قد اختفت -أقصد في مجلد النشر- وبقيت الصفحات العادية بدون صفحات ال MasterPage  وال UserControl ورغم هذا يمكنك التعديل على تصميم الصفحات المنشورة وقتما تشاء، مع العلم أن الكود كله ذهب إلى مجلد Bin  في ملفات DLL ويمكنك التأكد من هذا الأمر ، حيث ستجد ملفات غريبة بأسماء طويلة .
    ولكن إذا قمت باختيار هذا الخيار ستجد بالإضافة لما سبق من الملفات  أن صفحات ال MasterPages,UserControls ما زالوا موجودين ويمكنك التعديل على تصميمها أيضا .

    – الخيار الثاني : Use fixed naming and single file assemblies
    هذا الخيار مفيد إذا كنت ترفع وتعدل في الموقع كثيرا حيث ستجد أن الملفات في مجلد Bin عند كل عملية نشر ستكون بنفس الاسم تقريبا ، مع العلم أنه لا يمكنك التعديل على ملفات التصميم ، وبعد تجربة طويلة اتضح لي أن اختيار هذا الخيار لوحده فقط هو أفضل الخيار من ناحية عدم ظهور أخطاء عن الفتح لأول مرة ، رغم مشكلة أنك تحتاج لرفع الموقع حتى عند إجراء أبسط تعديل على تصميم صفحة.

    رفع الموقع:
    يمكنك رفع الموقع عبر نفس الفيجوال ستوديو بواسطة أداة Copy Wb Site  أو عبر تحميل ملحقات مميزة للخادم IIS 7 ولكنني أستخدم دائما برنامج  FTP  تقليدي ، وذلك لسرعة الرفع عبره.
    عند رفع الموقع أول مرة يتوجب عليك رفع كافة الملفات ولكن عند الرفع مرة أخرى فلا يتوجب رفع ملفات الصور أو الملفات العادية كالملفات المضغوطة ، بل يتوجب عليك إذا اخترت الخيار الثاني فقط أن ترفع مجلد Bin  لوحده ، بل حتى تستطيع رفع المجلد بدون رفع المكتبات كملفات اداة الأجاكس مثلا، حيث ستوفر بعض الحمل وتختصر الوقت وذلك عندما تحتاج لترفع مرارا وتكرار بشكل يومي.

    ضبط الاستضافة:
    المشكلة الأكبر تكمن في هذه النقطة حيث تختلف شركات الاستضافة في اعداداتها ولكن بشكل أساسي تأكد من إصدار منصة العمل على الاستضافة ، وأيضا تأكد من قاعدة البيانات
    فإذا كانت لديك قاعدة بيانات SQL SERVER  اكسبريس وكانت الاستضافة تدعمها فلا مشكلة ، ولكن إذا كانت الاستضافة لا تدعمها أن أن قاعدتك تركب على سيرفر وليست اكسبريس ، يتوجب عليك تغيير جملة الاتصال ConnectionSring  ويتوجب عليك إَضافة اسم مستخدم وكلمة مرور لها عند رفعها ( الأمر بسيط ) ويتطلب أيضا أن تدخل اسم السيرفر المرفوع عليه قاعدة البيانات .

    في كل الأحوال إن واجهتك مشكلة في رفع الموقع عزيزي القارئ يمكنك مراسلتي وبإذن الله وفضله سأحلها لك مهما كانت. كانت.

    بالتوفيق للجميع

    (المزيد…)

  • تشفير كلمة المرور في ASP.NET Membership

    المواقع المحترمة – ليست شرط أن تكون كبيرة – تحترم خصوصية مستخدميها ، ومن أكثر مظاهر احترام خصوصة المستخدم هي تشفير كلمة مروره وتشفير البيانات الخاصة الحساسة. وسأحاول أن استعرض هذا الأمر والمشكلة التي تواجه من يريد تشفير كلمة مروره في ASP.NET.

    عندما تقوم بتشفير كلمة المرور في الموقع الذي تبرمجه ، تعطي للمستخدم نوع من الثقة من عدة نواحي منها أن مدير الموقع لن يقوم أبدأ بمعرفة كلمة مروره – والتي تكون غالبا موحدة في كل المواقع – ، أو أن المدير لن يستخدم عضويته ، أو حتى أن الموقع لو تم اختراقه ، فلن يعرف المخترق البيانات الحساسة بالمستخدم وخصوصا كلمة المرور.

    عند تشفير كلمة المرور وتخزينها في قاعدة البيانات فإن المستخدم لا يمكنه عمل استرجاع كلمة المرور ، بل يمكنه طلب تغيير كلمة المرور إلى كلمة جديدة بدون معرفة الكلمة السابقة . (المزيد…)

  • بيئة عمل ASP.NET

    بيئة عمل ASP.NET

    من المهم أن تعرف كيف يمكنك التعامل مع بيئة عمل لإنشاء المواقع بكل سهولة ويسر، وأفضل
    بيئة لهذا الغرض هي Microsoft Visual Studio ، والتي تقول مايكروسوفت عنها أنها أقوى
    بيئة تطوير في العالم.

    توفر مايكروسوفت عدة نسخ منها منها ما هو مجاني مثل الويب ديفيلوبر ، أو ما هو مدفوع
    مثل الفيجوال ستوديو بكافة اصداراته.

    (المزيد…)

  • برمجة صفحة RSS خاصة لموقعك

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

    قبل بدء بناء الصفحة يجب أن نعلم المتصفح أن موقعنا به خدمة ال RSS  حتى يتفعل تلقائيا رابط أو أيقونة ال RSS ، وأفضل طريقة لذلك هو إضافة الوسوم الدليلة في صفحات الموقع كالتالي

    <link rel=”alternate” type=”application/rss+xml” title=”Developers (RSS 2.0)” href=”RSS.aspx” />

    السطر بالأعلى بسيط حيث حددنا اسم الخدمة وكذلك رابط الصفحة ونتائج محتوى الصفحة ، وتستطيع أن تغير رابط الصفحة مثلا بدلا من RSS.aspx  أن تضيف الصفحة التي ترغب بها

    الآن أتى الجد وكتابة شيفرة الصفحة الرئيسية للخدمة

     

    في حدث بدء تحميل الصفحة نحدد مخرجات الصفحة الحالية كالتالي

    Response.Clear()

    ‘ Response.ContentType = “text/xml” يجوز هذا السطر أو السطر الذي يليه

    Response.ContentType = “application/rss+xml;”

     

     

    ثم بعدها نبدأ بعملية كتابة وسوم ال XML وهنا أتوقع أنك تعاملت مع ملفات XML  مسبقا وكتبت بها ، ولكن إن لم تكن كذلك فإن الشيفرة سهلة وفقط عليك تغيير الوسيطات كما ترغب

    مع العلم أن  هذه الحقول أو الوسوم ليست من عندي وإنما هي أساسية لكل خدمة RSS

    Dim xlw As New XmlTextWriter(Response.OutputStream, Encoding.UTF8)

    xlw.WriteStartDocument()

    xlw.WriteStartElement(“rss”)

    xlw.WriteAttributeString(“version”, “2.0”)

    xlw.WriteStartElement(“channel”)

    xlw.WriteElementString(“title”, “مقالات مطورو دوت نت “)

    xlw.WriteElementString(“link”, “http://developers.ps/Defaulte.aspx”)

    xlw.WriteElementString(“description”, “The latest headlines and articles from the world of ASP.NET,Microsoft() ‘s Web development platform.”)

    xlw.WriteElementString(“copyright”, “(c) 2009, Developers . All rights reserved.”)

    xlw.WriteElementString(“ttl”, “5”)

     

    الان تبقالان تبقى خدمة جلب البيانات وكتابتها ، ويمكن فعل ذلك بالقراءة عبر قاعدة بيانات أو ملف XML  أو حتى من مستند نصي ، المهم أن تقوم بتعبئة البيانات على نفس النمط الذي سأستخدمه ، وأنا سأقوم بفعل ذلك باستخدام جدول من قاعدة بيانات ، وهو جدول المقالات

    Using conn As New SqlConnection(ConfigurationManager.ConnectionStrings(“connstr”).ConnectionString)

    Dim cmd As SqlCommand = conn.CreateCommand

    & cmd.CommandText = “select top 10 ID,Title,des,dob from Articles  order by id desc”

     

    conn.Open()

    Dim objReader As SqlDataReader = cmd.ExecuteReader()

    While objReader.Read()

    xlw.WriteStartElement(“item”)

    xlw.WriteElementString(“title”, objReader.GetString(1))

    xlw.WriteElementString(“description”, objReader.GetString(2))

    xlw.WriteElementString(“link”, “http://developers.ps/News.aspx?id=” & objReader.GetInt32(0).ToString())

    xlw.WriteElementString(“pubDate”, objReader.GetDateTime(3).ToString(“R”))

    xlw.WriteEndElement()

    End While

    ثم سأقوم بإغلاق الوسوم والمسارات الحالية

    objReader.Close()

    xlw.WriteEndElement()

    xlw.WriteEndElement()

    xlw.WriteEndDocument()

    xlw.Flush()

    xlw.Close()

    Response.End()

    End Using

     

    الآن أصبح لديك خدمة RSS  في موقعك بكل سهولة ويسر ومرفق أيضا صفحة جاهزة لمن لم يحالفه الحظ في نفس الشيفرة من هذا المقال.

    رابط تحميل الشيفرة

    (المزيد…)

  • نشر دورة asp.net مرئية

    الحمد لله ، بعد أن عثرت على بعض الوقت قمت برفع دورة asp.net ، كنت قد أعطيتها لأصدقاء منذ فترة بهدف نشرها على الإنترنت

    الدورة تأخذك في مواضيع عديدة ومتنوعة في asp.net ، وحاولت أن أجعلها شاملة لحتى لأصغر الأمور.

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

    ما زلت أرفع في الدورة ، وستشاهدونها في قسم الفيديو

    الدورة تحتوي على المواضيع التالية

    – لماذا الدوت نت
    – بنية الدوت نت وتطورها
    – مقدمة عن asp.net وتطورها ، وتطور الويب
    – Visual Studio
    – HTML- XHTML in asp.net
    – CSS
    – VB.NET
    Programming Language
    Control Statments
    Arrays
    Gollections
    Generics
    NameSpaces
    OOP : Function,Inheritance,Polymorphims,Incapsulation, Building Library
    Exceptions
    – Web Forms
    – Controls 1
    – View State
    – Web Forms Processing Stages
    – Validation
    – Server Controls
    – PostBack
    – بنية مشروع Global,WebConfig
    – User Controls
    – Master Pages
    – State Managment: Cookies,Session,Applicatopn,Context,QueryString,Cach
    – SQL Server: Downloading, T-SQL, Advanced
    – ADO.NET
    – Single Data Binding
    – Rich Data Binding: GridView,ListView, DataList, DetailsView, FormView
    – More on GridView
    – DataAccess, ObjectDataSource
    – Files And Streams: Files, Folders,Streams, Uploading
    – Themes
    – XML
    – Website Navigation: TreeView, SiteMaps,Menu, AdRotator
    – Membership,Forms Authentication
    – Roles
    – Profiles
    – Localization
    -WebParts
    – 3rd party controls
    – JavaScript with asp.net
    – Ajax, AjaxControlToolkit
    – Silverlight, XAML,WPF
    – WebServices
    – WCF
    – Working with MS Access, MySQL
    – Send Email

    – Deploy your site
    -Routes
    – DotNetfuscator
    – IIS
    – JQuery
    – Linq
    – Dynamic Data
    – Azure
    – SEO with ASP.NET
    – Performance
    – WAP

    هنالك بعض الفيديوهات أعملها أحيانا لأشخاص ، وسأقوم أيضا برفعها لتعم الفائدة وسأخفف من كتابة المقالات التقنية إن شاء الله

    الدورة ستجدونها في المصادر التعليمية للموقع تحت بند فيديو تعليمي

  • توتر برمجيا

    موقع Twitter لم يعد أحد يدخل الويب  ولا يعرف هذا الموقع ، بالرغم من عدك اتضاح فكرته لدى الجميع أو الهدف منه ، او أن الموقع يبدو غير مفيد ، إلا أنه يتطلب احيانا منا الربط معاه لأسباب عديدة ، ولذلك تطرقت لطريقة الربط مع تويتر

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

    Code

    Imports x = Twitterizer.Framework

    (المزيد…)

  • نحو Web.Config نظيف ومرتب ( جديد في دوت نت 4.0 )

    إن أكثر ما يزعج في الويب كونفيج، هو وجود العديد من الوسوم الغير مستخدمة يوميا لنا كمطوري مواقع مثل وسوم دعم الأجاكس AJAX ، Dynamic Data ، وهذه الوسوم وجدت لتجعل الإصدارات السابقة تدعم الإضافات الغير مدعومة بها من الأساس.

    ولكن الآن في الإصدار الرابع من الدوت نت ، عندما تفتح ويب كوفيج فإنك ستجده جميل ومرتب ولا يحتوي على الوسوم الزائدة التي كنا نراها دائما، ولعلك تتساءل أين ذهبت هذه الوسوم ، وعلى الرغم من اختفائها إلا أن الموقع يعمل ويدعم الأجاكس بدون مشاكل.
    هذه ميزة جديدة في الإصدار الرابع حيث بإمكانك الحصول على ويب كونفيج مرتب وجميل ومدعوم بهذه الوسوم ( والتي لا يتوجب أن تراها لأنك لن تعدل عليها ) بسهولة ويسر كالتالي:
    لاحظ أن الويب كونفيج قد خصص إصدار المنصة في الوسم compilation كالتالي

    Code

    <compilation debug="true" strict="false" explicit="true" targetFramework="4.0"/>

    ونجده قد أضاف أيضا

    Code

    <system.webServer>
        <modules runAllManagedModulesForAllRequests="true"/>
    </system.webServer>

     مع العلم أن هذا الوسم جديد في الخادم IIS7 ، وهذه صورة نهائية للويب كونفيج

    بالتوفيق للجميع

  • أداة ListView في ASP.NET 3.5

    إن عرض البيانات بطريقة جميلة للزائر هو أساس عمل مطورو المواقع، وقد وفرت مايكروسوفت
    مجموعة أدوات تحت بند Data في
    صندوق الأدوات لهذا العرض، فإن أردت عرض البيانات على شكل جدول فإنك ستستخدم على سبيل المثال أداة GridView،
    وإن أردت عرض البيانات في عمودين أو أكثر فإنك ستستخدم DataList وغيرها.
     ولنعرض البيانات التالية من القاعدة باستخدام أداة ال GridView بالشكل التالي :

    إن مخرجات قاعدة البيانات ستكون في النهاية على شكل جدول من صفوف وأعمدةـ والسبب هو
    أن أداة الجريد فيو ستترجم ليفهمها المتصفح في النهاية على أنها وسوم HTML تقليدية.

    وهنا السؤال: كيف يمكننا التحكم بشكل العرض للبيانات في
    أداة ال GridView؟؟

    طريقة العرض للبيانات في أداة ال GridView محدودة فلا يمكنك عرض البيانات بالشكل
    وبالتنسيق الذي تريده، فمثلا أردت عرض المخرجات النهائية على شكل div أو أردت عرضها
    بأي طريقة مخرجات بعيدة عن الجدول وصفوفه. عندها أداة GridView لن تسعفك.
    مشكلة أخرى
    ستواجهك 
    لو احتجت أن تعرض البيانات بأكثر من عمود واحد وأيضا بعرضها بأكثر من صفحة واحدة ..ماذا ستستخدم ؟؟
    لن تستطيع استخدام أداة ال GridView لأمر كهذا لأنها لا تدعم عرض البيانات بأكثر من عمود واحد، ولن تستطيع استخدام أداة ال DataList لأنها لا تدعم عرض البيانات في أكثر من صفحة.
    إذا: ما هو الحل؟؟
    شركة مايكروسوفت لا تغفل أبدا عن منتجاتها وتسعى دائما لتقديم الأفضل، فقد أضافت
    أداة جديدة مع منصة العمل 3.5 وهي أداة ال ListView والتي جمعت مميزات GridView و
    DataList و Repeater، بل وتميزت بأمور أخرى أفضل، فأنت تستطيع عرض البيانات بالشكل
    الذي تريده وأيضا بالتنسيق الذي تريده باستخدام CSS، بعكس الأدوات الأخرى فأنت لا
    تستطيع استخدام CSS معها بكل حرية في بناء هيكل الجدول.

    ولنستعرض الفروقات بينها وبين جميع أدوات عرض البيانات :
     

    الأداة عرض البيانات في عدة صفحات
    Pagining
    عرض البيانات على شكل مجموعات
    Grouping
    الشكل المرن التعديل والحذف
    Editing/Deleting
    الإضافة
    Inserting
    الترتيب
    Sorting
    ListView
    GridView
    DataList
    Repeater
    DetailsView    
    FormView

    ولا يعني الرمز X أن الميزة لا تدعمها الأداة بشكل نهائي بل يمكن التحايل على الأمر
    ولكن في أداة ال ListView فإن الأمور مدعومة بشكل أساسي.

    ولن تتضح الأمور إلا بمثال يبرز المميزات الرائعة التي تتميز بها هذه الأداة:

    في مثالنا سنعمل على قاعدة بيانات تحتوي على جدول باسم country يحتوي على
    ثلاث حقول هي ( رقم الدولة ، اسم الدولة ، العاصمة )
     أداة ال ListView تحتوي على عدة قوالب كل له وظيفته الخاصة وهذه القوالب هي :
    * LayoutTemplate : وهي تختص بالعنصر الأساسي الذي يعرف محتوى ال ListView مثل عنصر
    table أو div أو span التي تحيط بالمحتوى المعرف بداخل القالب ItemTemplate أو
    القالب GroupTemplate بمعنى آخر هي خلفية البيانات؟
    * ItemTemplate : وهي تتحكم بالمحتوى الذي سيعرض العناصر الفرعية  وهي عبارة
    عن عرض البيانات المرتبطة بال ListView على شكل متكرر
    * ItemSeparatorTemplate :  تستخدم لوضع فواصل بين العناصر
    * GroupTemplate : وهي تختص بترتيب العناصر على شكل مجموعات
    * GroupSeparatorTemplate : تستخدم لوضع فواصل بين المجموعات
    * EmptyItemTemplate : تستخدم لعرض نص أو غيره في حال عدم وجود قيمة لإحدى عناصر ال
    ListView
    * EmptyDataTemplate : تستخدم لعرض نص أو غيره في حال عدم وجود بيانات في ال
    ListView
    * SelectedItemTemplate : تستخدم لعملية اختيار أحد العناصر المعروضة في ال
    ListView
    * AlternatingItemTemplate :
    تستخدم لعرض عنصر بعد كل ItemTemplate
    * EditItemTemplate : تستخدم لعملية التعديل
    * InsertItemTemplate : تستخدم لعملية الإضافة

    والهيكل العام لهذه القوالب في ال ListView تعرض بالشكل التالي :

    الآن نعود إلى مثالنا :
    يتم إضافة أداة ال ListView وتخصيص مصدر البيانات لها من خلال الخاصية DataSourceID
    وأهم قالبين من قوالب ال ListView هما
    LayoutTemplate
    ItemTemplate
    ويجب تخصيص العنصر placeHolder في ال ListView إما في ال LayoutTemplate أو ال
    GroupTemplate ويتم ذلك بإعطاء القيمة itemPlaceholder لخاصية ID التابعة للأداة
    ويجب أيضا إعطاء القيمة server للخاصية runat التابعة لل placeholder  ـ حيث
    سيتم استبدال محتوى أداة placeHolder في الهيكل العام ( الخلفية ) بمحتوى العنصر ItemTemplate

    code

    <asp:ListView ID="ListView1" DataSourceID="SqlDataSource1" runat="server">
        <LayoutTemplate>
            <table border="1" width="300"
    cellpadding="5">
                <tr id="Tr1"
    runat="server" style="background-color: #CCCCCC;">
                   
    <th id="Th1" runat="server" align="left">رقم</th>
                   
    <th id="Th2" runat="server" align="left">الدولة</th>

                   
    <th id="Th3" runat="server" align="left">العاصمة</th>

                </tr>
               

                <tr id="
    itemPlaceholder" runat="server"></tr>

            </table>
        </LayoutTemplate>
        <ItemTemplate>
            <tr id="Tr2" runat="server">
                <td align="left">
    <asp:Label ID="CountryID" runat="server"><%#Eval("CountryID")%></asp:Label>
    </td>
                <td align="left">
    <asp:Label ID="CountryName" runat="server"><%#Eval("CountryName")%></asp:Label>
    </td>
                <td align="left">
    <asp:Label ID="CapitalCity" runat="server"><%#Eval("CapitalCity")%></asp:Label>
    </td>
            </tr>
        </ItemTemplate>
    </asp:ListView>

    والقيمة itemPlaceholder هو الاسم الافتراضي للأداة placeholder ولكن تستطيع تغييره
    بإعطاء الخاصية itemPlaceHolderID التابعة لأداة ال ListView الاسم الذي تريده
    بالشكل التالي :

    Code

    <asp:ListView ID="ListView1" DataSourceID="SqlDataSource1"
    ItemPlaceholderID="Placeholder1" runat="server">
        <LayoutTemplate>
            <table border="1" width="300"
    cellpadding="5">
                <tr id="Tr1"
    runat="server" style="background-color: #CCCCCC;">
                   
    <th id="Th1" runat="server" align="left">رقم</th>
                   
    <th id="Th2" runat="server" align="left">الدولة</th>
                   
    <th id="Th3" runat="server" align="left">العاصمة</th>
                </tr>
                <tr
    id="Placeholder1" runat="server"></tr>
            </table>
        </LayoutTemplate>
    </asp:ListView>

    قمنا هنا بتعريف الهيكل العام لل ListView في وسم LayoutTemplate وهو جدول يحتوي
    على صفين وثلاث أعمدة ، والصف الأول يحتوي على أسماء الأعمدة والصف الثاني هو الصف
    الذي سيتكرر مع كل صف تم جلبه من نتيجة مصدر البيانات

    وستكون النتيجة بالشكل التالي:

     

    وللتفريق بين الصفوف المتتابعة يتم استخدام وسم AlternatingItemTemplate
    فمحتوى هذا الوسم هو نفس محتوى وسم ItemTemplate ولكن بتلوين الصف بلون مخالف فيتم إضافة
    الوسوم التالية إلى الأداة :

    Code

    <AlternatingItemTemplate>
        <tr id="Tr3" runat="server" style="background-color: #FFFFCC;">
            <td align="left"> <asp:Label ID="Label1"
    runat="server"><%# Eval("CountryID")%></asp:Label> </td>

            <td align="left"> <asp:Label
    ID="CountryName" runat="server"><%#Eval("CountryName")%></asp:Label> </td>

            <td align="left"> <asp:Label
    ID="CapitalCity" runat="server"><%#Eval("CapitalCity")%></asp:Label> </td>

        </tr>

    </AlternatingItemTemplate>

    فتصبح النتيجة بالشكل التالي :

    وهكذا نكون قد كونا الهيكل العام لأداة ال ListView وسيتم توضيح باقي القوالب في
    مواضيع أخرى بإذن الله

    بالتوفيق للجميع