30/09/2018, 17:05

[Solved] Cập nhật dataGridView từ một form khác

Mình có MainForm chứa dataGridView, và PopUpForm chứa các txtBox để điền thông tin và btAdd để thêm dữ liệu vào Database.
Khi MainForm.cs load thì đồng thời load data vào dataGW bằng hàm getData() Sau đó click button mở PopupForm để thêm…

//Hàm trong MainForm.cs
 
public void getData(string cmdString)
        {
           
            connectData();
 
            DataTable dt = main.GetDataTable(cmdString);
 
            this.dataGWMain.DataSource = dt;
 
        }
 
 
private void AddButton_Click(object sender, EventArgs e)
        {
           
            ShowAddForm();
        }

Sau khi nhấn Done trên PopUpForm thì nó tự thêm vào dataBase và gọi lại hàm getData() từ PopUpForm.cs để cập nhật. Nhưng dataGW vẫn ko thay đổi?
Mình đã chỉnh modifier của dataGW là Public rồi

//Hàm trong PopUpForm.cs
 
private void btDone_Click(object sender, EventArgs e)
        {
           
                if (isAddBlank() == false)
                {
                    Main main = new Main();
                    bool result = false;
 
                    result = main.addStudent("insert into Data(name, studentID, birthday, gender,faculty,class,address) values (N'" + txtAddName.Text + "'," + txtAddMSSV.Text + ",'" + dateTPAdd.Text + "',N'" + cbAddGender.Text + "', N'" + cbAddFalcuty.Text + "', '" + cbAddClass.Text + "', N'" + txtAddAddress.Text + "')");
 
                    if(result == true)
                    {
                         this.Close();
                        MainForm mainfrm = new MainForm();
                        mainfrm.getData("select * from Data");
                    }
                }
            }
Đoàn Hiếu Tâm viết 19:17 ngày 30/09/2018

Vì khi mình gọi hàm getData() từ PopUpForm.cs thì phải thông qua 1 biến vì khác class

Mình tạo biến

private MainForm mainForm = new MainForm();

Nên đây chỉ là cái biến instance mới mang kiểu 'MainForm; thôi chứ không phải là MainForm đang chạy kia

**

Solution

**

//Hàm trong MainForm.cs
    private void AddButton_Click(object sender, EventArgs e)
    {
        PopUpForm form = new PopUpForm(this);
        form.Show();
    }

Và viết hàm dựng của PopUpForm trong PopUpForm.cs

private MainForm mainForm;
public  PopUpForm(MainForm form)
{
   InitializeComponent();
//Chỗ này là gán cho cái mainfrm chính là MainForm đang chạy chứ không phải tại 1 biến kiểu MainForm mới nữa
   mainfrm = form; 
}

private void btDone_Click(object sender, EventArgs e)
        {
           
                if (isAddBlank() == false)
                {
                    Main main = new Main();
                    bool result = false;
 
                    result = main.addStudent("insert into Data(name, studentID, birthday, gender,faculty,class,address) values (N'" + txtAddName.Text + "'," + txtAddMSSV.Text + ",'" + dateTPAdd.Text + "',N'" + cbAddGender.Text + "', N'" + cbAddFalcuty.Text + "', '" + cbAddClass.Text + "', N'" + txtAddAddress.Text + "')");
 
                    if(result == true)
                    {
                         this.Close();

                         //Gọi hàm ở đây
                        MainForm mainfrm = new MainForm();
                        mainfrm.getData("select * from Data");
                    }
                }
            }
Lê Đình Huy viết 19:18 ngày 30/09/2018

Mình làm ok rồi, xóa bài viết ở đâu nhỉ @@

Diễn đàn của chúng ta không có chức năng xóa bài viết nhé . Nếu bạn đã tự giải quyết được câu hỏi của mình thì có thể đăng cách giải quyết để những người khác có thể tham khảo nhé, cảm ơn

Đoàn Hiếu Tâm viết 19:11 ngày 30/09/2018

Đã sửa rồi đó bạn

Bài liên quan
0