v2.5.2
Giriş yap

Datatable column değişkene aktarma sorunu?

busrademirtas
300 defa görüntülendi ve 1 kişi tarafından değerlendirildi

Merhabalar.
Php sayfamda datatable kullanıyorum. Column özelliğine gelen sonuçları bir değişkene atmak istiyorum ve gelen sonuca göre butonları pasif veya aktif etmem gerekiyor bu konuda yardımcı olabilir misiniz?

Cevap yaz
Cevaplar (6)
abdullahx
559 gün önce

Değişkene atmaktan ziyade birçok farklı çözüm yolu vardır aslında. ColumnDefs ayarı ile column a varsayılan bir template vererek render sayesinde gelen değeri kontrol edip butonu aktif/pasif yapabilirsiniz. Belki yine rowCallback ile buna benzer bir işlem yapılabilir. Server side veya statik bir tablo mu kullanıyorsunuz?

busrademirtas
558 gün önce

Render ve rowCallback ile işimi çözdüm. Teşekkür ederim.

abdullahx
559 gün önce

Şu an mobilde olduğum için maalesef test etme imkanım yok. Aklımdan geçen senaryoda sanırım render ile olmuyor, rowCallback daha iyi.
Bu aktif pasif yapılacak butonların son sütunda belirttiğiniz btn içlerindeki butonlar olduğunu düşündüm.

rowCallback: function (row, data) {
let veri = data.quantity // mesela dönen değerlerden quantity göre işlem yapmak istiyorsunuz diyelim. Diğer fonksiyonlarda da bu veriyi kullanabilirsiniz
// bu fonksiyon o an sayfada gösterilen satır sayısı kadar çalışır. 10 ise bu değer burada kendi çağırdığınız fonksiyon da siz müdahale etmeden 10 defa çalışır. 
// Varsa bu değere göre if koşulları çalıştırsınız
            $(row).find('.btnClass')... 

         },
busrademirtas
559 gün önce

JavaScript

        var veri = {
            title: $('#title').val()
        };

        $('#example').on('click', 'tbody td.dt-control', function() {
            var tr = $(this).closest('tr');
            var row = table.row(tr);

            if (row.child.isShown()) {
                row.child.hide();
            } else {
                row.child(format(row.data())).show();
            }
        });

        $('#example').on('requestChild.dt', function(e, row) {
            row.child(format(row.data())).show();
        });

        var table = $('#example').DataTable({
            lengthMenu: [
                [10, 25, 50, 100, -1],
                [10, 25, 50, 100, "Tümü"]
            ],
            order: [
                [2, 'asc']
            ],
            pageLength: 10,
            search: true,
            paging: true,
            info: true,
            destroy: true,
            retrieve: true,
            select: true,
            processing: true,
            serverSide: true,
            deferRender: true,
            scroller: true,
            ajax: {
                type: "POST",
                url: "../kt.php",
                data: veri,
                dataType: "json"
            },
            "rowId": 'id',
            columns: [{
                    "className": 'dt-control',
                    "orderable": false,
                    "data": null,
                    "defaultContent": ''
                },
                {
                    data: 'imgurl'
                },
                {
                    data: 'title'
                },
                {
                    data: 'condition'
                },
                {
                    data: 'quantity'
                },
                {
                    data: 'proc'
                },
                {
                    data: 'btn'
                }
            ]
        });

        table.on('stateLoaded', (e, settings, data) => {
            for (var i = 0; i < data.childRows.length; i++) {
                var row = table.row(data.childRows[i]);
                row.child(format(row.data())).show();
            }
        });
    };

Kodum bu şekilde. @abdullahx

busrademirtas
559 gün önce

Değişkene atmak istememin sebebi o değişkenleri başka fonksiyonlarda kullanıyorum.Server side tablo kullanıyorum.
@abdullahx

abdullahx
559 gün önce

Tablonuzu burada simüle edebilirseniz daha kolay yardımcı olabiliriz