الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

درس+برنامج : برنامج مستعرض الصور MyAlbum2 بإستخدام Asp.Net and Jquery

بدأه Xhack في 26 يونيو 2010 · 17 رد · 5,625 مشاهدة · في ASP.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بسم الله الرحمن الرحيم

كثيرة هي الطلبات من الاخوة والأخوات الذين يسئلون عن معرض صور ولذلك اضع بين يديكم مستعرض الصور البسيط هذا والذي هو باستخدام مكتبة (Jquery) مع لغة (Asp.Net) والهدف من المستعرض هو عرض الصور من مصدر بيانات (DataSource) سواء قواعد بيانات مثل (Sql Server) او ملفات (XML)

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

صورة من مستعرض الصور

myalbum.gif

مميزات مستعرض الصور

• دعم كامل لمصادر البيانات المختلفة

فيمكنك أن تخزن الصور في قواعد بيانات او تقوم بتخزينها في ملفات (Xml)

• عرض صورة جاري التقدم (Progress Image)

كما ترى في الصورة التي في الأعلى فأن الصورة التي لم تظهر بعد يكون مكانها صورة جاري التحميل (جميل جدا ,صح)

• إستخدام (Linq To Sql) وذلك في إضافة الصور الى قاعدة البيانات وإستعرض الصور من قواعد البيانات

• إستخدام كترول (Asp.net Repeater) والغرض من ذلك انه عن عرض الصفحة فإن الأوسم (Tags) التي سوف تظهر هي عبارة عن Div

Custom Paging

بإستخدام (Linq) والمقصود هنا التنقل المخصص بين الصفحات من الخلف الى الأمام أو من ألامام إلى الخلف وهذا يتم عن طرق الشفرة(Code) لأن (Asp.net Repeater) لا تدعم التنقل الإفتراضي (Default Paging).

طبعا مستعرض الصور يستخدم مكتبة (Jquery) وذلك لعمل التأثيرات مثل الظهور (Fade out) والإختفاء (Fade In) مع إمكانية تحديد السرعة للظهور والإختفاء

كان غرضي من المشروع او المعرض الخاص بالصور هو أن أجمع أكثر من فائدة في نفس الوقت فأردت أن أريك القوة الحقيقة لمكتبة (Jquery) وايضا القوة الحقيقة لتطبيق لغة الإستعلام المدمجة (LINQ) وكيف قامت في الحقيقة بتبسيط الأشياء لنا . لنبدء بالشرح على بركة الله.

أولا الفصائل (Classes)

طبعا برنامج مستعرض الصور يحتوي على فصيلة واحدة إسمها (ImageManger) وجميع محتوياتها ساكنة (static) أي بمعنى أنه لاداعي لإنشاء كائن (New Object) من هذه الفصيلة والغرض من هذه الفصيلة هو عرض البيانات (Select statement) ومعالجة التنقل بين الصفحات بناء على حجم او عدد الصور في الصفحة الواحدة أنظر الصورة التالية

classdiagram.png

والان نأتي للشرح عمل البرنامج ببساطة

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

protected void Page_Load(object sender, EventArgs e)
{
     if (!IsPostBack)
      {
        //Start From 1 Thats mean the first page
        ViewState["Counter"] = 1;
      //Get the number of pages and save it in the ViewState
      ViewState["ImageRow"] = ImageManager.GetRowNumber();
     //Get the number of images (5,6,...) As you want
      Repeater1.DataSource = ImageManager.GetImages();
     Repeater1.DataBind();
  }
}

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

اولا عند الانتقال الى الصفحة التالية نقوم بتحديد عدد الصفوف المراد تجاوزها وزيادة عدد الصفحات مرة واحدة وايضا التحقق من إذا كان في الصفحة الاخيرة اما لا كما هو موضح في التالي

protected void Forward_Click(object sender, EventArgs e)
    {
        //Enable Backword button
        Backward.Enabled = true;
        //Increase the number of page based on the current number
        //number of rows that will be skipped
        int Row_Index = ImageManager.IncreaseRows((int)ViewState["Counter"]);
        //Check if this page is last page or not
        if ((int)ViewState["Counter"] < (int)ViewState["ImageRow"])
        {
            //Get the number of images based on the page
            SetSource(ImageManager.GetImages(Row_Index));
            //Save the current page in the ViewState counter
            ViewState["Counter"] = ImageManager.IncreaseValue((int)ViewState["Counter"]);
            //Check if we are in the last page then disable the foreword control
            if (ImageManager.IsLast((int)ViewState["Counter"],(int) ViewState["ImageRow"]))
            {
                Forward.Enabled = false;
            }
        }

    }

