如何在WinForms中更新DataGridView

时间:2012-01-19 13:38:49

标签: c# winforms datagridview

我必须使用产品更新DataGridView。这些产品按类别分组。我为每个类别制作了Panel。单击Panel后,我想显示Panel个列表,其中包含点击的Panel中的产品。此外,当我点击列表中的Panel时,我希望将其插入DataGridView。这种情况可能吗?

屏幕截图:enter image description here

截图说明:

- 类别位于左上角。

- 按下某个类别后,左侧会显示数据库记录列表。

- 当按下记录时,它会绑定到datagridview。

1 个答案:

答案 0 :(得分:2)

我不明白GUI会是怎样的。截图将帮助我们更好。不确定点击面板是否是让用户打开某物的理想方式。希望小组有边界。

假设每个面板都标记了其类别对象。

private void button1_Click(object sender, EventArgs e)
{
    List<Category> lstCategory = Manager.GetCategories();

    int i = 5, j = 5;
    foreach (Category cat in lstCategory)
    {
        Label label = new Label();
        label.Text = cat.Name;
        Panel panel = new Panel();
        panel.Tag = cat;
        panel.Controls.Add(label);
        //if you already have panel created for categories, then start from here..
        panel.Click += ((s, r) =>
        {
            List<Product> lstProduct = Manager.GetProducts((Category)panel.Tag);

            int x = 5, y = 5;
            foreach (Product product in lstProduct)
            {
                var pnl = new Panel();
                pnl.BorderStyle = BorderStyle.Fixed3D;
                pnl.Size = new Size(15, 15);
                pnl.Location = new Point(20 + x, 20 + y); //position it properly.
                this.Controls.Add(pnl);
                pnl.Tag = product;
                Label lbl = new Label();
                lbl.Text = product.Name;
                pnl.Controls.Add(lbl);
                pnl.Click += ((p, q) =>
                {
                   dataGridView1.Rows.Add(//according to pnl.Tag values

                });
            }
        });

        panel.BorderStyle = BorderStyle.FixedSingle;
        panel.Size = new Size(15, 15);
        panel.Location = new Point(20 + i, 20 + j); //position it properly.
        this.Controls.Add(panel);

    }
}

如果需要,您可以通过将必要的内容作为参数进行重构,将创建面板的代码重构为一种方法。