首页 新闻 会员 周边

ztree数据库构造的问题 大侠帮忙 急 谢谢!

0
悬赏园豆:5 [已解决问题] 解决于 2013-03-15 19:07

表:

ID    DeviceID    SIM
1    3456789    189386
2    345679    1893
3    345679    18944444
4    345    18944444
5    345    189444
6    345    189

最后希望数据源格式变成这样类似的形式

var zNodes =[
   { id:1, pId:0, name:"随意勾选 1", }, //这个代表DeviceID根节点
      { id:11, pID:1, name:"189386"},
   { id:2, pId:0, name:"禁止勾选 2"},
      { id:21, pId:2, name:"1893"},
      { id:22, pId:2, name:"18944444"},
   { id:3, pId:0, name:"禁止勾选 2"},
     { id:31, pId:2, name:"18944444"},
     { id:32, pId:2, name:"189444"},
     { id:22, pId:2, name:"1189"}
];

 

对应表个更节点就是DeviceID     Sim是对应的 子节点  

 我只希望得到这样的数据源格式 就可以了 

后台得到 datatable 或者什么都可以 只要格式符合

谢谢  !

或者说这个sql怎么写 把DeviceID   为345 后面的 18944444 189444 189查出来变成

  id      DeviceID                                    SIM

  3       345                                          18944444, 189444 ,189

 

我写个伪游标的sql脚本 求大侠帮忙改下

create PROCEDURE tsp
output @@flag     
 AS 
 begin
       declare @id varchar(20),@userName varchar(20),@password varchar(20),@TableUser varchar(200)
       declare cr_cursor cursor --定义游标
       for select id,DeviceID,SIM from admin
       open cr_cursor --打开游标
       fetch From cr_cursor into @id,@DeviceID,@SIM --提取游标
         while @@fetch_status=0
           begin
                if(这一次@DeviceID等于上次循环的@DeviceID)//说明DeviceID重复就字符拼接SIM
                 {
                   @flag=@flag+","+@SIM
                 }else
                   {
                      @flag= @SIM
                   }

                   最后@flag=@flag+@SIM+@id;//把对应的sim 和id拼接上去

                 fetch next From cr_cursor into  @id,@DeviceID,@SIM 
                 return @flag
           end;
       close cr_cursor --关闭游标
       deallocate cr_cursor --释放游标
 end

 

s_p的主页 s_p | 初学一级 | 园豆:138
提问于:2013-03-14 18:27
< >
分享
最佳答案
0

public string Get(){

//  获取所有数据
IList<T> lst= GetAll();

StringBuilder sb=new StringBuilder();

foreach(var item in lst)

{

  sb.AppendFormat(",{'id':{0}, 'pId':{1}, 'name':'{2}'}", item.Id, item.DeviceID, item.Sim);

}

if (sb.Length > 1)

{
       sb = sb.Remove(0, 1);
}
return sb.Replace("{", "{").Replace("}", "}").ToString();

}

收获园豆:3
*^__^* | 菜鸟二级 |园豆:428 | 2013-03-14 21:22

en  这个思路我知道 我想知道 那个表获取查询 构建这么一个关系的 sql语句 

s_p | 园豆:138 (初学一级) | 2013-03-14 22:16

@s_p: 你是说创建表还是取数据

*^__^* | 园豆:428 (菜鸟二级) | 2013-03-14 22:20

@*^__^*: 取数据

s_p | 园豆:138 (初学一级) | 2013-03-14 23:49

@s_p: 怎么还要写存储过程这么麻烦呢,写递归也比这个好吧

*^__^* | 园豆:428 (菜鸟二级) | 2013-03-15 09:12

@*^__^*: 你要把这个表弄一个关系 肯定要写存储过程 你看 那个字段就知道了  当然方法有很多

s_p | 园豆:138 (初学一级) | 2013-03-15 09:48

@s_p: 我换了个思路 解决了 谢谢 朋友

s_p | 园豆:138 (初学一级) | 2013-03-15 19:08
其他回答(2)
0

你的表体现不出 tree 行结构,少了parentID

建一个 Node 的类 有

public class Node
{
     public string id {get;set;}   
     public string pId {get;set;}    
     public string name {get;set;}              
}

调用页面:
List<Node> list = new List<Node>();
node.id = "";node.pId="";node.name="";
list.Add(node);
Newtonsoft.Json 序列化 LIST就可以。
收获园豆:2
geass.. | 园豆:1821 (小虾三级) | 2013-03-14 22:16

有关系 

DeviceID就是根节点 他的孩子就是 sim比如
345对应的就是18944444,189444,1189
 
支持(0) 反对(0) s_p | 园豆:138 (初学一级) | 2013-03-14 22:18
0

只要你返回的数据符合ztree的要求。绝对可以显示出来。或者按照例子去设计数据库也行。

chenping2008 | 园豆:9836 (大侠五级) | 2013-03-15 14:38

我换了个思路 解决了 谢谢 朋友

支持(0) 反对(0) s_p | 园豆:138 (初学一级) | 2013-03-15 19:08
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册