Datagridview 不显示第二次更新

问题描述 投票:0回答:2

Form1 有一个公共 datagrdiview,我正在将数据从数据库中提取到 DataTable 对象中。我打开一个带有 ShowDialog 的 Form2,然后从那里我用一个按钮打开带有 ShowDialog 的 Form3,在 DataTable 中进行更改并关闭 Form3。 Form2 中的数据已更改,我通过 Form2 更新()Form1 中的 datagridview。 Form1 中的数据也显示了我所做的更改。当我为相同的数据再次打开和更新 Form3 时,Form2 显示新值,而 Form1 中的 datagridview 这次保持不变为以前的值。我找不到原因,你能帮我吗?

Form1中的dataGridView每次都需要响应Update()函数。我将 Form1 作为参数发送到使用 ShowDialog 打开的每个窗体。我正在更新 Form3 中的 DataTable 对象,我可以在 Form2 中使用代码 Form1.dataGridview1.Update() 看到在 Form1 中所做的更改。但是当我第二次更新Form3中的DataTable对象时,只能在Form2中看到。 Form1.dataGridview1.Update() 不起作用。

c# winforms datagridview showdialog
2个回答
0
投票

形式一:

private void dataGridView1_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
{
    if (e.RowIndex > -1 && e.ColumnIndex > -1)
    {
        string ID = dataGridview1.SelectedRows[0].Cells[0].Value.ToString();
        new frm2(ID, this).ShowDialog();
    }
}

形式二:

string k_id;
Form_1 frm1;

public frm2(string id, Form_1 frm = null)
{
    InitializeComponent();

    if (!string.IsNullOrEmpty(id))
    {
        k_id = id;
    }
    frm1 = frm;
}

private void btnUpdate_Click(object sender, EventArgs e)
{
    Form_3 frm3 = new Form_3(k_id, frm1);
    frm3.bookID = id;
    var result = frm3.ShowDialog();

    if (result == DialogResult.OK)
    {
        frm1.dataGridView1.Update();
    }
}

表格三:

public string bookID = string.Empty;
Form_1 myForm;

public Form_3(Form_1 last_form = null)
{
    InitializeComponent();
    myForm = last_form;
}

private void btnUpdate_Click(object sender, EventArgs e)
{
    if (myForm != null)
    {
        // database update operations ...
        dtKitapAdlari.Rows[row_index]["book_name"] = txtBookName.Text.Replace("'", "''");
        this.DialogResult = DialogResult.OK;
        Close();
    }
}

这是代码,我使用 dataGridview_CellClick 事件将 row_index 值保存在主窗体的静态变量中。


-1
投票

你能告诉我们代码吗?没有它什么都做不了。

© www.soinside.com 2019 - 2024. All rights reserved.