Click here to Skip to main content
15,887,214 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
Hi all I'm using this code

HTML
my category class is


C#
[Serializable]
    public class Category
    {
    [DisplayName("Id")]
    public int CategoryId { get; set; }

    [Required]
    public string Name { get; set; }

    public DateTime CreatedDate { get; set; }

    public int ParentId { get; set; }

    public virtual ICollection<Product> Products { get; set; }


C#
and my TreeViewNodeVM is

    public string id { get; set; }
    public string text { get; set; }
    public IList<TreeViewNodeVM> ChildNode { get; set; }


i have table i database as Categories

C#
CategoryId        Name         CreatedDate          ParentId
1               category    2014-05-06 19:00:20.107     0
2               Category1   2014-05-06 19:00:20.107     1
3               Category2   2014-05-06 19:00:20.107     1
I am binding my jstree with this table as


My Categorycontroller code is

C#
public JsonResult GetList(int id = 0)
       {
           var objList = GetTreeVeiwList();
          return Json(objList, JsonRequestBehavior.AllowGet);
       }


C#
public List GetTreeVeiwList() {

        var rootNode = (from e1 in _CategoriesBusiness.Select()
                        where e1.ParentId == 0
                        select new TreeViewNodeVM()
                        {
                            id =Convert.ToString(e1.CategoryId),
                            text = e1.Name
                        }).ToList();
        BuildChildNode(rootNode);

        return rootNode;
    }

C#
public JsonResult SaveChanges(string ar)
{
    var data = new JavaScriptSerializer().Deserialize<string[]>(ar);
    Categories objCategories=null;
    foreach (var a in data)
    {
        var ab = a.Split(' ');
         objCategories=new Categories();
         int tempCategoryId;
         if (int.TryParse(ab[1], out tempCategoryId))
         {
             objCategories.CategoryId = tempCategoryId;

             var objcat=(from cat in _CategoriesBusiness.Select() where cat.CategoryId==tempCategoryId select cat).FirstOrDefault();
             if (objcat != null)
             {
                 objcat.Name = ab[0].Trim();
                 int tempParantId;
                 if (int.TryParse(ab[2], out tempParantId))
                 {
                     objcat.ParentId = tempParantId;
                 }
                 _CategoriesBusiness.Update(objcat);
             }
             else
             {
                 objCategories.CategoryId = Convert.ToInt32(ab[1]);
                 objCategories.Name = ab[0];
                 int tempParantId1;
                 if (int.TryParse(ab[2], out tempParantId1))
                 {
                     objCategories.ParentId = tempParantId1;
                 }
                 _CategoriesBusiness.Create(objCategories);
             }

         }
         else
         {
             objCategories.Name = ab[0];
             int tempParantId1;
             if (int.TryParse(ab[2], out tempParantId1))
             {
                 objCategories.ParentId = tempParantId1;
             }
             _CategoriesBusiness.Create(objCategories);

         }
                    }

    return Json(new { },JsonRequestBehavior.AllowGet);
}

C#
    private void BuildChildNode(List<TreeViewNodeVM> ListrootNode)
    {
        foreach (TreeViewNodeVM rootNode in ListrootNode)
        {
            if (rootNode != null)
            {
                List<TreeViewNodeVM> chidNode = (from e1 in _CategoriesBusiness.Select()
                                                 where e1.ParentId.ToString() == rootNode.id
                                                 select new TreeViewNodeVM()
                                                 {
                                                     id = Convert.ToString(e1.CategoryId),
                                                     text = e1.Name
                                                 }).ToList<TreeViewNodeVM>();
                if (chidNode.Count > 0)
                {
                    BuildChildNode(chidNode);
                    foreach (var childRootNode in chidNode)
                    {
                        rootNode.children.Add(childRootNode);
                    }

                }
            }
        }
    } 



and view is:

< href="../../Content/dist/themes/default/style.min.css" rel="stylesheet">

<script src="../../Content/dist/jstree.js">

@model List<Web.ViewModels.TreeModels.TreeViewNodeVM>;
@{

    ViewBag.Title = "Index";
}
&lt;h2&gt;
    Categories&lt;/h2&gt;

&lt;input type="button" id="btnaddFolder" value="Add new folder" onclick="File_Folder()" /&gt;
&lt;input type="button" id="btnaddCat" value="Add new Category" onclick="File_create()" /&gt;
&lt;input type="button" id="btnSave" value="Save Changes" onclick="SaveChanges()" /&gt;
&lt;input type="button" id="btnCancel" value="Cancel" /&gt;

&lt;div id="jstree"&gt;

&lt;/div&gt; 

  &lt;script&gt;


      function SaveChanges() {
          debugger
          var ar = [];
          var i = 0;
          var arr = "";
          $('#jstree li').each(function () {
              debugger

              var id = $(this).attr('id');
              var text = $(this).find("a:first").text();              

              if ($(this).parent('ul.jstree-children')) {
                  var parent = $(this).parent('ul.jstree-children').parent('li').attr('id');
                  alert(text + " " + id + " " + parent);

                  var item = text + " " + id + " " + parent;
                  ar.push(item);

                  i++;
              }

          });
          arr = JSON.stringify(ar);
          //$('#jstree li.jstree-node').each(function () {

          //    some.push($(this).attr("id"));
          //    // or
          //    //some.push(this.id);
          //});
          debugger;
          $.ajax({
              type: 'post',
              url: "/Category/SaveChanges", data: { ar: arr }, success: function (result) {
                  $("#div1").html(result);
              }
          });

      }

      function AddNewNode()
      {
          File_create();
      }



      $(function () {
          // 6 create an instance when the DOM is ready
          debugger

          $("#jstree").jstree({

              "core": {


                  "animation": 0,
                  "check_callback": true,
                  "themes": { "stripes": true },
                  'data': {

                      'url': function (node) {

                          debugger
                          return node.id === '#' ?
                            '/Category/GetList' : '/Category/GetList1';
                      },
                      'data': function (node) {
                          debugger
                          return { 'id': node.id };
                      }
                  }
              },



              "contextmenu": {
                  "items": function ($node) {
                      var tree = $("#jstree").jstree(true);
                      return {
                          "Create": {
                              //"separator_before": false,
                              //"separator_after": false,
                              "label": "Create",
                              "action": function (data) {
                                  debugger;
                                      File_create();
                                  //var ref = $('#jstree').jstree(true);
                                  //ref.create_node(data);
                              }
                          },
                          "Rename": {
                              "separator_before": false,
                              "separator_after": false,
                              "label": "Rename",
                              "action": function (obj) {
                                  debugger;
                                  tree.edit($node);
                              }
                          },
                          "Remove": {
                              "separator_before": false,
                              "separator_after": false,
                              "label": "Remove",
                              "action": function (obj) {
                                  tree.delete_node($node);
                              }
                          }
                      };
                  }
              },




              "types": {
                  "#": {
                      "max_children": 1,
                      "max_depth": 4,
                      "valid_children": ["root"]
                  },
                  "root": {
                      "icon": "/static/3.0.0/assets/images/tree_icon.png",
                      "valid_children": [],
                      "name":"Folder"
                  },
                  "default": {

                      "valid_children": ["default", "file"]
                  },
                  "file": {
                      "icon": "glyphicon glyphicon-file",
                      "valid_children": []
                  }
              },
              "plugins": [
                "contextmenu", "dnd", "search",
                "state", "types", "wholerow"
              ]


          })


      });


      function File_Folder() {


          debugger
          var ref = $('#jstree').jstree(true),
              sel = ref.get_selected();
          if (!sel.length) { return false; }
          var number = 1 + Math.floor(Math.random() * 10);


          sel = ref.create_node(sel, { "type": "default"});
          if (sel) {
              ref.edit(sel);
          }
      }


      function File_create() {
          debugger
          var ref = $('#jstree').jstree(true),
              sel = ref.get_selected();
          if (!sel.length) { return false; }         

          sel = ref.create_node(sel, { "type": "file"});
          if (sel) {
              ref.edit(sel);
          }
      }
  &lt;/script&gt;

</pre>



but childnode return count=0 

any one can tell me where is the problem 

childnode must return category1 , category2 for the parent categories as shown i code that I'm using now

<b>What I have tried:</b>

I don't know what wrong , I need something to try
Posted
Updated 20-Oct-16 23:45pm
v10
Comments
F-ES Sitecore 28-Feb-18 7:22am    
If it had a value it wouldn't have a Count of 0. You are selecting from "_CategoriesBusiness" whatever that is so there is probably no data there that matches your query. We can't access your data so we can't say why that might be.

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900