//建树
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();
}
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();
}
在新增数据写到xml后,调用上面的刷新后,节点双倍出现?望指点!谢谢,分为100.
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
{
//修改时的保存(未写)
}
}
}
是没有对dsInAndExType.Tables[0]执行Clear();
ok了!结贴.再次感谢二位.