下面是设置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);
}
}
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);
}
}
//参考如下代码 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));
}
}