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

ارجو المساعدة في تحديث dataGridView

بدأه amjad85 في 30 أكتوبر 2011 · 5 رد · 756 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

أرجو من الأخوة الأكارم المساعدة في تحديث بيانات dataGridView حيث أني عندي اثنان فورم

الفورم الأول frmManagers ويحتوي على dataGridView dgM

ومن خلال هذا الفورم أقوم بفتح الفورم الثاني اسمه frmAddManagers لأقوم بإضافة اسم جديد الى dataGridView في الفورم في الفورم الاول

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

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

#2

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

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

طبعا ممكن ... بعدة طرق ..منها أن نمرر مرجع النافذة الأب إلى النافذة الأبن و في النافذة الأبن نستدعي إجراء من الأب يدل أن عنصر ما تمت إضافته .. طبعا لو كنا نتعامل مع نوافذ الــ MDI ... لا داعي لتمرير مرجع لأن المرجع هو this.MdiParent ..

النافذة الأب :

 public partial class Form1 : Form
	{
    	public Form1()
    	{
        	InitializeComponent();
    	}

    	public void ElementAdded(Employee employee)
    	{
        	listBox1.Items.Add(employee.Name);
    	}

    	private void btnShow_Click(object sender, EventArgs e)
    	{
        	Form2 form2 = new Form2();
        	form2.form1 = this;
        	form2.ShowDialog(this);
    	}
	}

النافذة الأبن :

 public partial class Form2 : Form
	{
    	public Form1 form1;
    	public Form2()
    	{
        	InitializeComponent();
    	}

    	private void btnSave_Click(object sender, EventArgs e)
    	{
        	Employee employee = new Employee() { Name = DateTime.Now.ToString() };
        	form1.ElementAdded(employee);

    	}
	}

ثم العنصر المضاف تضيفه إلى الــ DataGridView . حسب الــ DataSource لها .. هل هو DataSet أو DataTable أم List

...

تم تعديل هذه المشاركة بواسطة houssam11350_11350 في 30 أكتوبر 2011 في 18:56

لا إله إلا الله ... محمد رسول الله

لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة

المعرًف القديم : houssam11350_11350

من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر

#3

أشكرك أخي الكريم لكن للاسف لم أستطيع تطبيق ماقلت لذلك سارفق لك السكربت للفورم الأول والثاني

الفورم الأول

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using MySql.Data.MySqlClient;

using System.IO;

using System.Drawing.Imaging;

namespace Contacts

