更新另一个子表单中的文本后刷新datagridview

时间:2014-08-16 09:27:06

标签: datagridview refresh

我有一个绑定到关键字列表的datagridview。

      void BindKeywordData()
    {
        keywords = kbo.GetQueryable(false).ToList();
        srcKeywords.ResetBindings(false);
        dgKeywords.DataSource = null;
        dgKeywords.DataSource = srcKeywords;
        dgKeywords.Update();
    }
    private void FormKeywords_Load(object sender, EventArgs e)
    {

        BindKeywordData();
    }

有一个" EDIT"链接列,单击单元格内容时,我可以编辑另一个表单上特定行的信息。那个表单frmKeditor包含一个文本框和一个保存按钮,它完美无缺,所以我不在这里发布代码。

     FormKeywordEditor frmKEditor = new FormKeywordEditor(kw);
                DialogResult dresult = frmKEditor.ShowDialog();                    
                if (dresult == System.Windows.Forms.DialogResult.Yes)
                {
                    BindKeywordData();
                }

问题是BindKeywordData没有刷新数据网格视图(数据确实发生了变化,我已经直接通过Sql Studio进行了检查)。当我使用另一个表单添加新记录时,datagridview会立即显示新行,但编辑行的文本仍然不会更改,直到我关闭表单并再次重新打开。即使我在窗体上放置一个按钮并直接调用BindKeywordData(),datagridview仍然不显示已编辑行的更改。请帮助,谢谢。

1 个答案:

答案 0 :(得分:0)

自己找到了答案: 我不应该从对话框更新数据库,因为所有者表单不会知道它。所以在对话框中我只更改了关键字的一些值,然后在主窗体上调用kbo.save(),如下所示:

     FormKeywordEditor frmKEditor = new FormKeywordEditor(kw);
            DialogResult dresult = frmKEditor.ShowDialog();                    
            if (dresult == System.Windows.Forms.DialogResult.Yes)
            {
                kbo.save();
                BindKeywordData();
            }
相关问题