我有一个函数
public void AddTree(long ParentID,TreeNode pNode) 
{
DataTable dt_tmp=(DataTable) this.ViewState["dt_tmp"]; 
DataView dvTree = new DataView(dt_tmp);
//过滤ParentID,得到当前的所有子节点
dvTree.RowFilter =  "[nvrParentCode] = " + ParentID; foreach(DataRowView Row in dvTree) 
{
TreeNode Node=new TreeNode() ;
if(pNode == null) 
{    //添加根节点 Node.Text = Row["nvrNameC"].ToString();
Node.NodeData =Row["nvrNameE"].ToString();
tvw_BomSetting.Nodes.Add(Node);
Node.Expanded=true;
AddTree(Int64.Parse(Row["nvrGenCode"].ToString()), Node);    //再次递归

else 
{   //添加当前节点的子节点
Node.Text = Row["nvrNameC"].ToString();
Node.NodeData =Row["nvrNameE"].ToString()+"";
pNode.Nodes.Add(Node);
Node.Expanded = true;

AddTree(Int64.Parse(Row["nvrGenCode"].ToString()),Node);     //再次递归
}
}                   
}  
调用的方法是AddTree(0, (TreeNode)null);
现在想把传入参数long改为string,应该怎么改?

解决方案 »

  1.   

    public void AddTree(string ParentID,TreeNode pNode) 
    {
    DataTable dt_tmp=(DataTable) this.ViewState["dt_tmp"]; 
    DataView dvTree = new DataView(dt_tmp);
    //过滤ParentID,得到当前的所有子节点
    dvTree.RowFilter =  "[nvrParentCode] = '" + ParentID + "'";//这里修改一下 foreach(DataRowView Row in dvTree) 
    {
    TreeNode Node=new TreeNode() ;
    if(pNode == null) 
    {    //添加根节点 Node.Text = Row["nvrNameC"].ToString();
    Node.NodeData =Row["nvrNameE"].ToString();
    tvw_BomSetting.Nodes.Add(Node);
    Node.Expanded=true;
    AddTree(Int64.Parse(Row["nvrGenCode"].ToString()), Node);    //再次递归

    else 
    {   //添加当前节点的子节点
    Node.Text = Row["nvrNameC"].ToString();
    Node.NodeData =Row["nvrNameE"].ToString()+"";
    pNode.Nodes.Add(Node);
    Node.Expanded = true;

    AddTree(Int64.Parse(Row["nvrGenCode"].ToString()),Node);     //再次递归
    }
    }  
    }
      

  2.   

    dvTree.RowFilter =  "[nvrParentCode] = " + ParentID.ToString();
      

  3.   

    .ToString()每个对象都有这个方法的..如果要自己构造的话就要重写一下了
      

  4.   

    不好意思,还有点问题
    Int64.Parse
    该怎么改呢?
    AddTree(0, (TreeNode)null)也有问题
     参数“1” : 无法从“int”转换为“string”
      

  5.   

    1. AddTree(Row["nvrGenCode"].ToString(),Node);     //再次递归
    2. AddTree("0", (TreeNode)null);
      

  6.   

    楼上的朋友,看看我这个问题呀
    Int64.Parse
    该怎么改呢?
    AddTree(0, (TreeNode)null)也有问题
     参数“1” : 无法从“int”转换为“string”
      

  7.   

    AddTree(0.ToString(), (TreeNode)null)
      

  8.   

    public void AddTree(string ParentID,TreeNode pNode) 
    {
    DataTable dt_tmp=(DataTable) this.ViewState["dt_tmp"]; 
    DataView dvTree = new DataView(dt_tmp);
    //过滤ParentID,得到当前的所有子节点
    dvTree.RowFilter =  "[nvrParentCode] = " + ParentID.ToString();foreach(DataRowView Row in dvTree) 
    {
    TreeNode Node=new TreeNode() ;
    if(pNode == null) 
    {    //添加根节点 Node.Text = Row["nvrNameC"].ToString();
    Node.NodeData =Row["nvrNameE"].ToString();
    Node.Type =Row["nvrGenCode"].ToString();
    // Node.Parent=Row["nvrParentCode"].ToString();
    tvw_BomSetting.Nodes.Add(Node);
    Node.Expanded=true;
    // AddTree(String.Parse(Row["nvrGenCode"].ToString()), Node);    //再次递归
    AddTree(Row["nvrGenCode"].ToString(),Node); 

    else 
    {   //添加当前节点的子节点
    Node.Text = Row["nvrNameC"].ToString();
    Node.NodeData =Row["nvrNameE"].ToString();
    Node.Type =Row["nvrGenCode"].ToString();
    // Node.Parent=Row["nvrParentCode"].ToString();
    pNode.Nodes.Add(Node);
    Node.Expanded = true;// AddTree(Int64.Parse(Row["nvrGenCode"].ToString()),Node);     //再次递归
    AddTree(Row["nvrGenCode"].ToString(),Node); 
    }
    }                   
    }            
    这个是我最新改的,好象还是有问题
    应用程序中的服务器错误。
    --------------------------------------------------------------------------------无法在 System.String 和 System.Int32 上执行“=”操作。 
      

  9.   

    好象就是这一行出的错
    dvTree.RowFilter =  "[nvrParentCode] = " + ParentID.ToString();
      

  10.   

    dvTree.RowFilter =  "[nvrParentCode] = " + ParentID;
      

  11.   

    [nvrParentCode]这个字段是string型的?dvTree.RowFilter =  "[nvrParentCode] = " + ParentID.ToString();-》dvTree.RowFilter =  "[nvrParentCode] = '"+ParentID.ToString()+"';