C # - проблема экспорта данных из SQL в TreeView в Visual Studio - PullRequest
0 голосов
/ 20 апреля 2019

Во-первых, у меня есть таблица, как показано ниже:

туЬаЫе

ID Регион Пол Фамилия

1 Нью-Йорк М Джерри

2 Нью-Йорк М Натан

3 New York F Mary

4 New York F Harriet

5 Л.А. М Бен

6 Л.А. Ф Ая

Во-вторых, мой код показывает результат, как показано ниже:

  • Нью-Йорк
    • M
    • Jerry
    • Nathan
  • Нью-Йорк
    • F
    • Mary
    • Гарриет
  • L.A.
    • M
    • Ben
  • L.A.
    • F
    • Ая

Результат такой же, как я ожидал, поскольку есть четыре корня. Я хотел бы получить следующий результат:

  • Нью-Йорк

    • M
    • Jerry
    • Nathan
    • F
    • Mary
    • Гарриет
  • * 1081 Л.А. *

    • M
    • Ben
    • F
    • Ая

Я хотел бы попросить о помощи, чтобы пересмотреть мой код ниже. Большое спасибо за помощь sby.

private void Show_In_TreeView()
    {
        String SQL_Select_Region = "SELECT DISTINCT [Region] FROM mytable";
        SqlCommand Region_sqlCommand = new SqlCommand(SQL_Select_Region, sqlCon);
        SqlDataAdapter Region_dataAdapter = new SqlDataAdapter(Region_sqlCommand);
        DataTable Region_table = new DataTable();
        Region_dataAdapter.Fill(Region_table);

        for (int i = 0; i < Region_table.Rows.Count; i++)
        {
            String SQL_Select_Sex = "SELECT DISTINCT [Sex] FROM mytable";
            SqlCommand Sex_sqlCommand = new SqlCommand(SQL_Select_Sex, sqlCon);
            SqlDataAdapter Sex_dataAdapter = new SqlDataAdapter(Sex_sqlCommand);
            DataTable Sex_table = new DataTable();
            Sex_dataAdapter.Fill(Sex_table);

            for (int j = 0; j < Sex_table.Rows.Count; j++)
            {
                String Region = Region_table.Rows[i]["Region"].ToString();
                String Sex = Sex_table.Rows[j]["Sex"].ToString();

                String SQL_Select_Name = "SELECT [Region], [Sex], [Name] FROM mytable WHERE [Region] = @Region AND [Sex] = @Sex";
                SqlCommand Name_sqlCommand = new SqlCommand(SQL_Select_Name, sqlCon);
                Name_sqlCommand.Parameters.AddWithValue("@Region", Region);
                Name_sqlCommand.Parameters.AddWithValue("@Sex", Sex);
                SqlDataAdapter Name_dataAdapter = new SqlDataAdapter(Name_sqlCommand);
                DataTable Name_table = new DataTable();
                Name_dataAdapter.Fill(Name_table);

                int RowCount_dataTable = Name_table.Rows.Count;
                switch (RowCount_dataTable)
                {
                        case 1:

                            TreeNode treeNode_RowCount_1_Name = new TreeNode(Name_table.Rows[0]["Name"].ToString());
                            TreeNode treeNode_RowCount_1_Sex = new TreeNode(Name_table.Rows[0]["Sex"].ToString());

                            TreeNode treeNode_RowCount_1_Region = new TreeNode(Name_table.Rows[0]["Region"].ToString(), new TreeNode[] { treeNode_RowCount_1_Name, treeNode_RowCount_1_Sex });
                            treeView1.Nodes.Add(treeNode_RowCount_1_Region );

                            break;

                        case 2:

                            TreeNode treeNode_RowCount_2_Name_1 = new TreeNode(Name_table.Rows[0]["Name"].ToString());
                            TreeNode treeNode_RowCount_2_Sex_1 = new TreeNode(Name_table.Rows[0]["Sex"].ToString());
                            TreeNode treeNode_RowCount_2_Name_2 = new TreeNode(Name_table.Rows[1]["Name"].ToString());
                            TreeNode treeNode_RowCount_2_Sex_2 = new TreeNode(Name_table.Rows[1]["Sex"].ToString());

                            TreeNode treeNode_RowCount_2_Region = new TreeNode(Name_table.Rows[0]["Region"].ToString(), new TreeNode[] { treeNode_RowCount_2_Name_1, treeNode_RowCount_2_Sex_1, treeNode_RowCount_2_Name_2, treeNode_RowCount_2_Sex_2 });
                            treeView1.Nodes.Add(treeNode_RowCount_2_Region);

                            break;

                        case 3:

                            TreeNode treeNode_RowCount_3_Name_1 = new TreeNode(Name_table.Rows[0]["Name"].ToString());
                            TreeNode treeNode_RowCount_3_Sex_1 = new TreeNode(Name_table.Rows[0]["Sex"].ToString());
                            TreeNode treeNode_RowCount_3_Name_2 = new TreeNode(Name_table.Rows[1]["Name"].ToString());
                            TreeNode treeNode_RowCount_3_Sex_2 = new TreeNode(Name_table.Rows[1]["Sex"].ToString());
                            TreeNode treeNode_RowCount_3_Name_3 = new TreeNode(Name_table.Rows[2]["Name"].ToString());
                            TreeNode treeNode_RowCount_3_Sex_3 = new TreeNode(Name_table.Rows[2]["Sex"].ToString());

                            TreeNode treeNode_RowCount_3_Region = new TreeNode(Name_table.Rows[0]["Region"].ToString(), new TreeNode[] { treeNode_RowCount_3_Name_1, treeNode_RowCount_3_Sex_1, treeNode_RowCount_3_Name_2, treeNode_RowCount_3_Sex_2, treeNode_RowCount_3_Name_3, treeNode_RowCount_3_Sex_3 });
                            treeView1.Nodes.Add(treeNode_RowCount_3_Region);

                            break;
                }
            }
        }
   }
...