1. C# / Говнокод #14540

    +131

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    #region GetObjectTree
        [WebMethod]
        [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
        public RootNode getObjectTree() {
            using (SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["DSDPortal"].ConnectionString)) {
                using (SqlCommand cmd = new SqlCommand("Report.ObjectTree_Read", conn))
                using (SqlDataAdapter sda = new SqlDataAdapter(cmd)) {
                    cmd.CommandType = CommandType.StoredProcedure;
                    DataTable dt = new DataTable();
                    conn.Open();
                    sda.Fill(dt);
    
                    var RootObjects = (from row
                                     in dt.AsEnumerable()
                                       where row.Field<int>("IsAttribute") == 0 && (row.Field<string>("FullName").Split('.').Count() == 1 || !row.Field<string>("FullName").Contains('.'))
                                       select new { Desc = row["Description"].ToString(), FullName = row.Field<string>("FullName"), Type = row.Field<string>("DataType") }).AsEnumerable();
    
                    RootNode rt = new RootNode();
                    foreach (var obj in RootObjects) {
                        TreeNode o = new TreeNode();
                        o.data.title = obj.Desc;
                        o.attr.Name = obj.FullName;
                        o.attr.Type = obj.Type;
                        o.children.AddRange(getChildTreeNode(dt, obj.FullName));
                        rt.data.Add(o);
                    }
                    return rt;
                }
            }
        }
    
        private List<TreeNode> getChildTreeNode(DataTable dt, string contextName) {
            var nodes = from row
                        in dt.AsEnumerable()
                        where row.Field<string>("FullName") != contextName
                            && row.Field<string>("FullName").StartsWith(contextName)
                            && (contextName).Split('.').Count() + 1 == row.Field<string>("FullName").Split('.').Count()
    
                        select new {
                            Desc = row["Description"].ToString(),
                            FullName = row["FullName"].ToString(),
                            Type = row["DataType"].ToString()
                        };
            List<TreeNode> items = new List<TreeNode>();
            foreach (var o in nodes) {
                TreeNode ob = new TreeNode();
                ob.data.title = o.Desc;
                ob.attr.Name = o.FullName;
                ob.attr.Type = o.Type;
                ob.children.AddRange(getChildTreeNode(dt, ob.attr.Name));
                if (ob.children.Count == 0) {
                    ob.children = null;
                }
                items.Add(ob);
            }
            return items;
    
        }
        #endregion

    и весь этот фарш, только чтобы распарсить строки типа PARENT_OBJECT.OBJECT.CHILD_OBJECT.ATTRIB UTE, и показать их в виде дерева, вместо того, чтобы сразу хранить иерархию по человечески :(

    Запостил: Lokich, 11 Февраля 2014

    Комментарии (4) RSS

    • показать все, что скрытоХуй.
      Ответить
    • Что это за хуйня????? Как он пф пф пф работает????
      Ответить
      • Два сексота едут в купе поезда и травят политические анекдоты. Вдруг один замолкает.
        -Что-то не так?
        -Не, просто пленка кончилась.
        -Потом у меня перепишешь.
        Ответить
    • >Web
      >Sql
      >Json

      пыхоговно в шарпе

      Имея json и sql хранить деревья через точку это пиздец
      Ответить

    Добавить комментарий