PS 补充下我代码 执行结构是这样这行代码执行结果
ID     Name    PID  State     OrderNumber
 1      目录1    0     草稿          1
 2      子目录1   1     草稿         2
 3      子目录2   2     草稿         3
 4      目录1    0     发布          1
 5      子目录1   1     发布         2
 6      子目录2   2     发布         3
----------------PID结构丢失 ID  5  6   的PID  分别是  1  2  上面写错了

解决方案 »

  1.   

    用递归 BindTree("0", Tree_classtree.Nodes);private void BindTree(string parent, TreeNodeCollection tree)
            {
                foreach (DataRow row in Cache_Class.Select("parent_id='" + parent + "'", " ORderID DESC"))
                {                    TreeNode node = new TreeNode();
                        node.Text = row["className"].ToString();
                        node.NodeID = row["classID"].ToString();
                        node.EnableCheckBox = true;
                        node.Expanded = true;
                        tree.Add(node);
                        BindTree(row["classID"].ToString(), node.Nodes);
                    
                }
            }
      

  2.   

    初充说明
    DataTable Cache_Class=db.GetDataTable("select * From classlist")
      

  3.   


    咳咳 我的是插入问题 丢失PID  就是复制原来的数据 插入的时候 ID 变了 PID没变,现在要PID也变
      

  4.   

    修改时父ID不能更改为 自身及下属ID
    private void BindTree(string parent, TreeNodeCollection tree)
            {
                foreach (DataRow row in Cache_Class.Select("parent_id='" + parent + "'", " ORderID DESC"))
                {
    if(row["classID"].ToString()!=editClassID)
    {
                        TreeNode node = new TreeNode();
                        node.Text = row["className"].ToString();
                        node.NodeID = row["classID"].ToString();
                        node.EnableCheckBox = true;
                        node.Expanded = true;
                        tree.Add(node);
                        BindTree(row["classID"].ToString(), node.Nodes);
    }
                }
            }
      

  5.   


    咳咳 我的是插入问题 丢失PID  就是复制原来的数据 插入的时候 ID 变了 PID没变,现在要PID也变如果是js附的值或更改过的值,要使用Request.Form["控件的name"]来获取如
    Request.Form[dw_classID.UniqueID].ToString()
      

  6.   


    不是显示和修改,  是复制数据,就是把最开始的三条  数据 重新插入 这个表 ID   PID会变 其他都不变 
      

  7.   


    哥  你答非所问了
    不是很明白你说什么呀,你是要重新导数据?那就多做一个字段,记录本身的记录ID,之后记录都和这个ID捆绑update set newid=id From xxx
      

  8.   


    哥  你答非所问了
    不是很明白你说什么呀,你是要重新导数据?那就多做一个字段,记录本身的记录ID,之后记录都和这个ID捆绑update set newid=id From xxx
    是这么个意思了  就是比如把 草稿状态的
    ID  PID  State
    1   0      草稿
    2   1      草稿复制一份之后
    ID  PID  State
    1   0      草稿
    2   1      草稿3   0      发布
    4   3      发布因为ID 是新的了所以 PID也要对应改  ,就是这个PID也跟着新的变没想明白
      

  9.   

    不是所有的都绑定这个ID  会变的  你看看我上面的数据结构  他的PID绑定的值都在变
      

  10.   


    哥  你答非所问了
    不是很明白你说什么呀,你是要重新导数据?那就多做一个字段,记录本身的记录ID,之后记录都和这个ID捆绑update set newid=id From xxx
    是这么个意思了  就是比如把 草稿状态的
    ID  PID  State
    1   0      草稿
    2   1      草稿复制一份之后
    ID  PID  State
    1   0      草稿
    2   1      草稿3   0      发布
    4   3      发布因为ID 是新的了所以 PID也要对应改  ,就是这个PID也跟着新的变没想明白
    本身你用自增字段来做关联就是会存在这个问题的,所以我们现在都是直接做成字符型来关联guid来做主键   guid是不可能重复的序列
      

  11.   

    比如你这5条数据 其他4条都是市局概况的子对吧, 那么你在把这5条复制 插入本表 那么  市局概括的ClassID 假如是 788877....那么其他四个的PID也是788877....  这样简单,
    这个只是对应2级         那么同理 多级也要能实现 这个效果
      

  12.   

    是这样的
    总是关联字段要用GUID也可以是其它,只要保证他是唯一的,且不是自增字段就行如果是sql server导入还好办点,可以先将表的标识去掉,然后导数据,最后再把标识找开就可以了,如果是Access就不能这么干了
      

  13.   

    其实就是一个ID-PID结构的数据  你复制一般 插入到本表  新数据的ID-PID结构不变 
    原来  ID  Name   PID
          1    a      0
         2    b      1
    新加  3    a      0  ---下面2条就是新的 但是ID-PID和上面结构一样   b是a的子
         4    b      3   例子是只有2级  但是最后效果是要能够适用多级的
    明白没?
      

  14.   

    其实就是一个ID-PID结构的数据  你复制一般 插入到本表  新数据的ID-PID结构不变 
    原来  ID  Name   PID
          1    a      0
         2    b      1
    新加  3    a      0  ---下面2条就是新的 但是ID-PID和上面结构一样   b是a的子
         4    b      3   例子是只有2级  但是最后效果是要能够适用多级的
    明白没?那就是要用Guid啊,不管你ID怎么变,只要classID和PID不变就可以了
      

  15.   


    比如你原来数据的这样的
    原来  ID  Name   PID
           1    a      0
          2    b      1我现在插一条 Name=a  pid=0
    就变成了
    原来  ID  Name   PID
           1    a      0
          2    b      1
          3    a      0
    在插条 Name=b  pid=1
    就变成ID  Name   PID
          1    a      0
          2    b      1
          3    a      0
          4    b      1但是你看 34  的结构就变了吧 实际效果是要 34的PID是0 3 的  
      

  16.   

    其实就是一个ID-PID结构的数据  你复制一般 插入到本表  新数据的ID-PID结构不变 
    原来  ID  Name   PID
          1    a      0
         2    b      1
    新加  3    a      0  ---下面2条就是新的 但是ID-PID和上面结构一样   b是a的子
         4    b      3   例子是只有2级  但是最后效果是要能够适用多级的
    明白没?那就是要用Guid啊,不管你ID怎么变,只要classID和PID不变就可以了
    懂了...........3Q3Q3Q33Q3Q3Q3Q33QQ
      

  17.   

    那你当初在插入的时候就可指定4的pid为3不就好了
      

  18.   


    这个是不好指定的 34得动态获取  我现在把数据库修改成你的模式了 所以不用管那些ID PID了 谢了哈