仅根据所选的列表框项加载DataGridView一次

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了仅根据所选的列表框项加载DataGridView一次相关的知识,希望对你有一定的参考价值。

我正在使用Visual Studio 2017开发WinForm应用程序。我创建了一个列表框,如下所示。 enter image description here

当我第一次点击Fruits时,会出现以下dataGridview。

enter image description here

即每当我按水果,我应该得到上面的数据网格。和蔬菜的相应值也相似。但问题是当我再次点击水果时,价值会被添加。我再次得到相同的值而不是保留它。这是我的代码。

public Form1()
    {          
        FruitList.Add("Mango");
        FruitList.Add("Apple");

        InitializeComponent();
    }
private void listBox2_SelectedIndexChanged(object sender, EventArgs e)
    {
        string a = listBox2.SelectedItem.ToString();
        if (a == "Fruits")
        {
            toolStripStatusLabel1.Text = a;
            dataGridView2.Columns.Add("key", "Fruit");
            dataGridView2.Columns.Add("value", "Name");
            foreach (var var in FruitList)
            {
                dataGridView2.Rows.Add("Fruit", var);
            }

        }
    }

当我选择Vegetable时,只有与之相关的值应出现在dataGridview中。但是当我点击列表框中的项目时,我正在添加所有内容

如何只加载一次dataGridView值。我是视觉工作室和C#的新手。只是探索它的各种功能。如果有人能提供帮助,那就太好了。提前致谢

根据er-shoaib的回答,添加后,

 dataGridView2.Rows.Clear();

在线上方

string a = listBox2.SelectedItem.ToString(); 

我重新加载了内容。

这很好,除非我不删除或进行任何更改。如果我删除一个选定的行,使用Button控件说芒果行,当我再次按List中的Fruits项时,这些项从头开始加载。如何在整个应用程序中保留更改。就像我关闭表格一样。对此有任何帮助。

答案

单击列表框中的项目时,需要在将新行填充到数据网格视图之前清除所有行。

添加此行

dataGridView2.Rows.Clear();

在线上方

string a = listBox2.SelectedItem.ToString(); 
另一答案

在for循环之前,清除datagrid,然后启动for循环并添加项目。

    datagrid2.rows.clear().

以上是关于仅根据所选的列表框项加载DataGridView一次的主要内容,如果未能解决你的问题,请参考以下文章

如何将每行具有不同组合框项的 DataTable 绑定到 DataGridView?

UIImage 仅用于所选的 applicationActivities,但 NSString 用于所有 applicationActivities

带有按钮、组合框和文本框的 C# WinForms (.NET Framework) DataGridView:使用按钮添加新行以添加组合框项时出错

根据所选的 indexpath.row 更改 UICollectionView 单元格图像视图

复制并删除所选的列表框项目

业务受理需求 客户下单 根据前台页面所选的省市区 关联定区去生成订单