【问题标题】:update selected row in datagridview from another form从另一个表单更新 datagridview 中的选定行
【发布时间】:2013-12-16 13:06:11
【问题描述】:

我有 2 个表单 Form1 和 Form2,我想从 Form2 更新 Form1 中的 datagridview 首先我选择Form1中的datagridview行,然后单击一个按钮打开Form2。 在 Form2 中输入新数据然后保存。

我该怎么做?

【问题讨论】:

    标签: c# winforms datagridview


    【解决方案1】:

    您可以在Form1 上创建一个公共方法来插入行。我们称之为LoadData。这将收到一组参数,指示Form2 上的数据。

    public void LoadData( ... )
    {
        // load the data into the data grid
    }
    

    然后给Form2添加一个新的构造函数:

    public Form2(Form1 referrer)
    {
        _referrer = referrer;
    }
    

    其中_referrerprivate 字段,类型为Form1

    private Form1 _referrer;
    

    然后当你加载Form2时,传入this,因为你在Form1

    var f = new Form2(this);
    

    最后,当您要添加来自Form2 的数据时,请执行以下操作:

    _referrer.LoadData( ... );
    

    【讨论】:

    • 我在 Form1 中的数据网格视图显示示例:id、name、address。我可以 1. 从选定行中获取 id 值作为字符串吗? 2. 将此字符串值发送到 Form2。 3.使用mysqlCommand更新数据,例如:"update my_data_base Set bla-bla Where id=" + String from Form1.
    • 如何将我得到的字符串发送到 Form2?
    • @user2029546,注入它的方式与我向您展示如何注入 Form1 的方式相同。
    • @user2029546,而不是将Form1 注入Form2 上的附加构造函数,而是注入string。将string 存储为private 字段,就像我向您展示的Form1 一样。基本上将Form2上的所有Form1成员更改为string
    • 你能举个简单的例子吗,我很困惑。 @Michael Perrreneoud 我认为你最好一步一步地帮助我,我完全是菜鸟:D 帮我解决这个= 1. string eds = Convert.ToString(dataGridView1.SelectedRows[0].Cells[0].Value); 2.帮我把这个字符串发给Form2
    【解决方案2】:

    我的解决方案类似于@Michael Perrenoud 的解决方案。您的目的是将值从 form1 传递到 form2。如何通过?通常需要通过form2的构造函数将form1中的对象传递给form2。那么,要通过什么?其他人说传递form1本身或传递gridview控件,但我更喜欢传递你真正想在form2中使用的数据,为什么?因为当你传递一个控件(表单或gridview)时,你需要用它分析并获取数据,然后在form2中添加到gridview2,想想看,当你从form1传递控件时,也许有一天你会替换gridview其他控件,如listview或treeview,甚至有一天你可能会放弃form1,所以你需要修改和重构你的form2。但是如果你只传递数据,你可以重用form2。这是我的示例代码:

    首先,添加一个引用您传递的数据的私有字段

    private object mydata = null;
    

    添加一个函数,用传递的数据填充gridview

    public void FillData( ... )
    {
        if(mydata != null)
        {
        //add the data into gridview
         }
    }
    

    然后,为 Form2 添加一个新的构造函数:

    public Form2(object data)
    {
        _mydata = data;
    }
    

    当要显示form2时,请从gridview1中获取数据

    void ShowData()
    {
         object mydata = null;
         //get the data from selected rows and set to mydata
         Form2 f = new Form2(mydata);
         f.ShowDialog();
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-08
      • 1970-01-01
      • 1970-01-01
      • 2012-05-25
      • 2015-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多