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

ماهيه طريقة تحديث dataGridview بعد اجراء العمليات اللازمه على قاعده البيانات

بدأه lak3yoni في 4 فبراير 2012 · 24 رد · 4,887 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

تعبت وانا ابحث عن حل لهذي المشكلة فا مابقاء لي بعد الله سبحانه الا انتم

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

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

انا حابب اخلي التغييرات تنطبق بشكل لحظي على داتا قريد فيو

استخدمت هذا الكود في تعبئه الداتا قريد فيو

 DataClasses1DataContext dbSEC = new DataClasses1DataContext();
            var sec = from p in dbSEC.SECs
                      where p.@fixed.Equals("0")
                      select p;
            dataGridView1.DataSource = sec;
            dataGridView1.Columns["ID"].Visible = false;
            dataGridView1.Columns["fixed"].Visible = false;
            dataGridView1.AutoResizeColumns(
            DataGridViewAutoSizeColumnsMode.AllCellsExceptHeader);

واستخدمت هذا الكود في الاضافة

  DataClasses1DataContext dbSEC = new DataClasses1DataContext(@"C:\USERS\WINDOWSFORMSAPPLICATION1\WINDOWSFORMSAPPLICATION1\DBSEC.MDF");
                    SEC sec = new SEC();
                    sec.Failure = txtFailureNo.Text;
                    sec.District = cmbDis.Text;
                    sec.Failure_Type = cmbFailure_Type.Text + " / " + cmbFailure_Det.Text;
                    sec.Subscription_Number = txtSubtraction1.Text + " - " + txtSubtraction2.Text + " - " + txtSubtraction3.Text;
                    sec.Station = txtSta.Text;
                    sec.Vedder = txtVeedr.Text;
dbSEC.SECs.InsertOnSubmit(sec);
                        dbSEC.SubmitChanges();
                        label9.Text = "تمت الإضافة  :(";

السوال :- هل يوجد طريقة لتحديث الداتا قريد فيو dataGridview وتطبيق التغييرات عليه بشكل لحظي بدون اغلاق البرنامج واعاده تشغيله من جديد ..؟

هذا والشكر لكم مقدم

تم تعديل هذه المشاركة بواسطة lak3yoni في 4 فبراير 2012 في 11:14

#2

السلام عليكم

يمكن ذلك من خلال الدالة Refresh

 dataGridView1.Refresh();

وهذا رابط يتحدث عن الداتا جريد والتحديث فيها

الرابط

بالتوفيق

[moveright]Haytham [/moveright]

#3

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

هذا الحل لم يفلح في حل المشكله لدي

اتمنى من الاخوان مساعدتي

#4

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

اخي الكريم

جرب استخدام الاداة LinqDataSource واربط كلاسات SQL بيها كمصدرها للبيانات واعمل فيها امكانية التعديل والاضافة والحذف

ومن ثم قم بربط الجريد فيوو بالاداة وجرب وشوف ايه الا هيحصل

واذا ما ظبت ارفع سورس المشروع حتي يتم التعديل عليه

والله والموفق والمستعان

#5

لم تحل مازالت نفس المشكله

#6

أخي: ممكن تذكر الكود الذي تنفذه لتحديث الغريد فيو ؟

ممكن تضع السورس كود لهذه الجزئية فقط حتى تتضح الرؤية؟

#7

gview.databinig();

#8
Adel Khayata كتب:

أخي: ممكن تذكر الكود الذي تنفذه لتحديث الغريد فيو ؟

ممكن تضع السورس كود لهذه الجزئية فقط حتى تتضح الرؤية؟

أخي لا اعرف ماهو الكود الذي يحدث القريد فيو و لو كنت اعرف لما نزلت الموضوع

جربت ماذكر بالاعلى كله ولكن بدون فائده القريد فيو لا تتحدث

انا مستغرب ليش مو راضي تجي معي

هل ممكن يكون السبب هو اني استخدم linq مع الداتا بيس

#9

أخي: حتى نساعدك, علينا أن نفهم المشكلة.

على الاقل : ضع الكود الذي يقوم بتحميل البيانات في الغريد و من أي حدث تحمله و أيضاً كود إدخال سجل جديد و في أي حدث يحدث.

#10

أخي عادل

كود تحميل البيانات في القريد فيو مكتوب في الاعلى وليس هنالك مانع من اعاده نسخه كرمالك