ثانيا عند الى الانتقال الى الخلف نقوم بنفس الخطوات السابقة ولكن نتحقق اذا كان في الصفحة الاولى اما لا كما هو موضح في التالي

protected void Backword_Click(object sender, EventArgs e)
    {
        //Enable the ForeWord button
        Forward.Enabled = true;
        //number of rows that will be skipped
        int Row_Index = ImageManager.DecreaseRows((int)ViewState["Counter"]);
        //check if this page is the first page or not
        if ((int)ViewState["Counter"] > 0)
        {
            //decrease the number of pages
            ViewState["Counter"] = ImageManager.DecreasValue((int)ViewState["Counter"] );
            //number of skipped row ,this number will be use in skip method
            int SkipRows = ImageManager.SkippedRow(Row_Index);
            SetSource(ImageManager.GetImages(SkipRows));
            //Check if we are in the first page then disable the foreword control
            if (ImageManager.IsFirst((int)ViewState["Counter"]))
            {
                SkipRows = 0;
                Backward.Enabled = false;
            }

        }
    }

ملاحظة

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

في الختام

اريد في ختام هذا الموضوع ان اوضح لكم الغرض الاساسي من هذا المستعرض حيث انني اجد في الكثير من المنتديات من

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

أكثر من فائدة مثل Jquery,Linq To Sql وأردتها ان تكون باسلوب ممتع وايضا ان تفيد الجميع في جميع مشاريعهم وتطبيقاتهم

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

نقطة اخيرة

حاليا في هذه الاثناء اعمل على الاصدار الثالث والذي سوف يكون اكثر من مجرد مستعرض صور ان شاء الله ولكن يبقى السؤال هل تريدون الاصدار الجديد يستخدم Jquery ام Silverlight

والله الموفق

MyAlbum2.0.rar

تم تعديل هذه المشاركة بواسطة Xhack في 26 يونيو 2010 في 11:06

3
#2

شكرا جزيلا اخي

اخي السيلفر لايت يحتاج الى مشغل اما الجي كويري مكتبة فقط لا غير (انت تعرف ذلك طبعا) وبرايي جي كويري افضل لسبب انها تتعامل مع جميع المتصفحات وبدون اضافات

لك كل التحية مني وشكرا لك

ولكن سؤال منذ فترة وانا اسال عن توجيهات قبل المعالجة ولم الق جواب

ما فائدة السطر التالي

#pragma warning restore 1591

بالتوفيق والله يجزيك كل خير

In bad state

#3

جزاك الله خير اخي X-File على مرورك الكريم

اما بخصوص سؤالك فهنالك

pragma warning disable1591

وايضا هنالك

#pragma warning restore 1591

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

Suppress missing comments warning

بالتوفيق ان شاء الله

#4

شكرا جزيلا وبالتوفيق الدائم

oracle@arabdb.org

#5

جزاك الله خيرا

لكن هل بامكانك أن تضيف خاصية أضافة أكثر من البوم بحيث عند رفع الصورة يتم تحديد الألبوم التي سوف تظهر فيه؟

شكرا لك

#6

أشكرك أخي الكريم وجعلها في موازين حسناتك

يوجدخطاء عند تنفيذ البرنامج مارأيك .. الصورة مرفقة

post-203268-034059900 1277661058_thumb.j

المرفقات
بدون عنوان.jpg
#7

اخي الكريم انت فتحت المجلد الحاوي الحاوي للموقع

حاول فتح الموقع وليس المجلد الحاوي له

جرب وبالتوفيق

In bad state

#8

ما شاء الله مشكور أخي ................ لم أتعامل أبدا مع الجي كويري مثال جميل ..............

قل لمن يحمل هما ****** إن همــــا لا يدوم
:rolleyes: :rolleyes: :clapping: :rolleyes: :rolleyes:

مثلا تفنى المسـرة ***** هكذا تفنى الهموم

#9

السلام عليكم ورحمة الله وبركاته

معذرة ما هو الإصدار المستخدم في هذا المثال؟

#10

2010 والدوت نت 4 و sql server 2008

In bad state

#11
al3zabe كتب:

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

جزاك الله خير اخي الفاضل al3zabe اما بخصوص المشكلة التي لديك فانا لاعتقد انها من البرنامج اتوقع انها مشكلة في إطار العمل (net framework) على العموم جرب ماقاله اخي X-File وجرب عمل بعض الصفحات بإستخدام Linq To Sql

بالتوفيق إن شاء الله

#12

جزاك الله خير

