public List <FunctionalTree> CreateTreeStructure(int UserID) { JavaScriptSerializer ser = new JavaScriptSerializer(); List <FunctionalTree> NH = new List <FunctionalTree>(); try { DataTable dtMenu = null; dtMenu = objBllUser.Get_Menu_Lib_Access(UserID); FunctionalTree nh = new FunctionalTree(); int meni = 0; int child = 0; DataRow[] drs = dtMenu.Select("[Parent] is null"); foreach (DataRow dr in drs) { nh = new FunctionalTree(); nh.id = Convert.ToString(dr["id"]); nh.parent = Convert.ToString(dr["parent"]); nh.text = Convert.ToString(dr["text"]); nh.icon = Convert.ToString(dr["icon"]); nh.value = Convert.ToString(dr["value"]); NH.Add(nh); DataRow[] drInners = dtMenu.Select("[Parent] ='" + dr["ID"].ToString() + "' "); if (drInners.Length != 0) { foreach (DataRow drInner in drInners) { FunctionalTree nhChild = new FunctionalTree(); nhChild.id = Convert.ToString(drInner["id"]); nhChild.parent = Convert.ToString(drInner["parent"]); nhChild.text = Convert.ToString(drInner["text"]); nhChild.icon = Convert.ToString(drInner["icon"]); nhChild.value = Convert.ToString(drInner["value"]); NH.Add(nhChild); string filter = "[Parent] = '" + drInner["ID"].ToString() + "'"; dtMenu.AcceptChanges(); DataRow[] drInnerLinks = dtMenu.Select(filter); if (drInnerLinks.Length != 0) { child = 0; foreach (DataRow drInnerLink in drInnerLinks) { FunctionalTree nhChildnodes = new FunctionalTree(); nhChildnodes.id = Convert.ToString(drInnerLink["id"]); nhChildnodes.parent = Convert.ToString(drInnerLink["parent"]); nhChildnodes.text = Convert.ToString(drInnerLink["text"]); nhChildnodes.icon = Convert.ToString(drInnerLink["icon"]); nhChildnodes.value = Convert.ToString(drInnerLink["value"]); NH.Add(nhChildnodes); } child++; } meni++; } } } } catch (Exception ex) { string s = ex.Message; } return(NH); }