لدي قاعدة بيانات ds أحد جداولها مربوط بـ DataGridView وعند إجراء أي تغيير لأحد سطورها , ثم الانتقال لسطر آخر لا يعطي الوسيط ds.HasChanges قيمة True أول مرة ولكن يعطيني هذه القيمة عند الانتقال لسطر آخر مرة ثانية
السؤال كيف لي ان احدث البيانات ليعطيني الوسيط ds.HasChanges القيمة True عند الانتقال لسطر جديد من أول مرة
ياشباب المنتدى, ساعدوني في حل هذه المشكلة, مضــــــــــــــطــــــــــر
للعلم : الجريدفيو متعوب علية كثير من الميكروسوفت
وتم تخصيص مجموعه كبيرة من الاحداث لها
وأنا أيضـــــــا : خصصت كلاس لهـــــــــا في النت فريم وورك الخاص بي
مشكلتك في مكان الكود
لازم تختار أحد الاحداث المخصصة للخلية أو السطر
لمزيد من التوضيح:
عملت اتصال لقاعدة البيانات وربط داتا غرايد فيو بأحد جداولها بالشكل التالي:
كود :
ConnString = "Provider=MicroSoft.jet.oledb.4.0;Data Source=" & Application.StartupPath & "\Data.mdb"
con = New OleDbConnection(ConnString)
DS = New DataSet
con.Open()
SQL = "SELECT * FROM Families"
DaFamilies = New OleDbDataAdapter(SQL, con)
DaFamilies.Fill(DS, "Families")
con.Close()
DGVFamilies.AutoGenerateColumns = False
DGVFamilies.DataSource = DS.Tables("Families")
DGVFamilies.Columns(2).DataPropertyName = "Name"
DGVFamilies.Columns(3).DataPropertyName = "personsID"
DGVFamilies.Columns(4).DataPropertyName = "State"
DGVFamilies.Columns(5).DataPropertyName = "ColumnNum"
DGVFamilies.Columns(6).DataPropertyName = "FamilyBookNum"
المشكلة أنه طالما أنا ضمن سطر من أسطر الداتا غرايد تبقى DS.GetChanges = Nothing ولا تأخد التغيرات إلا عندما انتقل لسطر جديد
اي عند الحدث RowLeave تبقى DS.HasChanges = False
ولا تصبح True إلا غند الحدث RowEnter
لا توجد طريقة لجعل DS.GetChanges = Not Nothing عند تغيير خلية من خلايا السطر او عند الحدث RowLeave
أرجو أن تكون وصلت الفكر
ملاحظة : أكثر مايهمني هو الحدثين: RowValidating , RowValidated
عند الحدث RowValidating تكون DS.GetChanges = Nothing
عند الحدث RowValidated تكون DS.GetChanges = Not Nothing
وانا اريد أن تكون DS.GetChanges = Not Nothing عند الحدث RowValidating
انا عملت حل مؤقت لهذه المشكلة بجعل الخلية الحالية بسطر أخر وإرجاعها برمجيا
DGVFamilies.CurrentCell = "Cell at another Row"
DGVFamilies.CurrentCell = "Cell at original Row "
ولكن أكيد يوجد حل آخر