JSTree with Datatables











up vote
0
down vote

favorite












I have two columns on a page, with a checkbox jstree on the left and a table using datatables on the right. The table rows and tree are all loaded at startup.



I would like to show a row when the node is selected on the tree and hide the row when its unchecked and I'm using a class for this. I am having problems with looping though all the rows in a datatables and setting a class, so I can filter it. This is the code I'm using below, but its not working. I can't get any id for the table row.



table.rows().iterator( 'row', function ( context, index ) {
var tableNode = $(this.row(index).node());
tableNode.removeClass('VisibleRow').removeClass('HiddenRow').addClass('HiddenRow');
var id = tableNode.id;
var treeNode = data.instance.get_node(id);

if(treeNode != undefined){
var currentId = '#row-' + node.id;
var rowInTable = table.row(currentId).node();
$(rowInTable).removeClass("HiddenRow");
$(rowInTable).addClass("VisibleRow");
}

});


Let me know if there are better ways to do this.










share|improve this question
























  • Did you solve your problem?
    – Nikolay Ermakov
    Jan 27 '17 at 14:14










  • thanks..this worked. I was able to modify and it worked.
    – james Makinde
    Feb 12 '17 at 4:26















up vote
0
down vote

favorite












I have two columns on a page, with a checkbox jstree on the left and a table using datatables on the right. The table rows and tree are all loaded at startup.



I would like to show a row when the node is selected on the tree and hide the row when its unchecked and I'm using a class for this. I am having problems with looping though all the rows in a datatables and setting a class, so I can filter it. This is the code I'm using below, but its not working. I can't get any id for the table row.



table.rows().iterator( 'row', function ( context, index ) {
var tableNode = $(this.row(index).node());
tableNode.removeClass('VisibleRow').removeClass('HiddenRow').addClass('HiddenRow');
var id = tableNode.id;
var treeNode = data.instance.get_node(id);

if(treeNode != undefined){
var currentId = '#row-' + node.id;
var rowInTable = table.row(currentId).node();
$(rowInTable).removeClass("HiddenRow");
$(rowInTable).addClass("VisibleRow");
}

});


Let me know if there are better ways to do this.










share|improve this question
























  • Did you solve your problem?
    – Nikolay Ermakov
    Jan 27 '17 at 14:14










  • thanks..this worked. I was able to modify and it worked.
    – james Makinde
    Feb 12 '17 at 4:26













up vote
0
down vote

favorite









up vote
0
down vote

favorite











I have two columns on a page, with a checkbox jstree on the left and a table using datatables on the right. The table rows and tree are all loaded at startup.



I would like to show a row when the node is selected on the tree and hide the row when its unchecked and I'm using a class for this. I am having problems with looping though all the rows in a datatables and setting a class, so I can filter it. This is the code I'm using below, but its not working. I can't get any id for the table row.



table.rows().iterator( 'row', function ( context, index ) {
var tableNode = $(this.row(index).node());
tableNode.removeClass('VisibleRow').removeClass('HiddenRow').addClass('HiddenRow');
var id = tableNode.id;
var treeNode = data.instance.get_node(id);

if(treeNode != undefined){
var currentId = '#row-' + node.id;
var rowInTable = table.row(currentId).node();
$(rowInTable).removeClass("HiddenRow");
$(rowInTable).addClass("VisibleRow");
}

});


Let me know if there are better ways to do this.










share|improve this question















I have two columns on a page, with a checkbox jstree on the left and a table using datatables on the right. The table rows and tree are all loaded at startup.



I would like to show a row when the node is selected on the tree and hide the row when its unchecked and I'm using a class for this. I am having problems with looping though all the rows in a datatables and setting a class, so I can filter it. This is the code I'm using below, but its not working. I can't get any id for the table row.



table.rows().iterator( 'row', function ( context, index ) {
var tableNode = $(this.row(index).node());
tableNode.removeClass('VisibleRow').removeClass('HiddenRow').addClass('HiddenRow');
var id = tableNode.id;
var treeNode = data.instance.get_node(id);

if(treeNode != undefined){
var currentId = '#row-' + node.id;
var rowInTable = table.row(currentId).node();
$(rowInTable).removeClass("HiddenRow");
$(rowInTable).addClass("VisibleRow");
}

});


