0

我发现了许多具有此主题的线程,但所有线程都与填充树视图和与数据库的通信在一个类中的情况有关...我想将它们分开,并且我的表单中有一个类,我想用我得到的数据填充树视图从其他班级。其他班级的“工作”只是与数据库通信并在需要的地方传递数据......这是我的班级形式:

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。

我的问题是,我怎样才能从数据库中获取所需的联赛并将它们放在足球节点下?

4

1 回答 1

0

最简单的方法是使用某种树结构作为 GetSports() 的返回值,而不是“列表”,并用联赛或其他更复杂的 sql 查询填充这个结构。然后只需使用此结构中的数据填充树视图。

于 2013-09-14T06:33:10.693 回答