فكيت المشروع باستخدام .net2005 و .net 2008

بيعطولي نفس المشكلة وقت التشغيل

مرفق لك صورة من المشكلة

/uploads/monthly_07_2010/post-135434-080240800%201278825907.jpg

Error 1 The type or namespace name 'DataClassesDataContext' could not be found (are you missing a using directive or an assembly reference?) C:\Documents and Settings\63335\Desktop\البوم صور\MyAlbum2.0\MyAlbumSite\MyAlbum.aspx.cs 18

جزاك الله خير

فكيت المشروع باستخدام .net2005 و .net 2008

بيعطولي نفس المشكلة وقت التشغيل

مرفق لك صورة من المشكلة

/uploads/monthly_07_2010/post-135434-080240800%201278825907.jpg

Error 1 The type or namespace name 'DataClassesDataContext' could not be found (are you missing a using directive or an assembly reference?) C:\Documents and Settings\63335\Desktop\البوم صور\MyAlbum2.0\MyAlbumSite\MyAlbum.aspx.cs 18

جزاك الله خير

فكيت المشروع باستخدام .net2005 و .net 2008

بيعطولي نفس المشكلة وقت التشغيل

مرفق لك صورة من المشكلة

/uploads/monthly_07_2010/post-135434-080240800%201278825907.jpg

Error 1 The type or namespace name 'DataClassesDataContext' could not be found (are you missing a using directive or an assembly reference?) C:\Documents and Settings\63335\Desktop\البوم صور\MyAlbum2.0\MyAlbumSite\MyAlbum.aspx.cs 18

post-135434-080240800 1278825907_thumb.j

المرفقات
1.JPG
#13

اخي الكريم walleed23 لكي يتم تنفيذ البرنامج لديك يجب ان يكون إطار العمل هو ( net FRAMEWORK 3.5) لانه يحتوي على مكتبات او مراجع ( LINQ) وطبعا يوجود في الفيجوال ستديو 2008 خاصية تحدد إطار العمل التي تريد العمل عليها إتبع الخطوات التالية حتى تقوم بتغير إطار العمل

أولا اظغط بزر الفارة اليمين على الموقع بعد ذلك إختر Property Page او مباشرة إظغط على Shift+F4 كما هو موضح في الصورة

post-55282-061682200 1278833998_thumb.pn

ثانيا حدد نوع اطار العمل طبعا هنا نحتاج الى (Framework 3.5) بعدذلك إظغط على زر الموافقة ( OK) كما هو موضح في الصورة التالية

post-55282-091399900 1278834233_thumb.pn

ثالثا قم باضافة مرجع (Reference ) الخاص ب(LINQ) وهو System.Linq في الصفحة الخاصة بالاكواد أنظر الى الصور بالاسفل

post-55282-054469100 1278834858_thumb.pn

اتبع الخطوات التالية وسوف يتنفذ معك البرنامج ان شاء الله بدون اخطاء

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

بالتوفيق ان شاء الله

المرفقات
change Framework.pngchange Framework version.pngAdd Directive.png

تم تعديل هذه المشاركة بواسطة Xhack في 11 يوليو 2010 في 10:54

#14

السلام عليكم

كما تفضلت تاكدت من اصدار الframe work وهو الاصدار الصحيح و ايضا تاكدت من وجود ال system.linq

ولكن نفس المشكلة في

'DataClassesDataContext'

انا اسف اني تعبتك معايية

ممكن تراجع الرابط التالي عنده نفس المشكلة

http://forums.asp.net/p/1384241/2937747.aspx

#15

بأنتظار الاجابة

#16
walleed23 كتب:

بأنتظار الاجابة

مثال رائع جدا

باااااااارك الله فيك

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

ان كان لهاذه المشكلة حل فأنا سعيدة ان اخبرتنا به

وجزاك الله خيرا على كل حال

#17

السيلفرلايت مثله مثل الفلاش تحتاج الى مشغل Plug-in حتى تتمكن من رؤية التطبيق المكتوب لذلك لايوجد حل سوى انك تقوم بتحميل هذا الPlug-in

ولكن انا قررت ان الاصدار الثالث سوق يكون باستخدام الjquery أن شاء الله ويحمل في طياته الكثير من الإضافات والتحسينات.

بالتوفيق ان شاء الله

#18

مثال رائع

ولكن اتمنى ان لاتردوني

ولكنن اريد نفس هذذا البرنامج

ولكن بأكواد فيجوال

لاني لم افهم الكود

وان اشتغل على بيئه فيجوال ستديو 2005

مواضيع مشابهة