Открыть всплывающее окно в Jquery datatable с соответствующими данными не работает


Что я хочу, так это связать Jquery datatable, в котором есть много записей coming.In в каждой строке есть div onclick, из которого я хочу открыть форму с соответствующими данными.

Прежде всего ниже приведен мой код для привязки данных.

function getDashboardData(STATE) {
    try {

        $.ajax({
            type: "POST",
            url: "Dashboard.aspx/BindMWSiteSurvey",
            data: JSON.stringify({ STATE: STATE }),
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (data) {

                var datVal = JSON.parse(data.d);

                var details = [];

                for (var i = 0, len = datVal.length; i < len; i++) {

                    var result = datVal[i];
                    
                    var buttonColumn = "<b><div style='cursor: pointer;' value='VALIDATE' onClick=" + 'OpenPopUpForUpdate("' + this + '");' + " />Validate</div></b>";                  

                    details.push([result.SAP_ID, result.CANDIDATE_ID, result.STATE, result.SITE_NAME, result.CANDIDATESTATUS, result.CURRENT_STATUS, buttonColumn]);
                }

                $('#grdMWSiteSurvey').DataTable({
                    destroy: true,
                    autoWidth: false,
                    "aaData": details,
                    "aoColumns": [
                        { "sTitle": "Sap ID" },
                        { "sTitle": "Candidate ID" },
                        { "sTitle": "State" },
                        { "sTitle": "Site Name" },
                        { "sTitle": "Candidate Status" },
                        { "sTitle": "Current Status" },
                        { "sTitle": "ACTION" }
                    ],
                    "bDestroy": true
                });
            },
            error: function (data) {
                alert('Something went wrong..!!');
            }
        });
    } catch (e) {
        //exception
    }
}
<div class="col-md-12">
                <table id="grdMWSiteSurvey" class="display responsive nowrap"></table>
            </div>

В каждой строке есть div с именем VALIDATE, по щелчку которого я хочу открыть всплывающее окно.

Поэтому то,что я немного попробовал, так и следует.

function OpenPopUpForUpdate(a) {
    var row = a.parentNode.parentNode;
    var rowIndex = row.rowIndex - 1;
    var SAPID = row.cells[0].innerHTML;       
}
<div id="popupdiv">
        <h1>This is opened in pop up</h1>
    </div>

Но это не открытие всплывающего окна. Также оповещение по какому-то столбцу тоже не работает. Пожалуйста, предложите, как этого добиться.

1 3

1 ответ:

Вы можете использовать jQueryui для отображения ваших данных в диалоговом окне. Учитывая ваш фрагмент, вы можете сделать это таким образом.

$('#popupdiv').on('click', function(){
  $(this).dialog();
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>

<div id="popupdiv">
   <h1>This is opened in pop up</h1>
</div>

Полное решение отображения каждой строки таблицы может быть сделано, как показано ниже, где можно реализовать свой собственный диалог со стилем CSS и функцией Js

$('table').on('click', 'tr', function(){
 let values = [];
 $(this).children().each(function(){
  values.push($(this).html());
 })
 $('#mod').css('display', 'block');
 $('#mod-value1').html(values[0]);
 $('#mod-value2').html(values[1]);
})

$('#mod').on('click', function(){
  $(this).css('display', 'none');
})
table {
  background-color: orange;
}
td {
  border: 1px solid red;
  margin: 0;
  cursor: pointer
}

.modal {
    display: none; /* Hidden by default */
    position: fixed; /* Stay in place */
    z-index: 1; /* Sit on top */
    padding-top: 100px; /* Location of the box */
    left: 0;
    top: 0;
    width: 100%; /* Full width */
    height: 100%; /* Full height */
    background-color: rgba(0,0,0,0.4); /* Black w/ opacity */
}

.modal-content {
 top: 50%;
 left: 50%;
 width: 3cm;
 height: 3cm;
 border-radius: 2px;
 background-color: #fefefe;
 margin: auto
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>

<table>
  <tr>
      <td>col11</td>
      <td>col12</td>
  </tr>
    <tr>
      <td>col21</td>
      <td>col22</td>
  </tr>
</table>
<div id="mod" class="modal">
   <div id="mod-content" class="modal-content">
      <div id="mod-value1"></div>
      <div id="mod-value2"></div>
   </div>
</div>