选择一个包含子类别的类别并将它们放入 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#

我有三个表:voltagecatenary_typetype_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 中,没有类别重复的主要内容,如果未能解决你的问题,请参考以下文章

SELECT 子类别和没有子类别的父类别

获取类别和子类别的所有产品(rails,awesome_nested_set)

选择基于where语句的行

在 tableview Parse 中显示来自类子类别的数据

获取包含父/子类别的总行数。困惑为啥 in_array 不起作用

带有子类别的循环类别