2013-09-13 4 views
0

Я нашел много потоков с этой темой, но все о ситуации, когда заполнение дерева и связь с базой данных находятся в одном классе ... Я хотел отделить их, и у меня есть один класс с моей формой где я хочу заполнить treeview данными, которые я получаю из другого класса. Тот другой класс «работа» только для связи с базой данных и передавать данные, где это необходимо ... Вот мой класс с формой:Populate treeview из базы данных (два класса)

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

с этим я получить TreeView со спортом, который выглядит следующим образом: enter image description here

дело в том, я хочу, чтобы добавить лиги в этот TreeView так под футболом у меня есть дочерние узлы с лигами футбола. В моей базе данных таблица лиг содержит внешние ключи от спортивного стола, поэтому, если мой спортивный футбол имеет sportID = 1, все лиги в LeagueTable, соответствующие футболу, имеют внешний ключ sportID = 1.

Мой вопрос: как я могу получить лиги из базы данных и разместить их под футбольным узлом?

+0

Кто-нибудь? : -/не может решить эту проблему – Mlad3n

ответ

0

Самый простой способ - использовать какую-то древовидную структуру как возвращаемое значение для GetSports() вместо «List» и заполнить эту структуру лигами или чем-то еще с более сложным sql-запросом. Затем просто заполните treeview, используя данные из этой структуры.

Смежные вопросы