このテーマで多くのスレッドを見つけましたが、すべてツリービューの作成とデータベースとの通信が1つのクラスにある状況に関するものです...これらを分離したかったので、取得したデータをツリービューに作成したいフォームに1つのクラスがあります他のクラスから。その他のクラスの「仕事」は、データベースと通信し、必要な場所にデータを渡すことだけです...フォーム付きの私のクラスは次のとおりです。
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 になります。
私の質問は、どうすればデータベースから必要なリーグを取得し、それらをフットボール ノードの下に配置できますか?