هذا كود تحميل البيانات من الداتا بيس الى القريد فيو

 DataClasses1DataContext dbSEC = new DataClasses1DataContext();
            var sec = from p in dbSEC.SECs
                      where p.@fixed.Equals("0")
                      select p;
            dataGridView1.DataSource = sec;
            dataGridView1.Columns["ID"].Visible = false;
            dataGridView1.Columns["fixed"].Visible = false;
            dataGridView1.AutoResizeColumns(
            DataGridViewAutoSizeColumnsMode.AllCellsExceptHeader);

الكود الثاني كود الاضافة الى الداتا بيس

DataClasses1DataContext dbSEC = new DataClasses1DataContext(@"C:\USERS\WINDOWSFORMSAPPLICATION1\WINDOWSFORMSAPPLICATION1\DBSEC.MDF");
                    SEC sec = new SEC();
                    sec.Failure = txtFailureNo.Text;
                    sec.District = cmbDis.Text;
                    sec.Failure_Type = cmbFailure_Type.Text + " / " + cmbFailure_Det.Text;
                    sec.Subscription_Number = txtSubtraction1.Text + " - " + txtSubtraction2.Text + " - " + txtSubtraction3.Text;
                    sec.Station = txtSta.Text;
                    sec.Vedder = txtVeedr.Text;
dbSEC.SECs.InsertOnSubmit(sec);
                        dbSEC.SubmitChanges();
                        label9.Text = "تمت الإضافة  :(";
#11

ممكن تذكر في أي حدث يتم تنفيذ كل من هذه الأكواد ؟

#12

تعبيئة القريد فيو في الود

والاضافة في البوتن

#13

أخي: أنا عملت عندي مثال شبيه بالذي وضعته و نفذت بعد كود الادخال تعليمتين استخدمتهما أنت في كود التحميل الذي ذكرته أولاً و بالتالي يصبح كود الادخال كالتالي:

DataClasses1DataContext dbSEC = new DataClasses1DataContext(@"C:\USERS\WINDOWSFORMSAPPLICATION1\WINDOWSFORMSAPPLICATION1\DBSEC.MDF");
                    SEC sec = new SEC();
                    sec.Failure = txtFailureNo.Text;
                    sec.District = cmbDis.Text;
                    sec.Failure_Type = cmbFailure_Type.Text + " / " + cmbFailure_Det.Text;
                    sec.Subscription_Number = txtSubtraction1.Text + " - " + txtSubtraction2.Text + " - " + txtSubtraction3.Text;
                    sec.Station = txtSta.Text;
                    sec.Vedder = txtVeedr.Text;
dbSEC.SECs.InsertOnSubmit(sec);
                        dbSEC.SubmitChanges();
                        label9.Text = "تمت الإضافة  :("; 


          var sec = from p in dbSEC.SECs
                      where p.@fixed.Equals("0")
                      select p;
            dataGridView1.DataSource = sec;

أول جزء من الكود ينفذ عملية الادخال , و ثاني جزء ينفذ الاستعلام من ال DataSource و يملأ الغريد فيو.

طبعاً أنا جربت المثال على جهازي و اشتغل بشكل صحيح.

#14

فعلا كلامك اخوي صحيح وانا جربت هالطريقة من قبل

لكن لو طلعت الى فورم ثاني وبعدين رجعت لنفس الفورم راح تلقاء البيانات التي عدلت عليها او اضفتها غير موجوده

ومازالت المشكله مستمره الى الان

اشكرك اخوي على وقفتك معي واذا حصلت حل ياليت تفيدني واكون لك من الشاكرين

#15

أخي: على نفس المثال الذي جربته من قبل قمت بالتالي:

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

DataClasses1DataContext dbSEC = new DataClasses1DataContext(@"C:\USERS\WINDOWSFORMSAPPLICATION1\WINDOWSFORMSAPPLICATION1\DBSEC.MDF");
                    SEC sec = new SEC();
                    sec.Failure = txtFailureNo.Text;
                    sec.District = cmbDis.Text;
                    sec.Failure_Type = cmbFailure_Type.Text + " / " + cmbFailure_Det.Text;
                    sec.Subscription_Number = txtSubtraction1.Text + " - " + txtSubtraction2.Text + " - " + txtSubtraction3.Text;
                    sec.Station = txtSta.Text;
                    sec.Vedder = txtVeedr.Text;
dbSEC.SECs.InsertOnSubmit(sec);
                        dbSEC.SubmitChanges();
                        label9.Text = "تمت الإضافة  :(";

و حدث الضغط على الزر كالتالي:

        	Form2 frm = new Form2();
        	frm.ShowDialog();

        	DataClasses1DataContext dbSEC = new DataClasses1DataContext();

        	var sec = from p in dbSEC.SECs
                      where p.@fixed.Equals("0")
                      select p;
            dataGridView1.DataSource = sec;

