下面是设置TreeView数据的代码,现在想改为通过控件(DataSet,BindingSource,TableAdapter)调资料,即不用getDataset,应怎么更改代码,特别是dv.Table = dsDept.Tables["dept"]这行,我老在这行出错。如果哪位网友有更好的方法希望能贴出来。
dsDept = getDataset();
setTreeData(tvTree.Nodes, "0");//从根开始private DataSet getDataset()
{
string strSelect = "SELECT [AutoID],[deptID],[deptName] ,[parentID] " +
"FROM [erpdata].[dbo].[ Department]";
SqlConnection sqlcon = new SqlConnection(SqlConntionString);
DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter(strSelect, sqlcon);
da.Fill(ds, "Dept");
return ds;
}private void setTreeData(TreeNodeCollection Nds, string pId)
{
DataView dv = new DataView();
TreeNode tmpNd;
string intId;
dv.Table = dsDept.Tables["dept"];
dv.RowFilter = "deptID='" + pId + "'";
foreach (DataRowView drv in dv)
{
tmpNd = new TreeNode();
intId = drv["deptID"].ToString();
tmpNd.Name = intId;
tmpNd.Text = drv["deptName"].ToString();
Nds.Add(tmpNd);
setTreeData (tmpNd.Nodes, intId);
}
}

解决方案 »

  1.   

    //利用Nodes.Find()寻找父节点
    //参考如下代码        private void button1_Click(object sender, EventArgs e)
            {
                OleDbConnection vOleDbConnection = new OleDbConnection(
                    "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\Temp\\temp.mdb");
                string vSqlCommandText = "select * from tree";
                vOleDbConnection.Open();
                OleDbCommand vOleDbCommand = new OleDbCommand(vSqlCommandText, vOleDbConnection);
                OleDbDataReader vOleDbDataReader = vOleDbCommand.ExecuteReader();
                while (vOleDbDataReader.Read())
                {
                    TreeNode[] vParentNodes = 
                        treeView1.Nodes.Find(vOleDbDataReader.GetString(2), true);
                    if (vParentNodes.Length > 0)
                        vParentNodes[0].Nodes.Add(vOleDbDataReader.GetString(1),
                            vOleDbDataReader.GetString(1));
                    else treeView1.Nodes.Add(vOleDbDataReader.GetString(1),
                        vOleDbDataReader.GetString(1));
                }
            }