找回密码
 立即注册

QQ登录

只需一步,快速开始

fox_1983

论坛元老

6

主题

28

帖子

6686

积分

论坛元老

积分
6686

活字格认证

fox_1983
论坛元老   /  发表于:2012-7-25 10:26  /   查看:18610  /  回复:20
我的库结构是:
id    name    fid  zw
1     james   0   董事长
-----------------------------------
2     jack      1   总经理
-----------------------------------
3     ada      2   总经理秘书
-----------------------------------
4     fog       1   项目经理
-----------------------------------
如何写代码才能产生这样的树形图啊?
james---jack---ada
             fog


十万火急 求大侠帮忙

20 个回复

倒序浏览
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-7-25 14:58:00
沙发
主要是根据结果关系组织好数据源就可以,比如下面的代码
后台代码:

  1.         public MainPage()
  2.         {
  3.             InitializeComponent();
  4.             var _tournament = Team.GetTournament();
  5.             c1OrgChart1.Header = _tournament;
  6.         }

  7.     public class Team
  8.     {

  9.         ObservableCollection<Team> _list = new ObservableCollection<Team>();

  10.         public string Name { get; set; }
  11.         public IList<Team> Challengers { get { return _list; } }

  12.         public static Team GetTournament()
  13.         {
  14.             var _champion = new Team();
  15.             _champion.Name = "董事长";

  16.             var _challenger1 = new Team();
  17.             var _challenger2 = new Team();
  18.             var _challenger3 = new Team();

  19.             _challenger1.Name = "总经理";
  20.             _challenger2.Name = "总经理秘书";
  21.             _challenger3.Name = "项目经理";

  22.             _challenger2.Challengers.Add(_challenger3);
  23.             _challenger1.Challengers.Add(_challenger2);
  24.             _champion.Challengers.Add(_challenger1);

  25.             return _champion;
  26.         }

  27.         public override string ToString()
  28.         {
  29.             return Name;
  30.         }
  31.     }
复制代码


页面代码:
  1.     <Grid x:Name="LayoutRoot">
  2.         <c1:C1OrgChart Height="456" HorizontalAlignment="Left" Margin="12,12,0,0" Name="c1OrgChart1" VerticalAlignment="Top" Width="616" />
  3.     </Grid>
复制代码


VS2010 + Silverlight4.0 + C1 2012V1/2012V2

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
fox_1983
论坛元老   /  发表于:2012-7-25 16:06:00
板凳
回复 2楼dof的帖子

如果两个 【董事长】 是同一层的话 代码怎么写啊
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-7-25 17:45:00
地板
  1.     public static Team GetTournament()
  2.     {
  3.         var _champion = new Team();
  4.         _champion.Name = &quot;XXX公司&quot;;

  5.         var _challenger1 = new Team();
  6.         var _challenger2 = new Team();
  7.         var _challenger3 = new Team();

  8.         _challenger1.Name = &quot;董事长1&quot;;
  9.         _challenger2.Name = &quot;董事长2&quot;;
  10.         _challenger3.Name = &quot;总经理&quot;;

  11.         _challenger1.Challengers.Add(_challenger3);
  12.         _champion.Challengers.Add(_challenger1);
  13.         _champion.Challengers.Add(_challenger2);

  14.         return _champion;
  15.     }
复制代码
回复 使用道具 举报
fox_1983
论坛元老   /  发表于:2012-7-25 18:03:00
5#
回复 4楼dof的帖子

谢谢老大对新手的照顾!真的帮了我大忙了!
能不能在帮忙写个算法 依托你之前的代码 我建立了一个实体类 并赋值
   public static List<erson> date()
        {
            List<erson> source = new List<erson>();
            source.Add(new Person() { ID = 1, Name = "刘华强", Position = "董事长", Fid = 0 });
            source.Add(new Person() { ID = 2, Name = "赵晓华", Position = "产品经理", Fid = 1 });
            source.Add(new Person() { ID = 3, Name = "刘宗敏", Position = "项目经理", Fid = 1 });
            source.Add(new Person() { ID = 4, Name = "林志玲", Position = "产品经理秘书", Fid = 2 });
            source.Add(new Person() { ID = 5, Name = "刘德华", Position = "技术员", Fid = 3 });
            source.Add(new Person() { ID = 6, Name = "张学友", Position = "技术员", Fid = 3 });
            return source;
        }

