对于这样一个存放在内存中的临时表
Id  ParentId
1    0
2    0
3    0
4    2
5    2
6    4
7    3
如何能够在把它输出成文本文件时写成如下形式文本
1
  4
     6
  5
2
3
  7
我只能够根据ID顺序生成文本...
StreamWriter objWriter=new StreamWriter("C:\\TreeFile.men", false, Encoding.Default); 
//遍历TreeView 
System.Text.StringBuilder strTemp = new StringBuilder(); 
int TempCount = dtTree.Rows.Count; 
MessageBox.Show(TempCount.ToString()); 
for (int i = 0; i<TempCount; i++) { 
string strAdd = null; 
for (int j = 1; j < dtTree.Rows[i].ItemArray.Length - 2; j++) { 
// MessageBox.Show(treeViewGetMen.Nodes[i-1].ToString()); 
strAdd = strAdd + dtTree.Rows[i][j].ToString(); 
//strTemp.Append(dtTree.Rows[i][j].ToString()); 
//strTemp.Append("\r\n"); 

strTemp.Append(strAdd); 
strTemp.Append("\r\n"); 

string strResult = strTemp.ToString(); 
//MessageBox.Show(strResult); 
objWriter.WriteLine(strResult); 
objWriter.Close();

解决方案 »

  1.   

    对啊,我这样写是只能顺序把表里的内容给生成出来.
    我就是按照你的blog生成的DataTable然后生成了TreeView
    现在我在对TreeView进行操作后修改了DataTable,现在要重新把DataTable中的内容写成文本,应该怎样做呢?
      

  2.   

    直接从TreeView导到文本不就可以了?
      

  3.   

    你如果想用文本保存,那么首先你treeview基本信息都要进行保存。
    即类似于xml那样,要把treeview每个节点的信息都保存下来。
      

  4.   

    因为TreeView上结点的信息只是DataTable中的一个字段的信息,DataTable中还有几个字段存储的是和结点对应的其他信息,这个都放在Tag里会比放在DataTable中好吗?到底那种机制会比较好?是从DataTable中生成文本还是把信息都存在Tag中从TreeView生成文本?
    这里我对DataTable中其他的字段进行相关的处理操作然后再生成文本
      

  5.   

    因为TreeView上结点的信息只是DataTable中的一个字段的信息,DataTable中还有几个字段存储的是和结点对应的其他信息,这个都放在Tag里会比放在DataTable中好吗?到底那种机制会比较好?是从DataTable中生成文本还是把信息都存在Tag中从TreeView生成文本?
    这里我对DataTable中其他的字段进行相关的处理操作然后再生成文本
      

  6.   

    //递归输出函数 private void WriteTree(DataTable dt,StreamWriter objWriter,string leftSpace,int SelectNum)
    {
    foreach (DataRow dr in dt.Select("ParentId=" + SelectNum.ToString()))
    {
    objWriter.WriteLine(leftSpace + dr["id"].ToString());
    WriteTree(dt,objWriter,leftSpace + "  ",Convert.ToInt32(dr["id"]));
    }
    }//调用方法
    DataTable dt = new DataTable();
    dt.Columns.Add("id");
    dt.Columns.Add("ParentId");
    DataRow dr = dt.NewRow();

    dr[0]=1;
    dr[1]=0;
    dt.Rows.Add(dr); dr = dt.NewRow();
    dr[0]=2;
    dr[1]=0;
    dt.Rows.Add(dr); dr = dt.NewRow();
    dr[0]=3;
    dr[1]=0;
    dt.Rows.Add(dr); dr = dt.NewRow();
    dr[0]=4;
    dr[1]=2;
    dt.Rows.Add(dr); dr = dt.NewRow();
    dr[0]=5;
    dr[1]=2;
    dt.Rows.Add(dr); dr = dt.NewRow();
    dr[0]=6;
    dr[1]=4;
    dt.Rows.Add(dr); dr = dt.NewRow();
    dr[0]=7;
    dr[1]=3;
    dt.Rows.Add(dr); StreamWriter objWriter=new StreamWriter("D:\\TreeFile.men", false, System.Text.Encoding.Default);
    WriteTree(dt,objWriter,"",0);
    objWriter.Close();