Ich versuche, eine Treeview aus einer Access-Datenbank-Tabelle zu füllen.Auffüllen einer Treeview aus einer Access-Datenbank
Die Idee ist, die Provinz als Elternknoten, dann die Stadt als Kindknoten, dann die Vorstadt als Kind zu diesem Kindknoten zu haben.
Ich habe diesen Code schon, aber arrParentType = nParent.Tag.Split("=");
wird nicht funktionieren und ich weiß nicht warum.
Gibt es jemanden, der mir bei diesem Problem helfen kann?
void tvProvincesFill()
{
OleDbConnection con = new OleDbConnection(@"Provider = Microsoft.ACE.OLEDB.12.0; Data Source = E:\Users\Me\Documents\C# Projects\MyProject1\Data\database.accdb; Persist Security Info =False;");
OleDbDataReader treeProvince;
OleDbCommand cmdSelectProvinces = new OleDbCommand(("SELECT Province.Province_Code, Province.Province_name " + ("FROM (Province) " + ("GROUP BY Province.Province_Code, Province.Province_name " + ("HAVING Province.Province_name<>\' \' " + "ORDER BY Province.Province_name")))), con);
if ((con.State != ConnectionState.Open))
{
con.Open();
}
treeView1.Nodes.Clear();
treeProvince = cmdSelectProvinces.ExecuteReader();
while (treeProvince.Read())
{
TreeNode nProvince = new TreeNode();
nProvince.Text = treeProvince["Province_name"].ToString();
nProvince.Tag = ("Province_Code=" + treeProvince["Province_Code"].ToString());
this.treeView1.Nodes.Add(nProvince);
tvProvincesLoadChildNodes(nProvince);
// Load City and suburb info for current province
nProvince = null;
}
// frmMain.lblProvince.BackColor = Color.Empty
treeProvince = null;
cmdSelectProvinces = null;
}
// Fill Provinces for Geographic Criteria
void tvProvincesLoadChildNodes(TreeNode nParent)
{
// Load City and Suburb sub nodes for Provinces
string[] arrParentType;
arrParentType = nParent.Tag.Split("=");
if ((arrParentType[0] == "Province_Code"))
{
// Add City sub-nodes
OleDbDataReader drCities;
OleDbCommand cmdGetCities = new OleDbCommand(("SELECT Area_File.City " + ("FROM (Area_File) " + ("GROUP BY Area_File.City, Area_File.Province_Code " + ("HAVING Area_File.City<>\' \' AND Area_File.Province_Code="
+ (arrParentType[1] + " ORDER BY Area_File.City"))))), con);
drCities = cmdGetCities.ExecuteReader();
while (drCities.Read())
{
TreeNode nCity = new TreeNode();
nCity.Text = drCities["City"].ToString();
nCity.Tag = ("City=" + drCities["City"].ToString());
nParent.Nodes.Add(nCity);
tvProvincesLoadChildNodes(nCity);
// Load Suburbs for current city node
nCity = null;
}
drCities = null;
cmdGetCities = null;
}
else if ((arrParentType[0] == "City"))
{
// Add Suburb sub-nodes
OleDbDataReader drSuburbs;
OleDbCommand cmdGetSuburbs = new OleDbCommand(("SELECT Area_File.Suburb " + ("FROM (Area_File) " + ("GROUP BY Area_File.Suburb, Area_File.City " + ("HAVING Area_File.Suburb<>\' \' AND Area_File.City=\'"
+ (arrParentType[1] + ("\'" + " ORDER BY Area_File.Suburb")))))), con);
drSuburbs = cmdGetSuburbs.ExecuteReader();
while (drSuburbs.Read())
{
TreeNode nSuburb = new TreeNode();
nSuburb.Text = drSuburbs["Suburb"].ToString();
nSuburb.Tag = ("Suburb=" + drSuburbs["Suburb"].ToString());
nParent.Nodes.Add(nSuburb);
nSuburb = null;
}
drSuburbs.Close();
cmdGetSuburbs = null;
}
arrParentType = null;
}