jQuery Datatable Modal - 添加信息

时间:2014-09-02 14:26:50

标签: javascript jquery datatables jquery-datatables

我试图做以下事情。 当您单击任意一行时,打开包含line信息的模态和包含来自另一个表的信息的ComboBox,并将其插入数据库中的新表。 我的问题是,可以通过模态做到这一点吗?怎么样?

谢谢。 关注我的来源。

  <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>

我的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>

UPDATE:fnDrawCallback Whith Modal ....

好的,现在的问题是:如何从我的数据库中添加包含信息的ComboBox?

"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" );
            }
         }
    });

用于模态的HTML ...

<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>

2 个答案:

答案 0 :(得分:0)

你要做的事情可以通过在循环数据的每个语句中克隆模型并将其附加到某个部分来完成我还建议添加类以便使用jQuery find()更容易找到功能

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

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

})

答案 1 :(得分:0)

为有疑问的人发帖。 问题解决了。

... JavaScrit

<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>

HTML code ...

<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>

...谢谢 问题,我有空......