Let me know if there are better ways to do this.







javascript jquery datatables jstree






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 11 at 20:39









halfer

14.2k758106




14.2k758106










asked Jan 26 '17 at 1:02









james Makinde

2481615




2481615












  • Did you solve your problem?
    – Nikolay Ermakov
    Jan 27 '17 at 14:14










  • thanks..this worked. I was able to modify and it worked.
    – james Makinde
    Feb 12 '17 at 4:26


















  • Did you solve your problem?
    – Nikolay Ermakov
    Jan 27 '17 at 14:14










  • thanks..this worked. I was able to modify and it worked.
    – james Makinde
    Feb 12 '17 at 4:26
















Did you solve your problem?
– Nikolay Ermakov
Jan 27 '17 at 14:14




Did you solve your problem?
– Nikolay Ermakov
Jan 27 '17 at 14:14












thanks..this worked. I was able to modify and it worked.
– james Makinde
Feb 12 '17 at 4:26




thanks..this worked. I was able to modify and it worked.
– james Makinde
Feb 12 '17 at 4:26












2 Answers
2






active

oldest

votes

















up vote
0
down vote



accepted










I believe you can do it with the snippet below. The rows iteration is jQuery based, there is no DataTables-specific logic there.



Also check demo - Fiddle Demo



var $tableRows = $('#yourTableId').find('tr');

$('#yourTreeContainer').on('select_node.jstree', function(e, data) {

$tableRows.each(function() {
if (this.id === '#row-' + data.node.id) {
$(this).removeClass('HiddenRow');
} else {
$(this).addClass('HiddenRow');
}
});

});





