如何在C#中将多个记录从一个表单传递到另一个表单?

时间:2017-03-22 10:19:22

标签: c#

我有2个表单,form1form2。每当我在form1中双击datagrid的单元格时,它将转到表单2,然后我在数据网格中显示它们的一些项目和价格。我在那里选择一行,该值通过1 datagridview传递。但是我希望传递第二个值,这也超过了写第一个传递给表单1的值。我想在下一行中添加它。我该怎么办?

这是表格2的代码

private void Form2_Load(object sender, EventArgs e)// loading data to datagrid from database file
    {
        SqlDataAdapter sda = new SqlDataAdapter(@"select     brnDb.compname as [company name], brnDb.catname as [category Name],     itemDB.fullname as [Item Name], itemDb.itmbyp as [Buying Price], itemDB.itmdlrp [Dealer Price],itemDB.itmmrp as [MRP],itemDb.itmunit as [Unit Of Measure], itemDB.itmml [Liters], itemDB.itmgr[KGs], itemDb.itmpc[Units] from brnDB inner join itemDb on brnDb.brname=itemDB.brname order by itemDB.fullname asc", con);
        DataTable dt = new DataTable();
        DataSet ds = new DataSet();
        sda.Fill(dt);
        dataGridView1.DataSource = dt;
    }

通过单击按钮传递所选行以形成1

    private void button1_Click(object sender, EventArgs e)
    {
        Form1 b = new Form1(dataGridView1.SelectedRows[0].Cells[2].Value.ToString(),
                            dataGridView1.SelectedRows[0].Cells[3].Value.ToString(),
                            dataGridView1.SelectedRows[0].Cells[4].Value.ToString(),
                            dataGridView1.SelectedRows[0].Cells[5].Value.ToString());
        b.ShowDialog();
    }

表格1的代码

 public Form1(string Item_Name, string Buying_Price, string Dealrer_Price, string MRP )
    {
        InitializeComponent();
        int n;


        n = dataGridView1.Rows.Add();
        dataGridView1.Rows[n].Cells[1].Value = Item_Name;
        dataGridView1.Rows[n].Cells[3].Value = Buying_Price;
        dataGridView1.Rows[n].Cells[4].Value = Dealrer_Price;
        dataGridView1.Rows[n].Cells[5].Value = MRP;
    }

因此,值从表单2传递,但每次都在第一行覆盖。但我想在传递之前在form1中添加新行。也许我想在这里使用一些循环,但我不知道如何。为了循环目的,我也声明了一个整数。我用Google搜索但最终没有得到好结果。

2 个答案:

答案 0 :(得分:0)

您必须在form1中添加一个List,可以在form2中访问。

Form1 b = null;定义为全局变量

添加b = new Form1(); Form2_Load函数

在ShowDialog();

之前将b.list.Add(dataGridView1.SelectedRows[0]);添加到button1_click函数

仅在button1_click功能

中保留b.ShowDialog();

public List<DataGridViewRow> list = new List<DataGridViewRow>();添加到form1

答案 1 :(得分:0)

我们还可以有另一个选择是创建具有通用列表的静态类。我们可以将该列表用作临时存储。

{{1}}

此类具有公共静态SetRow setter。使用此setter将数据保存在全局列表中,即&#34; _globalVar&#34;。

此类还具有在任何点重置该列表的方法。只需调用该静态方法即可重置该网格。

如何使用

这是获取数据并传递给form1的form2代码。

{{1}}

以表格1

接收数据并将其保存到我们的全球列表中
{{1}}