在jqgrid和php中如何在crud后选择行

7ajki6be  于 2023-02-28  发布在  PHP
关注(0)|答案(1)|浏览(129)

我如何使用jqgrid和php,以便我可以使用crud后的选定行特性,这意味着当添加的数据表单提交时,程序可以根据其位置突出显示哪一行,以便用户可以识别输入数据后发生的更改我尝试使用 AJAX ,但不能
我如何使用jqgrid和php例如像web https://web.transporindo.com/mdgrid/这样我就可以使用crud之后的选定行特性意味着当添加的数据表单被提交时,程序可以根据其位置突出显示哪一行,这样用户就可以识别输入数据后发生的更改我尝试过使用 AJAX ,但不能。我尝试过通过调用函数callAfterSubmit来使用ajax(响应、postData、传递)并将其发送到add_head. php,其中包含
JQGRID

jQuery("#grid_id").jqGrid('navGrid', '#jqGridPager', null, {

  recreateForm: true,                       //formulir akan dibuat ulang setiap kali dialog diaktifkan dengan opsi baru dari colModel
  beforeShowForm: function(form) {
    form[0].querySelector('#no_invoice').setAttribute('readonly', 'readonly')
    // var input     = document.getElementById("no_invoice").value;
    // var inputBaru = input.replace('<span class="highlight"></span>', ""); // Menghapus kataHapus dari input menggunakan replace()
    // document.getElementById("no_invoice").value = inputBaru;
    var nilaiAsli     = "";
    var no_invoice    = document.getElementById("no_invoice");      // Ambil element input no_invoice
    var tgl_pembelian  = document.getElementById("tgl_pembelian");  // Ambil element input tgl_pembelian
    var nama_pelanggan = document.getElementById("nama_pelanggan"); // Ambil element input nama_pelanggan
    var jenis_kelamin  = document.getElementById("jenis_kelamin");  // Ambil element input jenis_kelamin
    var saldo          = document.getElementById("saldo");          // Ambil element input saldo

    nilaiAsli        = no_invoice.value;                         // Simpan nilai asli dari input pada variabel nilaiAsli
    var inputBaru    = no_invoice.value.replace(/<[^>]+>/g, ""); // Menghapus elemen tag HTML dari input menggunakan regex
    no_invoice.value = inputBaru;                                // Tampilkan input yang telah diubah

    nilaiAsli           = tgl_pembelian.value;                         // Simpan nilai asli dari input pada variabel nilaiAsli
    var inputBaru       = tgl_pembelian.value.replace(/<[^>]+>/g, ""); // Menghapus elemen tag HTML dari input menggunakan regex
    tgl_pembelian.value = inputBaru;                                   // Tampilkan input yang telah diubah

    nilaiAsli            = nama_pelanggan.value;                         // Simpan nilai asli dari input pada variabel nilaiAsli
    var inputBaru        = nama_pelanggan.value.replace(/<[^>]+>/g, ""); // Menghapus elemen tag HTML dari input menggunakan regex
    nama_pelanggan.value = inputBaru;                                    // Tampilkan input yang telah diubah

    nilaiAsli           = jenis_kelamin.value;                         // Simpan nilai asli dari input pada variabel nilaiAsli
    var inputBaru       = jenis_kelamin.value.replace(/<[^>]+>/g, ""); // Menghapus elemen tag HTML dari input menggunakan regex
    jenis_kelamin.value = inputBaru;                                   // Tampilkan input yang telah diubah

    nilaiAsli     = saldo.value;                         // Simpan nilai asli dari input pada variabel nilaiAsli
    var inputBaru = saldo.value.replace(/<[^>]+>/g, ""); // Menghapus elemen tag HTML dari input menggunakan regex
    saldo.value   = inputBaru;                           // Tampilkan input yang telah diubah
  },
  // afterSubmit:callAfterSubmit,
  // reloadAfterSubmit:true,

}, {
  afterSubmit: callAfterSubmit,
  recreateForm: true,
}, );

function callAfterSubmit(response, postData, oper) {
  let sortfield   = $(this).jqGrid('getGridParam', 'postData').sidx;
  let sortorder   = $(this).jqGrid('getGridParam', 'postData').sord;
  let pagesize    = $(this).jqGrid('getGridParam', 'postData').rows;
  let selectedRow = $(this).jqGrid('getGridParam', 'selrow');

  $.ajax({
      url      : "add_header.php",
      dataType : 'JSON',
      data: {
        no_invoice  : JSON.parse(response.responseText).no_invoice,
        sidx        : sortfield,
        sord        : sortorder,
        selectedRow : selectedRow
      }
    })
  .done(function(data) {
    $('#cData').click();
    let posisi = data.position;
    let pager  = Math.ceil(posisi / pagesize);
    let rows   = posisi - (pager - 1) * pagesize;
    indexRow   = rows - 1;
    $('#grid_id').trigger('reloadGrid', { page: pager });

    // Setelah berhasil mengupdate data, kita dapat memilih kembali baris yang dipilih sebelumnya
    $('#grid_id').jqGrid('setSelection', selectedRow);
  });
}

PHP添加_标题. php

<?php
require "db.php";

if(isset($_GET['no_invoice']) && isset($_GET['sidx']) && isset($_GET['sord'])) {
    $no_invoice = $_GET['no_invoice'];
    $sortfield  = $_GET['sidx']; 
    $sortorder  = $_GET['sord'];
    
    $position = getWithPosition($no_invoice, $sortfield, $sortorder, $koneksi);
    
    function getWithPosition($no_invoice, $sortfield, $sortorder, $koneksi) {
        $data = mysqli_query($koneksi, "SELECT temp.position, temp.*
        FROM 
        (
            SELECT @rownum := @rownum + 1 AS position, penjualan.*
            FROM penjualan
            JOIN 
            (
                SELECT @rownum := 0
            ) rownum ORDER BY penjualan.$sortfield $sortorder
        ) temp WHERE temp.no_invoice = '". $no_invoice ."'");

        if(!$data) {
            die("Query failed: " . mysqli_error($koneksi));
        }

        $post = mysqli_fetch_assoc($data);
        $pos = $post['position'];
        return $pos;
    }
    
    $response = ['no_invoice' => $no_invoice, 'position' => $position];
    echo json_encode($response);
}
else {
    echo "Error: Missing parameters";
}
?>
9lowa7mx

9lowa7mx1#

对我来说,很难理解你想做什么,但在提交表单后,记录保持选中状态。强烈建议在表单编辑中检查选项。
演示可以be seen here
文档在这里

相关问题