share|improve this answer




























    up vote
    0
    down vote













    I created same with some changes and it works fine, but even with hidden row I don't want datatable showing empty pages. Any advice, please?



    this my code



    $('#jstree')
    .jstree({
    core: {
    data: treeData
    },
    checkbox: {
    three_state : false, // to avoid that fact that checking a node also check others
    whole_node : false, // to avoid checking the box just clicking the node
    tie_selection : false // for checking without selecting and selecting without checking
    },
    "plugins" : ["checkbox","conditionalselect"]
    })
    .on("check_node.jstree uncheck_node.jstree", function(e, data) {

    $tableRows.each(function(){

    //$(this).addClass('HiddenRow'); //should not be there

    if( this.id === data.node.id ) {
    if(data.node.state.checked ){
    //alert("removeClass");
    $(this).removeClass('HiddenRow');
    }else{
    //alert("addClass");
    $(this).addClass('HiddenRow');
    };
    }else{

    }
    })
    })


    This is the link http://jsfiddle.net/cf7tata9/56/#&togetherjs=jqPTfx3gpk






    share|improve this answer























      Your Answer






      StackExchange.ifUsing("editor", function () {
      StackExchange.using("externalEditor", function () {
      StackExchange.using("snippets", function () {
      StackExchange.snippets.init();
      });
      });
      }, "code-snippets");

      StackExchange.ready(function() {
      var channelOptions = {
      tags: "".split(" "),
      id: "1"
      };
      initTagRenderer("".split(" "), "".split(" "), channelOptions);

      StackExchange.using("externalEditor", function() {
      // Have to fire editor after snippets, if snippets enabled
      if (StackExchange.settings.snippets.snippetsEnabled) {
      StackExchange.using("snippets", function() {
      createEditor();
      });
      }
      else {
      createEditor();
      }
      });

      function createEditor() {
      StackExchange.prepareEditor({
      heartbeatType: 'answer',
      convertImagesToLinks: true,
      noModals: true,
      showLowRepImageUploadWarning: true,
      reputationToPostImages: 10,
      bindNavPrevention: true,
      postfix: "",
      imageUploader: {
      brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
      contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
      allowUrls: true
      },
      onDemand: true,
      discardSelector: ".discard-answer"
      ,immediatelyShowMarkdownHelp:true
      });


      }
      });














      draft saved

      draft discarded


















      StackExchange.ready(
      function () {
      StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f41864405%2fjstree-with-datatables%23new-answer', 'question_page');
      }
      );

      Post as a guest















      Required, but never shown

























      2 Answers
      2






      active

      oldest

      votes








      2 Answers
      2






      active

      oldest

      votes









      active

      oldest

      votes






      active

      oldest

      votes








      up vote
      0
      down vote



      accepted










      I believe you can do it with the snippet below. The rows iteration is jQuery based, there is no DataTables-specific logic there.



      Also check demo - Fiddle Demo



      var $tableRows = $('#yourTableId').find('tr');

      $('#yourTreeContainer').on('select_node.jstree', function(e, data) {

      $tableRows.each(function() {
      if (this.id === '#row-' + data.node.id) {
      $(this).removeClass('HiddenRow');
      } else {
      $(this).addClass('HiddenRow');
      }
      });

      });





      share|improve this answer

























        up vote
        0
        down vote



        accepted










        I believe you can do it with the snippet below. The rows iteration is jQuery based, there is no DataTables-specific logic there.



        Also check demo - Fiddle Demo



        var $tableRows = $('#yourTableId').find('tr');

        $('#yourTreeContainer').on('select_node.jstree', function(e, data) {

        $tableRows.each(function() {
        if (this.id === '#row-' + data.node.id) {
        $(this).removeClass('HiddenRow');
        } else {
        $(this).addClass('HiddenRow');
        }
        });

        });





        share|improve this answer























          up vote
          0
          down vote



          accepted







          up vote
          0
          down vote



          accepted






          I believe you can do it with the snippet below. The rows iteration is jQuery based, there is no DataTables-specific logic there.



          Also check demo - Fiddle Demo



          var $tableRows = $('#yourTableId').find('tr');

          $('#yourTreeContainer').on('select_node.jstree', function(e, data) {

          $tableRows.each(function() {
          if (this.id === '#row-' + data.node.id) {
          $(this).removeClass('HiddenRow');
          } else {
          $(this).addClass('HiddenRow');
          }
          });

          });





          share|improve this answer












          I believe you can do it with the snippet below. The rows iteration is jQuery based, there is no DataTables-specific logic there.



          Also check demo - Fiddle Demo



          var $tableRows = $('#yourTableId').find('tr');

          $('#yourTreeContainer').on('select_node.jstree', function(e, data) {

          $tableRows.each(function() {
          if (this.id === '#row-' + data.node.id) {
          $(this).removeClass('HiddenRow');
          } else {
          $(this).addClass('HiddenRow');
          }
          });

          });






          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered Jan 27 '17 at 3:16









          Nikolay Ermakov

          4,6062516




          4,6062516
























              up vote
              0
              down vote













              I created same with some changes and it works fine, but even with hidden row I don't want datatable showing empty pages. Any advice, please?



              this my code



              $('#jstree')
              .jstree({
              core: {
              data: treeData
              },
              checkbox: {
              three_state : false, // to avoid that fact that checking a node also check others
              whole_node : false, // to avoid checking the box just clicking the node
              tie_selection : false // for checking without selecting and selecting without checking
              },
              "plugins" : ["checkbox","conditionalselect"]
              })
              .on("check_node.jstree uncheck_node.jstree", function(e, data) {

              $tableRows.each(function(){

              //$(this).addClass('HiddenRow'); //should not be there

              if( this.id === data.node.id ) {
              if(data.node.state.checked ){
              //alert("removeClass");
              $(this).removeClass('HiddenRow');
              }else{
              //alert("addClass");
              $(this).addClass('HiddenRow');
              };
              }else{

              }
              })
              })


              This is the link http://jsfiddle.net/cf7tata9/56/#&togetherjs=jqPTfx3gpk






              share|improve this answer



























                up vote
                0
                down vote













                I created same with some changes and it works fine, but even with hidden row I don't want datatable showing empty pages. Any advice, please?



                this my code



                $('#jstree')
                .jstree({
                core: {
                data: treeData
                },
                checkbox: {
                three_state : false, // to avoid that fact that checking a node also check others
                whole_node : false, // to avoid checking the box just clicking the node
                tie_selection : false // for checking without selecting and selecting without checking
                },
                "plugins" : ["checkbox","conditionalselect"]
                })
                .on("check_node.jstree uncheck_node.jstree", function(e, data) {

                $tableRows.each(function(){

                //$(this).addClass('HiddenRow'); //should not be there

                if( this.id === data.node.id ) {
                if(data.node.state.checked ){
                //alert("removeClass");
                $(this).removeClass('HiddenRow');
                }else{
                //alert("addClass");
                $(this).addClass('HiddenRow');
                };
                }else{

                }
                })
                })


                This is the link http://jsfiddle.net/cf7tata9/56/#&togetherjs=jqPTfx3gpk






                share|improve this answer

























                  up vote
                  0
                  down vote










                  up vote
                  0
                  down vote









                  I created same with some changes and it works fine, but even with hidden row I don't want datatable showing empty pages. Any advice, please?



                  this my code



                  $('#jstree')
                  .jstree({
                  core: {
                  data: treeData
                  },
                  checkbox: {
                  three_state : false, // to avoid that fact that checking a node also check others
                  whole_node : false, // to avoid checking the box just clicking the node
                  tie_selection : false // for checking without selecting and selecting without checking
                  },
                  "plugins" : ["checkbox","conditionalselect"]
                  })
                  .on("check_node.jstree uncheck_node.jstree", function(e, data) {

                  $tableRows.each(function(){

                  //$(this).addClass('HiddenRow'); //should not be there

                  if( this.id === data.node.id ) {
                  if(data.node.state.checked ){
                  //alert("removeClass");
                  $(this).removeClass('HiddenRow');
                  }else{
                  //alert("addClass");
                  $(this).addClass('HiddenRow');
                  };
                  }else{

                  }
                  })
                  })


                  This is the link http://jsfiddle.net/cf7tata9/56/#&togetherjs=jqPTfx3gpk






                  share|improve this answer














                  I created same with some changes and it works fine, but even with hidden row I don't want datatable showing empty pages. Any advice, please?



                  this my code



                  $('#jstree')
                  .jstree({
                  core: {
                  data: treeData
                  },
                  checkbox: {
                  three_state : false, // to avoid that fact that checking a node also check others
                  whole_node : false, // to avoid checking the box just clicking the node
                  tie_selection : false // for checking without selecting and selecting without checking
                  },
                  "plugins" : ["checkbox","conditionalselect"]
                  })
                  .on("check_node.jstree uncheck_node.jstree", function(e, data) {

                  $tableRows.each(function(){

                  //$(this).addClass('HiddenRow'); //should not be there

                  if( this.id === data.node.id ) {
                  if(data.node.state.checked ){
                  //alert("removeClass");
                  $(this).removeClass('HiddenRow');
                  }else{
                  //alert("addClass");
                  $(this).addClass('HiddenRow');
                  };
                  }else{

                  }
                  })
                  })


                  This is the link http://jsfiddle.net/cf7tata9/56/#&togetherjs=jqPTfx3gpk







                  share|improve this answer














                  share|improve this answer



                  share|improve this answer








                  edited Jul 13 at 23:03









                  wazz

                  2,67131327




                  2,67131327










                  answered Jul 13 at 22:37









                  ahmed

                  11




                  11






























                      draft saved

                      draft discarded




















































                      Thanks for contributing an answer to Stack Overflow!


                      • Please be sure to answer the question. Provide details and share your research!

                      But avoid



                      • Asking for help, clarification, or responding to other answers.

                      • Making statements based on opinion; back them up with references or personal experience.


                      To learn more, see our tips on writing great answers.





                      Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


                      Please pay close attention to the following guidance:


                      • Please be sure to answer the question. Provide details and share your research!

                      But avoid



                      • Asking for help, clarification, or responding to other answers.

                      • Making statements based on opinion; back them up with references or personal experience.


                      To learn more, see our tips on writing great answers.




                      draft saved


                      draft discarded














                      StackExchange.ready(
                      function () {
                      StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f41864405%2fjstree-with-datatables%23new-answer', 'question_page');
                      }
                      );

                      Post as a guest















                      Required, but never shown





















































                      Required, but never shown














                      Required, but never shown












                      Required, but never shown







                      Required, but never shown

































                      Required, but never shown














                      Required, but never shown












                      Required, but never shown







                      Required, but never shown







                      Popular posts from this blog

                      Bressuire

                      Vorschmack

                      Quarantine