如何删除DataGridView中的数据重复

时间:2013-05-28 08:32:07

标签: .net vb.net winforms datagridview

我正在开发一个VB.NET应用程序,它使用DataGridView控件来显示数据库中的数据。目前,它显示如下:

54     john         NJ        HRA           1000   
54     john         NJ        DA            2500   
54     john         NJ        BP            12500

但我需要按如下方式显示:

54      john  NJ
                     HRA           1000   
                     DA            2500
                     BP            12500

由于重复ID,名称和城市,我不需要再次显示这些内容。我怎么能这样做?

3 个答案:

答案 0 :(得分:0)

我认为这可以帮到你

DataTable dtDataSource = new DataTable();

dtDataSource.Columns.Add("A");
dtDataSource.Columns.Add("B");
dtDataSource.Columns.Add("C");

dtDataSource.Rows.Add(new object[] { "1", "1", "1" });
dtDataSource.Rows.Add(new object[] { "1", "1", "2" });
dtDataSource.Rows.Add(new object[] { "1", "1", "3" });
dtDataSource.Rows.Add(new object[] { "2", "1", "1" });
dtDataSource.Rows.Add(new object[] { "2", "1", "2" });
dtDataSource.Rows.Add(new object[] { "2", "1", "3" });

DataTable dtNew = dtDataSource.Clone();

for (int i = 0; i < dtDataSource.Rows.Count; i++)
{
    if (i > 0)
    {
        if (dtDataSource.Rows[i][0].Equals(dtDataSource.Rows[i - 1][0]))
        {
            dtNew.Rows.Add(new object[] { "", dtDataSource.Rows[i][1], dtDataSource.Rows[i][2] });
        }
        else
        {
            dtNew.Rows.Add(new object[] { dtDataSource.Rows[i][0], "", "" });
            dtNew.Rows.Add(new object[] { "", dtDataSource.Rows[i][1], dtDataSource.Rows[i][2] });
        }
    }
    else
    {
        dtNew.Rows.Add(new object[] { dtDataSource.Rows[i][0], "", "" });
        dtNew.Rows.Add(new object[] { "", dtDataSource.Rows[i][1], dtDataSource.Rows[i][2] });
    }
}

dataGridView1.DataSource = dtNew;

您的数据应该先订购。

我尝试转换VB.Net here

答案 1 :(得分:0)

如果你正在做的只是显示数据,你可以使用两个SQL语句的UNION。

第一个将检索前三列加上两列空字符串UNION SQL三列空字符串和两列数据。第一个SQL语句的字段名称将命名列。

数据只读。

    SELECT F1, F2, F3, '' as F4, '' as F5 WHERE ...
    UNION
    SELECT '', '', '', F4, F5 WHERE ...

如果要检索多个目标的数据,SQL将变得更复杂一些。

答案 2 :(得分:0)

由于数据库的制作方式,您的问题正在发生。

您使用的是主键和外键吗?

这样您就可以轻松识别仅显示哪些记录