السلام عليكم ورحمه الله وبركاته
لو سمحتم اساتذتي الافاضل :
شو الخطأ الحاصل بالصورة الأولى
علماً بأن الفرق بين الصورتين هو اسم الكلاس فقط فالصورة الأولى كتبت الاكواد بكلاس مستقل يدعى Test
أما الصورة الثانية كتبت الاكواد بكلاس الفورم Form2
كل كنترول في الــ NET. يحتوي على BindingContext
والفورم في الأصل كنترول
وكما ذكر أخي خالد انه يجب عليك إنشاءة بنفسك داخل الكلاس الخاص بك
الـBindingContext وضيفتةربط الكنترول بمصدر بيانات
وهو المسؤول عن التأشير على مكان المصدر
وأيضاً هو المسؤول عن إذا تغيرت القيمة في المصدر يغيرها في الكنترول
وإذا تغيرت البيانات في الكنترول يغيرها في المصدر
ولكن الواضح من الكود الموجود في الصورتين أن الجدول dt غير مرتبط نهائياً بأي كنترول
ولذلك لا تحتاج أو من غير المنطقي أن تسأل عن موقع البيانات أو رقم الـIndex الخاص بالـRow الذي يؤشر علية الـBindingContext في الجدول dt
لتصحيح أو لجعلها منطقية أكثر :
إستبدل dt.Rows(pos).Item("Id") = 1
--------------------------------------------------------
لتصبح : dt.Rows(0).Item("Id") = 1
أو
لتصبح : dt.Rows(0)("Id") = 1
أو
لتصبح : dt(0)("Id") = 1
لماذا رقم (0) : لأنك الآن تريد أن تقوم بعمل Update لسجل واحد فقط
لا تحتاج إلى الـBindingContext في هذة الحالة إلى إذا كان الجدول مربوط بكنترول لعرض البيانات وتريد أن تعرف من الـBindingContext إلى أين يؤشر بالضبط