从数据库填充树视图(两个类)

时间:2013-09-13 14:33:27

标签: c# sql winforms

我找到了很多这个主题的线程,但都是关于填充树视图和与数据库的通信在一个类中的情况...我想分开这些,我有一个类与我的表单,我想用数据填充树视图我从其他班级得到的。其他类的“工作”只是与数据库通信并在需要的地方传递数据...... 这是我的课程表格:

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;
    }

有了这个,我得到了一个看起来像这样的运动的树视图: enter image description here

问题是,我想在这个树视图中添加联赛,所以在足球下我有足球联赛的子节点。 在我的数据库中,联赛表包含来自运动表的外键,所以如果我的运动足球有sportID = 1,那么LeagueTable中与足球相对应的所有联赛都有外键sportID = 1.

我的问题是,如何从数据库中获取所需的联赛并将其置于足球节点下?

1 个答案:

答案 0 :(得分:0)

最简单的方法是使用某种树结构作为GetSports()的返回值,而不是&#34; List&#34;并使用更复杂的sql-query填充此结构与联盟或其他东西。 然后使用此结构中的数据填充treeview。