و اشتغل معي الكود بشكل صحيح و عمل تحديث للبيانات!!

#16

اخي الحبيب بيض الله وجهك على مجهودك الرائع

اخي انا ابغى احدث على نفس الصفحه

مثال عندي صفحتين 2 فورمز

الفورم الاول يعرض بيانات والفورم الثاني يعرض البيانات

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

اما اذا قفلت البرنامج ورجعت شغتله من جديد راح تتحدث البيانات وبشكل عادي جدا بدون مشاكل

#17
اقتباس
لكن لو ذهبت الى الفورم الثاني ثم رجعت للفورم الاول راح تطلع لي البيانات القديمه ولان تظهر البيانات المحدثه

بصراحة أنا ضعت!! ماذا تقصد بالجملة السابقة؟ أليست هي مثل المثال الأخير الذي وضعته ( ضغط زر يفتح فورم آخر و عند اغلاقه يتم التحديث ) ؟

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

يعني مثال:

1) افتح الفورم الأول فتظهر البيانات من الداتابيس

2) اضغط زر على الفورم الأول فيظهر الفورم الثاني

3) أجر بعض التعديلات على البيانات في صفحة الفورم الثاني.

4) احفظ التعديلات.

5) ارجع إلى الفورم الأول فتجد البيانات غير محدثة.

#18

1لدي فورم اسمه main يحتوي على اربعه بوتن

كل بوتن يذهب فيني الى فورم اخر

لنفرض سميت البوتن 1 و 2 و 3 و 4

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

ثم ضغطت على اكس ورجعت للفورم main ثم ذهبت للفورم رقم اربعه

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

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

والمشكله لو خرجت ورجعت راح ترجع لي البيانات القديمه

ادري لحست مخك كثير بس اعذرني وانا اخوك

#19

السلام عليكم.

أنا أرفقت لك المثال ( طبعاً ربطتها مع قاعدة بيانات على جهازي و لكن الفكرة واحدة) الذي عدلته كالتالي:

لدي فورم رئيسي يتم إظهار الغريد عليه و فيها البيانات.

لدي زرين : كل زر يفتح فورم جديد فيه غريد تظهر نفس البيانات و فيه زر يحاكي عملية ادخال سجل جديد.

الآن: عندما أشغل البرنامج تظهر البيانات في الغريد في الفورم الرئيسي

أضغط على الزر الأول: تظهر البيانات في الغريد في الفورم الأول

أضغط الزر على الفورم الأول لإدخال سجل جديد

الغريد في الفورم الأول يتم تحديثها

أغلق الفورم الأول فيظهر الفورم الرئيسي و قد تم تحديث الغريد فيه لتعكس البيانات الجديدة.

أضغط الزر الثاني فيفتح الفورم الثاني و البيانات تظهر في الغريد فيه

أضغط الزر على الفورم الثاني لإدخال سجل جديد

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

أغلق الفورم الثاني فيظهر الفورم الرئيسي و قد تم تحديث الغريد فيه لتعكس البيانات الجديدة.

وقد جربت عدة احتمالات و كان تالغريد تحدث بشكل صحيح كل مرة.

طبعاً الفكرة هي: عند تحميل أي فورم يتم عمل جلب بيانات من جديد من قاعدة البيانات ( Refresh ), و عند انتهاء إضافة سجل جديد يتم عمل Refresh و عند إغلاق الفورم الفرعي يتم عمل Refresh

WindowsFormsApplication15.zip

#20

اخي العزيز شكرا لك وعلى ما تقدم

الحل لم ينجح معي لا ادري ماهي الاسباب

هل استطيع ارسال لك المشروع ومشاهدات ماهي المشكله الموجوده لدي

#21

لا يوجد مشكلة بإذن الله.

#22

تم ارسال المشروع اخوي

#23

أرسلت لك المشروع المعدل و هو يعمل بشكل صحيح.

و الذي عدلته هو فقط استبدال النص التالي:

new DataClasses1DataContext()

بالنص التالي:

new DataClasses1DataContext(@"C:\USERS\ALENZIE\DESKTOP\WINDOWSFORMSAPPLICATION1\WINDOWSFORMSAPPLICATION1\DBSEC.MDF")
#24

اخي هناك حلين

1- ان تظهر النموذج الثاني ShowDialog بدلا من Sohw

2-تضع شفرة ملئ الداتا قريد في الحدث Active للفورم الاول

تحياتي

#25

يعطيك العافيه اخي عادل

تم حل المشكله بفضل الله ثم فضلك انت

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…