• 0
lak3yoni

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

سؤال

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

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

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

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

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

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



DataClasses1DataContext dbSEC = new DataClasses1DataContext();
var sec = from p in dbSEC.SECs
where [email protected]("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
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

24 إجابة على هذا السؤال .

  • 0

السلام عليكم

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

 dataGridView1.Refresh(); 

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

الرابط

بالتوفيق

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

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

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

اخي الكريم

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

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

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

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

gview.databinig();

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

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

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

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

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

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

أخي عادل

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

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


DataClasses1DataContext dbSEC = new DataClasses1DataContext();
var sec = from p in dbSEC.SECs
where [email protected]("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 = "تمت الإضافة :(";

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

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 [email protected]("0")
select p;
dataGridView1.DataSource = sec;

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

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

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

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

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

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

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 [email protected]("0")
select p;
dataGridView1.DataSource = sec;

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

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

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

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

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

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0
لكن لو ذهبت الى الفورم الثاني ثم رجعت للفورم الاول راح تطلع لي البيانات القديمه ولان تظهر البيانات المحدثه

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

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

يعني مثال:

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

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

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

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

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

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

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

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

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

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

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

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

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

WindowsFormsApplication15.zip

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

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

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

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

new DataClasses1DataContext()

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

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

اخي هناك حلين

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

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

تحياتي

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .