Estoy tratando de hacer lo siguiente. Cuando haga clic en cualquier línea, abra un modal con la información de línea y un ComboBox con información de otra tabla e insértelo en una nueva tabla en la base de datos. Mi pregunta es, ¿puede hacer esto a través de un modal? ¿Cómo?

Gracias. Sigue mi fuente

  <script type="text/javascript">
    $(document).ready(function() {
        var oTable = $('#example').dataTable({
            "bProcessing": true,
            "bServerSide": true,
            "sPaginationType": "full_numbers",
            "dom": 'T<"clear">lfrtip',
            "tableTools": {
                "sSwfPath": "media/swf/copy_csv_xls_pdf.swf",
                "aButtons": [{
                    "sExtends": "copy",
                    "sButtonText": "Copy"
                }, {
                    "sExtends": "print",
                    "sButtonText": "Print"
                }, {
                    "sExtends": "collection",
                    "sButtonText": "Save",
                    "aButtons": ["csv", "pdf"]
                }]
            },
            "autoWidth": true,
            "sAjaxSource": "Load_Arm_tec.php",
            "aoColumns": [{
                "sClass": "readonly",
                "sTitle": "ID",
                "aTargets": [0]
            }, {
                "sClass": "readonly",
                "sTitle": "arm",
                "aTargets": [1]
            }, {
                "sClass": "readonly",
                "sTitle": "City",
                "aTargets": [2]
            }, {
                "sClass": "readonly",
                "sTitle": "reg",
                "aTargets": [3]
            }, {
                "sClass": "readonly",
                "sTitle": "QNTD",
                "aTargets": [4]
            }, {
                "sClass": "readonly",
                "sTitle": "Size",
                "aTargets": [5]
            }, {
                "sClass": "readonly",
                "sTitle": "DT_start",
                "aTargets": [6]
            }, {
                "sClass": "readonly",
                "sTitle": "DT_end",
                "aTargets": [7],
                "type": "date"
            }, {
                "sClass": "readonly",
                "sTitle": "Days",
                "aTargets": [8]
            }],
            "fnDrawCallback": function() {
                $('td.readonly').on('click', function(e) {

                    var id = oTable.fnGetData($(this).parents('tr')[0])[0];

                    //MODAL HERE....  HOW?


                });
            }
        });


    });
    </script>

Y mi fuente HTML ...

<div id="dynamic">

    <table cellpadding="0" cellspacing="0" border="0" class="display"
        id="example">
        <thead>
            <tr>
                <th>ID</th>
                <th>ARM</th>
                <th>CITY</th>
                <th>REG</th>
                <th>QNTD</th>
                <th>SIZE</th>
                <th>DT_START</th>
                <th>DT_END</th>
                <th>DAYS</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td colspan="5" class="dataTables_empty">Loading..</td>
            </tr>
        </tbody>
        <tfoot>
        <tr>
            <th>ID</th>
            <th>ARM</th>
            <th>CITY</th>
            <th>REG</th>
            <th>QNTD</th>
            <th>SIZE</th>
            <th>DT_START</th>
            <th>DT_END</th>
            <th>DAYS</th>
        </tr>
        </tfoot>
    </table>
</div>

ACTUALIZACIÓN: fnDrawCallback Whith Modal ....

Bien, la pregunta ahora es: ¿Cómo agrego un ComboBox con información de mi base de datos?

"fnDrawCallback" : function() {
    $('td.readonly').on('click', function (e) {

        var id_armario = oTable.fnGetData($(this).parents('tr')[0])[0];
        var armario = oTable.fnGetData($(this).parents('tr')[0])[1];
        var cidade = oTable.fnGetData($(this).parents('tr')[0])[2];

      dialog = $( "#users-contain" ).dialog({
          autoOpen: false,
          height: 300,
          width: 350,
          modal: true,
          open: function( event, ui ) {
              $( "#users tbody" ).append( "<tr>" +
                  "<td>" + id + "</td>" +
                  "<td>" + arm + "</td>" +
                  "<td>" + city + "</td>" +
                     "</tr>" );
          },
          close: function( event, ui ) {
              $("#users tbody").empty();
           },
          buttons: {
            "OK": function(){
                dialog.dialog( "close" );
            },
            Cancel: function() {
              dialog.dialog( "close" );
            }
         }
    });

Y el HTML para Modal ...

<div id="users-contain">
    <h1>Existing Users:</h1>
    <table id="users" class="ui-widget ui-widget-content">
        <thead>
            <tr class="ui-widget-header ">
                <th>Id</th>
                <th>Arm</th>
                <th>City</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td></td>
                <td></td>
                <td></td>
            </tr>
        </tbody>
    </table>
</div>
0
Fernando A.W. 2 sep. 2014 a las 18:26

2 respuestas

La mejor respuesta

Publicar para otros que tienen preguntas. Problema resuelto.

JavaScript ...

<script type="text/javascript">
$(document).ready(function() {
    var oTable = $('#example').dataTable(
    {
        "bProcessing" : true,
        "bServerSide" : true,
        "sPaginationType" : "full_numbers",
        "dom": 'T<"clear">lfrtip',
        "tableTools": {
                "sSwfPath": "media/swf/copy_csv_xls_pdf.swf",
            "aButtons": [
                    {
                        "sExtends": "copy",
                        "sButtonText": "Copy"
                    },
                    {
                        "sExtends": "print",
                        "sButtonText": "Print"
                    },
               {
                   "sExtends":    "collection",
                   "sButtonText": "Save",
                   "aButtons":    [ "csv", "pdf" ]
               }
            ]
        },
        "autoWidth": true,
        "sAjaxSource" : "Load_Arm.php",
        "aoColumns" : [
                {
                    "sClass" : "readonly",
                    "sTitle": "ID",
                    "aTargets": [0]
                },     
                {
                    "sClass" : "readonly",
                    "sTitle": "ARM",
                    "aTargets": [1]
                },
                {
                    "sClass" : "readonly",
                    "sTitle": "CITY",
                    "aTargets": [2]
                },
                {
                    "sClass" : "readonly",
                    "sTitle": "REG",
                    "aTargets": [3]
                },
                {
                    "sClass" : "readonly",
                    "sTitle": "QNTD",
                    "aTargets": [4]
                },
                {
                    "sClass" : "readonly",
                    "sTitle": "SIZE",
                    "aTargets": [5]
                },
                {
                    "sClass" : "readonly",
                    "sTitle": "DT_START",
                    "aTargets": [6]
                },
                {
                    "sClass" : "readonly",
                    "sTitle": "DT_END",
                    "aTargets": [7],
                    "type": "date"
                },
                {
                    "sClass" : "readonly",
                    "sTitle": "DAYS",
                    "aTargets": [8]
                }
        ],
        "fnDrawCallback" : function() {
            $('td.readonly').on('click', function (e) {

                var id = oTable.fnGetData($(this).parents('tr')[0])[0];
                var arm = oTable.fnGetData($(this).parents('tr')[0])[1];
                var city = oTable.fnGetData($(this).parents('tr')[0])[2];                                        

              dialog = $( "#users-contain" ).dialog({
                  autoOpen: false,
                  height: 500,
                  width: 900,
                  title: "Info Arm",
                  modal: true,
                  open: function( event, ui ) {
                      $( "#users tbody" ).append( "<tr>" +
                          "<td>" + id + "</td>" +
                          "<td>" + arm + "</td>" +
                          "<td>" + city + "</td>" +
                             "</tr>" );

                      $.ajax({
                            url:'Tec_combo.php',
                            type:'POST',
                            data:'clust=' + city,
                            dataType: 'json',
                            success: function( json ) {
                            $.each(json, function(i, value) {  
                             $('<option></option>', {text:value}).attr('value', value).appendTo('#names');
                                });
                            }
                          });

                  },
                  close: function( event, ui ) {
                      $("#users tbody").empty();
                      $("#names").empty();
                   },
                  buttons: {
                    "OK": function(){
                        dialog.dialog( "close" );
                    },
                    Cancel: function() {
                      dialog.dialog( "close" );
                    }
                  }
                });

              dialog.dialog("open");
            } );
        }   
    });                                     
);
</script>

Código HTML...

<div id="users-contain">
<table id="users">
    <thead>
        <tr>
            <th>Id</th>
            <th>Arm</th>
            <th>City</th>
            <select id="names"></select>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td></td>
            <td></td>
            <td></td>
            <td></td>
        </tr>
    </tbody>
</table>
</div>

Gracias ... Preguntas, estoy disponible ...

0
Fernando A.W. 2 sep. 2014 a las 19:22

Lo que está tratando de hacer se puede hacer clonando el modelo dentro de cada instrucción que recorre los datos y se agrega a una sección determinada. También recomiendo agregar clase para que sea más fácil de encontrar utilizando la función jQuery find ()

$ .each (datAarray, function (index, value) {ComboBox = $ (modal) .clone ()

ComboBox.find('.rowName').append(value);

})

0
santi6291 2 sep. 2014 a las 15:20