我找到了很多这个主题的线程,但都是关于填充树视图和与数据库的通信在一个类中的情况...我想分开这些,我有一个类与我的表单,我想用数据填充树视图我从其他班级得到的。其他类的“工作”只是与数据库通信并在需要的地方传递数据...... 这是我的课程表格:
public Form1()
{
InitializeComponent();
}
// on Form load
private void Form1_Load(object sender, EventArgs e)
{
List<String> lista = DB.DatabaseBroker.GetSports();
PopulateTreeView(lista);
}
private void PopulateTreeView(List<string> lista)
{
treeViewSports.Nodes.Clear();
foreach (string s in lista)
{
treeViewSports.Nodes.Add(s);
}
}
...这里是我从以下网站获取数据的课程:
static SqlConnection conn = new SqlConnection("Data Source=MLAD3N-PC\\SQLEXPRESS;Initial Catalog=DBSports;Integrated Security=True");
public static List<String> GetSports()
{
DataTable dataTable = new DataTable();
List<String> sports = new List<String>();
SqlDataAdapter SDA = new SqlDataAdapter("SELECT * FROM TableSport", conn);
SDA.Fill(dataTable);
if (dataTable.Rows.Count > 0)
{
foreach(DataRow drow in dataTable.Rows)
{
sports.Add(drow[1].ToString());
}
}
return sports;
}
有了这个,我得到了一个看起来像这样的运动的树视图:
问题是,我想在这个树视图中添加联赛,所以在足球下我有足球联赛的子节点。 在我的数据库中,联赛表包含来自运动表的外键,所以如果我的运动足球有sportID = 1,那么LeagueTable中与足球相对应的所有联赛都有外键sportID = 1.
我的问题是,如何从数据库中获取所需的联赛并将其置于足球节点下?
答案 0 :(得分:0)
最简单的方法是使用某种树结构作为GetSports()的返回值,而不是&#34; List&#34;并使用更复杂的sql-query填充此结构与联盟或其他东西。 然后使用此结构中的数据填充treeview。