表:
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
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();
}
en 这个思路我知道 我想知道 那个表获取查询 构建这么一个关系的 sql语句
@s_p: 你是说创建表还是取数据
@*^__^*: 取数据
@s_p: 怎么还要写存储过程这么麻烦呢,写递归也比这个好吧
@*^__^*: 你要把这个表弄一个关系 肯定要写存储过程 你看 那个字段就知道了 当然方法有很多
@s_p: 我换了个思路 解决了 谢谢 朋友
你的表体现不出 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就可以。
有关系
DeviceID就是根节点 他的孩子就是 sim比如
345对应的就是18944444,189444,1189
只要你返回的数据符合ztree的要求。绝对可以显示出来。或者按照例子去设计数据库也行。
我换了个思路 解决了 谢谢 朋友