求解关于TreeView如何操作三张表的问题
每个类别对应多个系列 每个系列对应多个产品
类别表 LBID(自增ID) LBMC(类别名称)
系列表 XLID(自增ID) LBID(与类别表关联) XLMC(系列名称)
产品表 CPID(自增ID) LBID XLID CPMC(产品名称) CPJG(价格)等等
请问如何利用TreeView控件实现
-类别1
-系列1
-产品1
-产品2
+系列2
.
.
.
+类别2
+类别3
.
.
.
如此的树状图呢?看了论坛上不少TreeView的问题,解决这样问题的很少,希望高手能帮忙
------解决方案--------------------递归一下
------解决方案--------------------public string strConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0}aa.mdb;Jet OLEDB:Database Password=123 ";
public string strConnection = " ";
public Form1()
{
InitializeComponent();
strConnection = string.Format(strConnectionString, Application.StartupPath + "\\ ");
InitTree();
}
public void InitTree()
{
string strSQL = "SELECT cp.cpid,cp.cpmc,lb.lbmc,xl.xlmc,lb.lbid,xl.xlid FROM CP,lb,xl where cp.lbid=lb.lbid and xl.xlid=cp.xlid ";
OleDbConnection objConnection = new OleDbConnection(strConnection);
objConnection.Open();
OleDbDataAdapter objAdapter = new OleDbDataAdapter(strSQL, objConnection);
DataSet ds = new DataSet();
objAdapter.Fill(ds);
objAdapter.Dispose();
objConnection.Close();
objConnection.Dispose();
DataTable dt = new DataTable();
dt = ds.Tables[0].Copy();
InitTreeNode(treeView1.Nodes, " ", ref dt, 0);
}
public void InitTreeNode(TreeNodeCollection tnc, string strPID, ref DataTable dt,int iPath)
{
string strRunTempID = " ";
string strTempId = " ";
if (iPath == 0)
{
//进行第一层遍历
foreach (DataRow dr in dt.Rows)
{
strRunTempID = dr[ "lbid "].ToString().Trim();
if (strTempId == strRunTempID && strTempId != " ")
{
continue;
}
else
{
string strXLID = dr[ "lbid "].ToString().Trim();
strTempId = strRunTempID;
TreeNode tn = new TreeNode();
tn.Text = dr[ "lbmc "].ToString().Trim();
tnc.Add(tn);
InitTreeNode(tn.Nodes, strXLID, ref dt, 1);
}
}
}
if (iPath == 1)
{
strRunTempID = " ";
strTempId = " ";
//进行第2层遍历
DataView dv = new DataView();
dv.Table = dt;
dv.RowFilter = "lbid = ' " + strPID + " ' "