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

سؤال:متحير جدا ما هو الفرق بين .... !

مغلق
بدأه Wise في 25 سبتمبر 2005 · 8 رد · 2,561 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

Binding, Databinging,BindingMangerBase

هذه 3 عنواني ل 3 مواضيع و لكنهم يختصوا بعملية ربط خصائص البيانات DataSource ب خصائص الادوات Form controls

لكن و جد اكثر من طريق للربطة و هذا جعلني اتحير فوجد من يستخدم DataBinding و اخرين يستخدمون اوامر اخرى مثل CurrencyManager و غيرها من الطرق

صراحة انا تهت و مش عارف ايه اهمية استخدام اكثر من طريقة و ما هي تعريف Binding, Databinging,BindingMangerBase

و كيفية استخدامه لربطها مع Dataset

يا ريت تعطوني مثالي بسيط لربط dataset بالطرق المختلفة

و كيفية استخدام الطرق المختلفة في التحرك بين سجلات ال Dataset

التالي السابق الاول الاخير.....

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

تم تعديل هذه المشاركة بواسطة crazy-man في 25 سبتمبر 2005 في 02:13

1
#3
Wise كتب:
السلام عليكم و رحمة الله و بركاته

Binding, Databinging,BindingMangerBase

هذه 3 عنواني ل 3 مواضيع و لكنهم يختصوا بعملية ربط خصائص البيانات DataSource ب خصائص الادوات Form controls

لكن و جد اكثر من طريق للربطة و هذا جعلني اتحير فوجد من يستخدم DataBinding و اخرين يستخدمون اوامر اخرى مثل CurrencyManager و غيرها من الطرق

صراحة انا تهت و مش عارف ايه اهمية استخدام اكثر من طريقة و ما هي تعريف Binding, Databinging,BindingMangerBase

و كيفية استخدامه لربطها مع Dataset

يا ريت تعطوني مثالي بسيط لربط dataset بالطرق المختلفة

و كيفية استخدام الطرق المختلفة في التحرك بين سجلات ال Dataset

التالي السابق الاول الاخير.....

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

منتظر حد يتكرم و يتنازل و يعلمنا مما علمه الله

:rolleyes: :rolleyes: :rolleyes:

