private void AddTree(int parentid,TreeNode pnode,DataSet ds,string tbname)
{
DataView dvTree = new DataView(ds.Tables[tbname]);
dvTree.RowFilter = "[ParentID] = "+parentid; foreach(DataRow row in dvTree)
{
if(pnode ==null)
{
TreeNode node = new TreeNode();
node.Text = row["CategoryName"].ToString();

TreeView1.Nodes.Add(node);
AddTree(int.Parse(row["CategoryID"].ToString()),node,ds,tbname);
}
else
{
TreeNode node = new TreeNode();
node.Text = row["CategoryName"].ToString(); pnode.Nodes.Add(node);
AddTree(int.Parse(row["CategoryID"].ToString()),node,ds,tbname);
}
}
}
出问题了:
指定的转换无效。 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.InvalidCastException: 指定的转换无效。源错误: 
行 38:  dvTree.RowFilter = "[ParentID] = "+parentid;
行 39: 
行 40:  foreach(DataRow row in dvTree)      //红字显示
行 41:  {
行 42:  if(pnode ==null)
 源文件: e:\my job\truly2\manager\controls\frameset_left.aspx.cs    行: 40 堆栈跟踪: 
[InvalidCastException: 指定的转换无效。]
   Truly2.Manager.Controls.Frameset_Left.AddTree(Int32 parentid, TreeNode pnode, DataSet ds, String tbname) in e:\my job\truly2\manager\controls\frameset_left.aspx.cs:40
   Truly2.Manager.Controls.Frameset_Left.Page_Load(Object sender, EventArgs e) in e:\my job\truly2\manager\controls\frameset_left.aspx.cs:31
   System.Web.UI.Control.OnLoad(EventArgs e)
   System.Web.UI.Control.LoadRecursive()
   System.Web.UI.Page.ProcessRequestMain()