{

public partial class frmManagers : Form

{

DataSet ds = new DataSet();

MySqlConnection MySqlCon = new MySqlConnection("Server=localhost;Database=mysql;userid =root;password=MJ@1234");

MySqlDataAdapter da = new MySqlDataAdapter();

MySqlConnection cn;

MySqlCommand cmd;

MemoryStream ms;

public frmManagers()

{

InitializeComponent();

}

public static string txtManager_Name;

public static string aduStatus;

public static int intManager_ID;

private void btnSave_Click(object sender, EventArgs e)

{

}

private void frmManagers_Load(object sender, EventArgs e)

{

if (frmAddAdvances.SelectManger == "Yes")

{

btnAdd.Enabled = false;

btnUpdate.Enabled = false;

btnDelete.Enabled = false;

}

else

{

btnAdd.Enabled =true;

btnUpdate.Enabled = true;

btnDelete.Enabled = true;

}

da.SelectCommand = new MySqlCommand("SELECT Manager_ID,Manager_Name,Position FROM Managers", MySqlCon);

//txtFirstName.DataBindings.Clear();

//txtLastName.DataBindings.Clear();

ds.Clear();

da.Fill(ds);

dgM.DataSource = ds.Tables[0];

//dgM.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;

DataGridViewColumn columnManagerName = dgM.Columns[1];

DataGridViewColumn columnPosition = dgM.Columns[2];

columnManagerName.Width = 130;

columnPosition.Width = 130;

//dgM.AutoSize = true;

// tblNamesBS.DataSource = ds.Tables[0];

// txtFirstName.DataBindings.Add(new Binding("Text", tblNamesBS, "Doc_Num"));

// txtLastName.DataBindings.Add(new Binding("Text", tblNamesBS, "Manager_Name"));

////textBox1.DataBindings.Add(new Binding("Text", tblNamesBS, "Last_Name"));

}

private void btnAdd_Click(object sender, EventArgs e)

{

cn = new MySqlConnection("Server=localhost;Database=mysql;userid =root;password=MJ@1234");

//cmd = new MySqlCommand("SELECT * FROM Advances WHERE Doc_Num = '" + dg.se+ "'", cn);

cmd = new MySqlCommand("SELECT MAX(Manager_ID)+1 FROM Managers", cn);

cn.Open();

MySqlDataReader dr;

try

{

dr = cmd.ExecuteReader();

if (dr.Read())

{

intManager_ID = Convert.ToInt16(dr[0]);

//MessageBox.Show(intManager_ID.ToString());

}

}

catch (Exception ex)

{

MessageBox.Show(ex.Message);

}

finally

{

cn.Close();

}

//intManager_ID = Convert.ToInt16(dgM.CurrentRow.Cells[0].Value);

txtManager_Name = "";

aduStatus = "Add";

frmAddManagers formAddManagers = new frmAddManagers();

formAddManagers.Show();

//textBox1.Text = dgM.CurrentRow.Cells[1].Value.ToString();

//MessageBox.Show(txtManager_Name);

}

private void dgM_CellContentClick(object sender, DataGridViewCellEventArgs e)

{

}

الفورم الثاني

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using MySql.Data.MySqlClient;

using System.IO;

namespace Contacts

{

public partial class frmAddManagers : Form

{

string aduStatus;

DataSet ds = new DataSet();

MySqlConnection MySqlCon = new MySqlConnection("Server=localhost;Database=mysql;userid =root;password=MJ@1234");

MySqlDataAdapter da = new MySqlDataAdapter();

BindingSource tblNamesBS = new BindingSource();

MySqlConnection cn;

MySqlCommand cmd;

MemoryStream ms;

public frmAddManagers()

{

InitializeComponent();

}

private void textBox1_TextChanged(object sender, EventArgs e)

{

}

private void AddManagers_Load(object sender, EventArgs e)

{

aduStatus = frmManagers.aduStatus;

//MessageBox.Show(aduStatus);

txtManagerName.Text = frmManagers.txtManager_Name;

txtManagerID.Text = frmManagers.intManager_ID.ToString();

}

private void btnSave_Click(object sender, EventArgs e)

{

if (aduStatus == "Add")

{

da.InsertCommand = new MySqlCommand("INSERT INTO Managers (Manager_Name ,Position) VALUES (@Manager_Name ,@Position)", MySqlCon);

da.InsertCommand.Parameters.Add("@Manager_Name", MySqlDbType.VarChar).Value = txtManagerName.Text;

da.InsertCommand.Parameters.Add("@Position", MySqlDbType.VarChar).Value = txtPosition.Text;

if (txtManagerName.Text != "")

{

MySqlCon.Open();

da.InsertCommand.ExecuteNonQuery();

MySqlCon.Close();

ClearTextBoxes(this);

}

else

{

MessageBox.Show("You cannot insert empty name to managers table");

}

}

#4

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

بصراحة الكود بحاجة أن يكون احترافي أكثر من ذلك ...

لا تستخدم حقول static إلا إذا تطلب ذلك ..

لم تستخدم الــ OOP .. أبدا ...

لم استطع تجريب الكود لأنه يعمل على MySQL ...

بانتظار ردود الخبراء ..

لا إله إلا الله ... محمد رسول الله

لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة

المعرًف القديم : houssam11350_11350

من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر

#5

اخى الكريم ممكن انك تعمل بوتون الحفظ فى الفورمة الثانية بحيث انك تضيف البيانات فى الفورمة الثانية وتضغط على بوتون الحفظ ، يتم حفظ البيانات فى الفورمة الثانية ويتم حفظ البيانات تلقائى فى الفورمة الاولى مباشرة............ واليك الكود بتاع بوتون الحفظ

private void button1_Click(object sender, EventArgs e)

{

this.table1TableAdapter.Update(this.dataset1.table1);

MessageBox.Show("تم الحفظ شكرا");

}

ملاحظة هذا الكود لو انت متصل data grid view بقاعدة البيانات عن طريق binding source

وشكرا مع اطيب التمانى بالتوفيق

#6

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

اخي لقد عملت نفس الفكره ولكن باستخدام السيكول سيرفر .. فقط الاختلاف في قاعدة البيانات, يرجى مراجعة المرفق

WindowsFormsApplication1.zip

.:: Wish to become better and better ::.

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