如何根据 ID和FID来分级   返回创建对象(fid是父级的ID)
自己也想了几个FOR循环算法 但是越想越复杂 头都大了(技术水平太差没办法)
这个问题解决了 我就完成今天的任务了 老大您多帮忙吧 拜谢了
回复 使用道具 举报
fox_1983
论坛元老   /  发表于:2012-7-25 20:20:00
6#
回复 4楼dof的帖子

老大 如果您看到了  一定要帮我这个忙  加班到现在还没解决这个问题   水平太差了 以后我一定好好专研技术
回复 使用道具 举报
fox_1983
论坛元老   /  发表于:2012-7-26 02:01:00
7#
我写了个 ListSub(1)方法 用来取出每层数据实体  参数1是最上层的ID
可是我扣了一晚上代码 还是不知道如何绑定到 orgchart上
下面的代码应该如何修改 还有 c1OrgChart1.Header = 这里怎么写啊?
老大帮帮忙吧 真的 很急

public static void ListSub(int id)
        {
            Team obj = TeamList().Where(u => u.ID == id).FirstOrDefault();
            if (obj == null)
            {
                return;
            }
            else
            {
                List<Team> objs = TeamList().Where(u => u.Fid == obj.ID).ToList();
                foreach (Team role in objs)
                {
                    obj.Challengers.Add(role);
                   // MessageBox.Show(obj.Name+"--"+role.Name);
                    ListSub(role.ID); //每个子集递归
                }
            }
        }


        public static List<Team> TeamList()
        {
            List<Team> source = new List<Team>();
            source.Add(new Team() { ID = 1, Name = "刘华强", Position = "董事长", Fid = 0 });
            source.Add(new Team() { ID = 2, Name = "赵晓华", Position = "产品经理", Fid = 1 });
            source.Add(new Team() { ID = 3, Name = "刘宗敏", Position = "项目经理", Fid = 1 });
            source.Add(new Team() { ID = 4, Name = "林志玲", Position = "产品经理秘书", Fid = 2 });
            source.Add(new Team() { ID = 5, Name = "刘德华", Position = "技术员", Fid = 3 });
            source.Add(new Team() { ID = 6, Name = "张学友", Position = "技术员", Fid = 3 });
            source.Add(new Team() { ID = 7, Name = "谭咏麟", Position = "初级技术员", Fid = 6 });
            return source;
        }
回复 使用道具 举报
fox_1983
论坛元老   /  发表于:2012-7-26 09:08:00
8#
老大还没出现~~
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-7-26 09:18:00
9#
fox_1983 你好!

非常抱歉,因为我们下班后并没有在线支持人员,让你久等了。

我正在看你的问题,然后会给你回复相应的实现方法。
回复 使用道具 举报
fox_1983
论坛元老   /  发表于:2012-7-26 09:24:00
10#
回复 9楼dof的帖子

我写了个 ListSub(1)方法 用来取出每层数据实体  参数1是最上层的ID
可是我扣了一晚上代码 还是不知道如何绑定到 orgchart上
下面的代码应该如何修改 还有 c1OrgChart1.Header = 这里怎么写啊?
老大帮帮忙吧 真的 很急

public static void ListSub(int id)
        {
            Team obj = Date().Where(u => u.ID == id).FirstOrDefault();
            if (obj == null)
            {
                return;
            }
            else
            {
                List<Team> objs = Date().Where(u => u.Fid == obj.ID).ToList();
                foreach (Team role in objs)
                {
                   // MessageBox.Show(obj.Name+"--"+role.Name);
                    ListSub(role.ID); //每个子集递归
                }
            }
        }


        public static List<Team> Date()
        {
            List<Team> source = new List<Team>();
            source.Add(new Team() { ID = 1, Name = "刘华强", Position = "董事长", Fid = 0 });
            source.Add(new Team() { ID = 2, Name = "赵晓华", Position = "产品经理", Fid = 1 });
            source.Add(new Team() { ID = 3, Name = "刘宗敏", Position = "项目经理", Fid = 1 });
            source.Add(new Team() { ID = 4, Name = "林志玲", Position = "产品经理秘书", Fid = 2 });
            source.Add(new Team() { ID = 5, Name = "刘德华", Position = "技术员", Fid = 3 });
            source.Add(new Team() { ID = 6, Name = "张学友", Position = "技术员", Fid = 3 });
            source.Add(new Team() { ID = 7, Name = "谭咏麟", Position = "初级技术员", Fid = 6 });
            return source;
        }
回复 使用道具 举报
123下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部