Во-первых, у меня есть таблица, как показано ниже:
туЬаЫе
ID Регион Пол Фамилия
1 Нью-Йорк М Джерри
2 Нью-Йорк М Натан
3 New York F Mary
4 New York F Harriet
5 Л.А. М Бен
6 Л.А. Ф Ая
Во-вторых, мой код показывает результат, как показано ниже:
- Нью-Йорк
- Нью-Йорк
- L.A.
- L.A.
Результат такой же, как я ожидал, поскольку есть четыре корня. Я хотел бы получить следующий результат:
Нью-Йорк
- M
- Jerry
- Nathan
- F
- Mary
- Гарриет
* 1081 Л.А. *
Я хотел бы попросить о помощи, чтобы пересмотреть мой код ниже. Большое спасибо за помощь 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;
}
}
}
}