选择一个包含子类别的类别并将它们放入 DataGridView 中,没有类别重复
Posted
技术标签:
【中文标题】选择一个包含子类别的类别并将它们放入 DataGridView 中,没有类别重复【英文标题】:SELECT a category with it sub categories and put them into a DataGridView without category duplicates 【发布时间】:2019-12-15 04:14:49 【问题描述】:对不起,标题不清楚,但我不知道如何准确地解释我想要什么,所以用图片会更容易。
编程语言:C#
我有三个表:voltage
、catenary_type
和 type_into_voltage
在voltage
表中,我们有电压等级的名称,
在catenary_type
中,悬链线类型的名称和
在type_into_voltage
中,我们可以将电压等级与接触网类型相关联。
我想在DataGridView
中显示与其电压电平相关的所有接触网类型,所以我实际上是使用此代码选择返回 DataTable 的数据:
internal DataTable SelVoltType()
DataTable dt = new DataTable();
using (SqlConnection connection = Program.GetOpenedSqlConnection())
using (SqlCommand cmd = new SqlCommand("SELECT tiv.id_voltage, volt.name 'Tension', tiv.id_type, cattype.name as 'Types de caténaire' " +
"FROM [allocation_schematic.types].type_into_voltage tiv " +
"INNER JOIN [allocation_schematic.types].catenary_type cattype ON cattype.id = tiv.id_type " +
"INNER JOIN [allocation_schematic.types].voltage volt ON volt.id = tiv.id_voltage; ", connection))
using (SqlDataAdapter DataAdapter = new SqlDataAdapter(cmd))
DataAdapter.Fill(dt);
return dt;
我直接把它发给DataGridView.DataSource
。
它给了我this
但我希望它像 this 一样没有重复的电压电平
有人可以帮我吗?谢谢
【问题讨论】:
【参考方案1】:最简单的方法是在创建表格后移除电压。尝试以下:
string oldVoltage = "";
for (int i = 0; i < dt.Rows.Count; i++)
string tension = (string)dt.Rows[i]["Tension"];
if (tension == oldVoltage)
dt.Rows[i]["Tension"] = string.Empty;
else
oldVoltage = tension;
【讨论】:
很好用,谢谢!如果您或任何人对此有 SQL 解决方案,它可能会很有用,因为如果我们有很多子类别,则程序需要很长时间才能查看每个值等。但是这个解决方案对我来说已经足够了!谢谢!以上是关于选择一个包含子类别的类别并将它们放入 DataGridView 中,没有类别重复的主要内容,如果未能解决你的问题,请参考以下文章
获取类别和子类别的所有产品(rails,awesome_nested_set)
在 tableview Parse 中显示来自类子类别的数据