//建树
public void InitTree(TreeNodeCollection  Nds,string parentId,DataTable dt)
{    
            TreeNode  tmpNd;
DataRow[] rows=dt.Select("上级ID = '"+parentId+"'");
foreach (DataRow thisrow in rows)
{
                            tmpNd=new TreeNode();
                tmpNd.Text=thisrow["名称"].ToString();
                tmpNd.Tag=thisrow["ID"].ToString();
                            Nds.Add(tmpNd);
InitTree(tmpNd.Nodes,tmpNd.Tag.ToString(),dt);
}
}//刷新
private void refurbish()
{
            tVTAET.BeginUpdate();
this.tVTAET.Nodes.Clear();
this.getNewData();
InitTree(this.tVTAET.Nodes,"76860a89-1570-432a-a92f-2506af51ce8e",dsInAndExType.Tables[0]);
tVTAET.EndUpdate();
}

解决方案 »

  1.   

    开始的时候调用getNewData();//读xml获最新数据,然后InitTree(this.tVTAET.Nodes,"76860a89-1570-432a-a92f-2506af51ce8e",dsInAndExType.Tables[0]);这样正常;
    在新增数据写到xml后,调用上面的刷新后,节点双倍出现?望指点!谢谢,分为100.
      

  2.   

    是winform,我是做第一个winform玩的,我来给自己顶一下.
      

  3.   

    //这是保存和保存后调用的地方,请看看有问题吗?
    private void btnSave_Click(object sender, System.EventArgs e)
    {
    if(this.tbName.Text=="")
    {
    MessageBox.Show("请输入"+NewOrModify+"类型的名称!");
    }
    else
    {
    if(NewOrModify=="新增")
    {
    DataRow thisRow = dsInAndExType.Tables[0].NewRow();
    thisRow["ID"]=Guid.NewGuid().ToString();
    thisRow["上级ID"]=drthisrow["ID"].ToString();
    int i = Convert.ToInt32(drthisrow["分类所在层数"].ToString());
    i=i+1;
    thisRow["分类所在层数"]=i.ToString();
    thisRow["是收入还是支出"]=drthisrow["是收入还是支出"].ToString();
    thisRow["名称"]=this.tbName.Text;
    thisRow["备注"]=this.tbRe.Text;
    //未加创建人
    thisRow["创建时间"]=Convert.ToString(DateTime.Today);
    dsInAndExType.Tables[0].Rows.Add(thisRow);  
    //写入XML
    WriteNewData();
    //控件状态改变
    ControlInitialize();
    //刷新
    NewOrModify="";
                        refurbish();
    }
    else
    {
    //修改时的保存(未写)
    }
    }
    }
      

  4.   

    你在调用this.getNewData();的时候,,是否对dsInAndExType.Tables[0]执行了Clear();方法......
      

  5.   

    你在调用this.getNewData();的时候,,是否对dsInAndExType.Tables[0]执行了Clear();方法......
      

  6.   

    thanks,谢谢
    是没有对dsInAndExType.Tables[0]执行Clear();
    ok了!结贴.再次感谢二位.
      

  7.   

    请问是怎么实现刷新treeview的,请联系我