:(

#5

السلام عليكم

نآسف حقيقة ً على التأخير و أرجوا أن لا تتضايق منا, لعدم الانتباه للمقالة,...

و إن شاء الله نطيب خاطر, وانت كريم و مسامح ... ونحن نستاهل (إن شاء الله) .

عزيزي أحسن الله إليك, الفرق بين العناصر المذكورة كالتالي

--أولاً العنصر Binding

العنصر Binding هو عبارة عن قالب Class هذا القالب يقوم بربط خاصية عنصر بخاصية عنصر أخر ,

العناصر التي يستطيع أن يربطها هي كل العناصر التي أشتقت من العنصر Control المتوفر تحت الفضاء التالي System.Windows.Forms.Control

على سبيل المثال لا الحصر نربط خاصية Text في الخانة النصية TextBox في خاصية في قالب الموظفين .

تتجلى فائدة القالب Binding في ربط قيمة عامودٍ ما في عنصرٍ ما في النموذج.

وبمثال أخرى سنربط خاصية Text في عامود لجدول ما في DataView

بحيث يعُتبر الجدول كعنصر و العامود كخاصية فيه بهذا الشكل

'Full Name الاسم الكامل
'Syntax Binding(Property Name , DataSource, DataMember)
Me.txtAutorName.DataBindings.Add( _
New Binding("Text", DVAuthors, "Author"))

ينقسم الإرتباط في VS.NET إلى نوعين هما Simple Binding وهو المذكور في الاعلى و Complex Binding

وهو ربط معقد, كمثلاً ربط قائمة منسدلة في جدول يتكون من عامودين الاول اسماء الدول و الثاني ارقام الدول

سنعرض الاسماء للمستخدم و نحفظ الارقام في الجدول الرئيسي كأفضلية لحفظ أرقام بدل القيم النصية إليك المثال التالي:

            cboxNationality.DataSource = Me.DsMain1
            cboxNationality.DisplayMember = "LOOKUPNationality.Nationality"
            cboxNationality.ValueMember = "LOOKUPNationality.Nationality_ID"
            cboxNationality.DataBindings.Add( _
            New Binding("SelectedValue", DVMain1, "Nationality"))
            cboxNationality.DropDownStyle = ComboBoxStyle.DropDown

في هذا المثال ربطنا القيمة المعروضة من العامود Nationality بالخاصية DisplayMember في القائمة المنسدلة

وربطنا القيمة التي سنحفظها في الجدول الرئيسي من العامود Nationality_ID بالخاصية ValueMember في القائمة كذلك

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

SelectedValue في الممرر الاول في القالب Binding , اما إذا أردنا أن نحفظ الاسماء في الجدول الرئيسي, فسنمرر الخاصية

SelectedItem بدلاً من الخاصية SelectedValue , فهذا ما يعرف بـ الربط المعقد أو Complex Binding .

معلومة : نستطيع ربط أعمدة من جدول , مصفوفات أ, عناصر تجميع Collections أو قالب فيه خصائص أو عنصر Structure

عن طريق القالب Binding .

ثانياً الخاصية DataBindings

هذه الخاصية تمكننا من إضافة أكثر من عنصر Bindings فيها لانها ذات نوع ControlBindingsCollection اي مصفوفية النوع

وذلك عن طريق السلوك Add , اي الغرض من هذه الخاصية لإضافة روابط لخصائص العنصر كمثلاً عنصر الخانة النصية.

فهي اشبه بعملية ربط سلك من خاصية إلى عامود أو خاصية في قالب أو مصفوفة ...لا أكثر.

مثلاً بهذا المثال سنربط خاصيتين لعنصر واحد وهي الخانة النصية إليك المثال التالي

 'Full Name الاسم الكامل
        Me.txtAutorName.DataBindings.Add( _
       New Binding("Text", DVAuthors, "Author"))
        ' رقم المؤلف
        Me.txtAutorName.DataBindings.Add( _
        New Binding( _
       "Tag", DVAuthors, "AuthorID"))

في هذا المثال ربطنا خاصية Text لتحتوي على قيم العامود Author بينما قمنا بربط الخاصية Tag

لتحتوي على قيم العامود AuthorID .

ثالثاً العنصر CurrencyManager

هذا العنصر هو عبارة عن قالب مشتق كابن من القالب BindingManagerBase , لذلك تجد فيه بعض الخواص التي لا

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

و يمكن كذلك عن طريق القالبين كل من الاضافة و الحذف و التعديل وكذلك الالغاء.. و التحقق و,,, وكل ما يتعلق بالابحار

كالذهاب للصف الاول أو الاخير (والسابق أو التالي)

إذا باختصار شديد : القالب CurrencyManager أو BindingManagerBase الغرض الاساسي منهم هو الابحار في

صفوف الاعمدة في جدولٍ ما. من الملاحظ هنا أن كل القوالب و الخصائص مكملة بعضها البعض .

فمثلاً لايمكن أن نستخدم القالب CurrencyManager بدون توظيف القالب Binding , كذلك القالب

Binding يكون عديم الفائدة بدو الخاصية DataBindings

هذا والله أعلى و أعلم.

في المثال يتضح المقال

#6

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

شرح جميل و واضح

لكن ما جعلني متحير اني بمقارئة بعض برامج الاعضاء و جدت كل منهم له طريقته فمثلا وجدت من يركز على CurrencyManager في تحديد موقع السجل في ال dataset

   Private Sub ShowPosition()
        txtRecordPosition.Text = objCurrencyManager.Position + 1 & " of " & objCurrencyManager.Count
    End Sub

و الطريقة الاخري هي:

Dim WithEvents bmb As BindingManagerBase

    Private Sub bmb_PositionChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bmb.PositionChanged
        lblCurrnet.Text = String.Format("{0} of  {1}", bmb.Position + 1, bmb.Count)
    End Sub

و ما هو الفرق بين CurrencyManager و BindingContext

و هل يجب تعريف لل Binding و Databinding مثلما قمنا بتعريف المتغير BMB كما في الكود التالي:

Dim WithEvents bmb As BindingManagerBase

معذؤة على كثرة الاسئلة لكن هذا الموضوع في غاية الاهمية كوني بحاول تعلم قواعد بيانات ado.netو و لا مفر من استخدام المتغيرات السابقة ذكرها في عرض محتوي ال dataset او dataview

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

تم تعديل هذه المشاركة بواسطة Wise في 30 سبتمبر 2005 في 16:33

#7

السلام عليكم

يتجلى الفرق بين CurrencyManager و BindingManagerBase في أن

الاول CurrencyManager له خصائص و أحداث أكثر, إضافة إلى الإرث الذي ورثه من BindingManagerBase,

لذلك هو يملك ما لا يملك الاب وهذا امر معتاد في القالب الوارث,

ومن تلك الخواص التي لا يملكها الاب هي الخاصية List هذه الخاصية تظهر فائدتها

عندما يتعلق الامر بالتعامل مع العناصر المصفوفية ذوات القيم المتعددة, كمثلاً المصفوفات أو Datagrid ,

أو الواجهات كمثلاً Ilist أو IBindingList أو غيرهما.

فمثلاً نستطيع تعطيل الاضافة في DataGrid مع العنصر DataView عن طريق هذه الخاصية ,

كذلك من ميزات الـ CurrencyManager أننا نستطيع معرفة قيمة المادة Item إذا طرء عليها اي تغيير

عن طريق الحدث ItemChanged, بل نستطيع أن نعرف إذا الـ metaData للجدول نفسه

إذا حدث فيه اي تغيير كمثلاً إضافة عامود وذلك عن طريق الحدث MetaDataChanged

هذان الحدثان غير متوفرين في الـ BindingManagerBase

إذا بشكل مختصر , متى كان المشروع يتطلب تلك الاحداث و الخواص الغير متوفرة في BindingManagerBase

فإن الابن CurrencyManager هو من يلبي لك متطلباتك ...

السؤال الثاني

اقتباس
و ما هو الفرق بين CurrencyManager و BindingContext

CurrencyManager قالب يحتاج إلى تعريف الغرض منه, الابحار في اي مصدر للبيانات,

بينما BindingContext لا تحتاج إلى تعريف لانها إحدى خواص النموذج

ونحتاجها حينما نريد أن نربط الـعنصر CurrencyManager أو BindingManagerBase ليتولى عملية الابحار

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

BindingManagerBase ولهذا السبب نجعل الـ BindingManagerBase يساوي هذه الخاصية .

السؤال الثالث

اقتباس
و هل يجب تعريف لل Binding و Databinding مثلما قمنا بتعريف المتغير BMB كما في الكود التالي:

لا يجب تعريفهما لانهما من خواص النموذج وخواص النموذج غير منطقي تعرفيهم في متغيرات, بل يتم إستخدمهم بشكل مباشر,و يتم تخطيهم (كبرمجة كائنية التوجه) إن كانت معلنه للتخطي .

لا يستحسن الخوض فيه الان, و إنما بعد التمرس و التمكن إن شاء الله.

هذا والله أعلى و أعلم.

في المثال يتضح المقال

#8

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

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

ان كان يوجد بعض الامثلة لهذا الموضوع يكون افضل مع عذري لك ان لم تتمكن من وضع بعض الامثلة

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

#9

الأستاذ الغملاسي

تبارك الرحمن الذي علمك وجعل الله كل ما تكتبه في ميزان حسناتك

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

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

جزاكم الله عنا كل الخير

هذا الموضوع مغلق.

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