Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Memaparkan Data Tidak Langsung (cth., Nama Bandar daripada ID) dalam jqGrid?

Bagaimanakah Saya Boleh Memaparkan Data Tidak Langsung (cth., Nama Bandar daripada ID) dalam jqGrid?

DDD
DDDasal
2025-01-23 07:02:15215semak imbas

How Can I Display Indirect Data (e.g., City Names from IDs) in a jqGrid?

jqGrid: Mengendalikan paparan data tidak langsung

Apabila berurusan dengan data jadual, anda selalunya perlu memaparkan data daripada jadual yang berbeza. Contohnya, jika anda mempunyai jadual utama yang mengandungi nama pelajar dan ID bandar, dan jadual lain yang memetakan ID bandar kepada nama bandar sebenar, anda mungkin mahu memaparkan nama bandar dalam grid dan bukannya ID bandar.

Had kaedah sambungan langsung

Pendekatan biasa adalah dengan menyertai jadual ini berdasarkan medan ID bandar. Walau bagaimanapun, pendekatan ini menjadi tidak praktikal jika anda menggunakan struktur kelas yang mengandungi medan ID bandar dan bukannya nama bandar sebenar.

Penyelesaian: Gunakan fungsi carian untuk menyahkod ID

Untuk menyelesaikan masalah ini, jqGrid menyediakan fungsi formatter: "select". Fungsi ini membolehkan anda menyahkod ID bandar ke dalam nama bandar yang sepadan. Walau bagaimanapun, ia memerlukan peta nilai untuk melaksanakan penyahkodan ini, dan peta ini perlu ditetapkan sebelum jqGrid memproses respons pelayan.

Pendekatan yang disyorkan adalah untuk melanjutkan respons pelayan anda dengan data atribut editoptions.value tambahan yang akan digunakan untuk lajur menggunakan pemformat "pilih". Respons lanjutan ini boleh dalam format berikut:

<code class="language-json">{
    "cityMap": {"11": "Chennai", "12": "Mumbai", "13": "Delhi"},
    "rows": [
        { "SID": "1",  "SNAME": "ABC", "CITY": "11" },
        { "SID": "2",  "SNAME": "XYZ", "CITY": "12" },
        { "SID": "3",  "SNAME": "ACX", "CITY": "13" },
        { "SID": "4",  "SNAME": "KHG", "CITY": "13" },
        { "SID": "5",  "SNAME": "ADF", "CITY": "12" },
        { "SID": "6",  "SNAME": "KKR", "CITY": "11" }
    ]
}</code>

Dalam tetapan jqGrid anda, anda boleh mengkonfigurasi lajur seperti berikut:

<code class="language-javascript">colModel: [
    {name: "SNAME", width: 250},
    {name: "CITY", width: 180, align: "center"}
],
beforeProcessing: function (response) {
    var $self = $(this);
    $self.jqGrid("setColProp", "CITY", {
        formatter: "select",
        edittype: "select",
        editoptions: {
            value: $.isPlainObject(response.cityMap) ? response.cityMap : []
        }
    });
},
jsonReader: { id: "SID"}</code>

Kaedah ini membolehkan anda menetapkan pilihan lajur secara dinamik berdasarkan data yang diterima daripada pelayan. Ia juga memberi anda fleksibiliti untuk melaksanakan senario yang lebih kompleks, seperti menentukan pilihan bahasa atau mengendalikan sejumlah besar item dalam elemen pemilihan.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memaparkan Data Tidak Langsung (cth., Nama Bandar daripada ID) dalam jqGrid?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn