Pergunta

Eu estou tentando ordenar as linhas de uma tabela, e colocá-los como elementos de 'criança' de uma linha da tabela

Eu encontrei este: http://code.google.com/p/nestedsortables/ isso funciona com listas li ul, mas quero construí-lo para uma tabela.

<table>
  <thead>
    <th>tablehead</th>
  </thead>
  <tbody>
    <tr><td>somevalue</td></tr>
    <tr><td>somevalue2</td></tr>
  </tbody>
</table>

Então, você poderia usar jquery.sortable() e classificar as linhas, mas eu quero 'somevalue' para ser tornar-se um elemento filho de 'somevalue2' se você arrastar 'somevalue' over 'somevalue2'

Eu não sei se é possível com uma tabela.

Alguém pode me ajudar?

Foi útil?

Solução

A aprovação assim que eu encontrei este plugin: http: //ludo.cubicphuse.nl/jquery-plugins/treeTable/doc/index.html#example-1

Este utiliza tabelas e permite que ele seja aninhada.

Agora eu só preciso classificá-lo e pós apresentar os elementos da tabela com um ID de pai para que eu possa salvá-lo para o banco de dados.

Espero que isso ajude alguém.

então é isso que eu vim acima com. Eu não quero mais de 2 níveis (somente pais e dos childs) Então eu mudei para deixar os pais só aceitam criança, e não feitas pais Draggable.

<html>
    <head>
        <link href="jquery.treeTable.css" rel="stylesheet" type="text/css" />
        <script type="text/javascript" src="jquery.js"></script>
        <script type="text/javascript" src="jquery-ui.js"></script>
        <script type="text/javascript" src="jquery.treeTable.js"></script>
        <script type="text/javascript">

    $(document).ready(function()  {
        $("#dragndrop").treeTable();

        // Drag & Drop Code
        $("#dragndrop .child").draggable({
          helper: "clone",
          opacity: .75,
          refreshPositions: true, // Performance?
          revert: "invalid",
          revertDuration: 300,
          scroll: true
         }
        );

        $("#dragndrop .parent").each(function() {
          $($(this).parents("tr")[0]).droppable({
            accept: ".child",
            drop: function(e, ui) {
              $($(ui.draggable).parents("tr")[0]).appendBranchTo(this);
              setNewParent($($(ui.draggable).parents("tr")[0]).attr("id"), $(this).attr("id"));
            },
            hoverClass: "accept",
            over: function(e, ui) {
              if(this.id != $(ui.draggable.parents("tr")[0]).id && !$(this).is(".expanded")) {
                $(this).expand();
              }
            }
          });
        });

        function setNewParent(child, parent)
        {
            // do ajax call here
            alert(child);
            alert(parent);
        }
    });

    </script>
</head>
<body>

    <table id="dragndrop">
      <thead>
        <tr> 
          <th>Title</th>
          <th>Size</th>
          <th>Kind</th>
        </tr>
      </thead>
      <tbody>
        <tr id="node-1">
          <td><span class="parent">CHANGELOG</span></td>
          <td>4 KB</td>
          <td>Parent</td>
        </tr>

        <tr id="node-3" class="child-of-node-1">
          <td><span class="child">images</span></td>
          <td>--</td>
          <td>child</td>
        </tr>

        <tr id="node-2">
          <td><span class="parent">doc</span></td>
          <td>--</td>
          <td>Parent</td>
        </tr>

        <tr id="node-4" class="child-of-node-2">
          <td><span class="child">bg-table-thead.png</span></td>
          <td>52 KB</td>
          <td>child</td>
        </tr>

        <tr id="node-5" class="child-of-node-2">
          <td><span class="child">folder.png</span></td>
          <td>4 KB</td>
          <td>child</td>
        </tr>

      </tbody>
    </table>
</body>

Para fazer toda a tabela classificáveis ??você pode usar a função .sortable() do jQuery, mas deixei que daqui para torná-lo mais claro.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top