我正在开发一个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,名称和城市,我不需要再次显示这些内容。我怎么能这样做?
答案 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)
由于数据库的制作方式,您的问题正在发生。
您使用的是主键和外键吗?
这样您就可以轻松识别仅显示哪些记录