我发现了许多具有此主题的线程,但所有线程都与填充树视图和与数据库的通信在一个类中的情况有关...我想将它们分开,并且我的表单中有一个类,我想用我得到的数据填充树视图从其他班级。其他班级的“工作”只是与数据库通信并在需要的地方传递数据......这是我的班级形式:
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。
我的问题是,我怎样才能从数据库中获取所需的联赛并将它们放在足球节点下?