জিকিউরি ডেটাবেবলস: অপরিজ্ঞাতকৃত সম্পত্তি 'ডেটাসোর্ট' পড়তে পারে না


99

আমি এই ফিডলটি তৈরি করেছি এবং এটি আমার প্রয়োজনীয়তা অনুসারে কাজ করে: ফিডল iddle

যাইহোক, আমি যখন আমার অ্যাপ্লিকেশনটিতে এটি ব্যবহার করি তখন আমি ব্রাউজার কনসোলে একটি ত্রুটি পেয়েছিলাম যা অপরিজ্ঞাতকৃত সম্পত্তি 'অ্যাডাটাসোর্ট' পড়তে পারে না বলে জানায়

আমার অ্যাপ্লিকেশনটিতে, জাভাস্ক্রিপ্ট নীচের মতো কিছু পড়ছে: আমি কন্ট্রোলার আউটপুট পরীক্ষা করেছি ... এটি ভাল কাজ করে এবং কনসোলেও মুদ্রিত হয়।

$(document).ready(function() {

    $.getJSON("three.htm", function(data) {
             // console.log("loadDataTable >>  "+JSON.stringify(data));
             })
             .fail(function( jqxhr, textStatus, error ) {
             var err = textStatus + ', ' + error;
             alert(err);
             console.log( "Request Failed: " + err);
             })
             .success(function(data){
                 loadDataTable(data);
             });

    function loadDataTable(data){
         $("#recentSubscribers").dataTable().fnDestroy();    
         var oTable = $('#recentSubscribers').dataTable({
             "aaData" : JSON.parse(data.subscribers),
             "processing": true,
            "bPaginate": false,
            "bFilter": false,
            "bSort": false,
            "bInfo": false,
            "aoColumnDefs": [{
            "sTitle": "Subscriber ID",
            "aTargets": [0]
        }, {
            "sTitle": "Install Location",
            "aTargets": [1]
        }, {
            "sTitle": "Subscriber Name",
            "aTargets": [2]
        }, {
            "aTargets": [0], 
            "mRender": function (data, type, full) {
                return '<a style="text-decoration:none;" href="#" class="abc">' + data + '</a>';
            }
        }],
            "aoColumns": [{
            "mData": "code"
        }, {
            "mData": "acctNum"
        }, {
            "mData": "name"
        }]
            });

    }       

})

দয়া করে নিশ্চিত হন যে আপনি যে কোডটি অন্তর্ভুক্ত করেছেন সেটি হ'ল ফিডল (এটি নয়) এবং আপনি যে চালাচ্ছেন তার মতো। : এছাড়াও বেহালার আপনি দুই aTargets [0] চেক আছে jsfiddle.net/gL0p0t42
লিয়ান্দ্রো Carracedo

আপনি এমন উত্স সরবরাহ করছেন না যা প্রকৃতপক্ষে "aDataSort" কল করে।
ড্যানিয়েল

আপনি কি এইচটিএমএল টেবিলের আইডি বোঝাতে চান? আমি সেদিকে খেয়াল রেখেছি। আমার একটি লক্ষ্য থাকার চেষ্টা করুন।
swateek


4
আমারও একই সমস্যা ছিল এবং আমি দেখতে পেলাম যে আমি একটি কলাম নম্বর দিয়ে অর্ডার করছি যা বিদ্যমান নেই .. আমার কাছে কেবল 3 টি কলস ছিল তবে আমি পঞ্চম দ্বারা অর্ডার করেছি।
হোস বুধ

উত্তর:


138

আপনার THAD টেবিলের ফাঁকা না থাকা গুরুত্বপূর্ণ important যেমন ডাটা টেবিলের জন্য আপনাকে প্রত্যাশিত ডেটার কলামের সংখ্যা নির্দিষ্ট করতে হবে। আপনার তথ্য অনুযায়ী এটি হওয়া উচিত

<table id="datatable">
    <thead>
        <tr>
            <th>Subscriber ID</th>
            <th>Install Location</th>
            <th>Subscriber Name</th>
            <th>some data</th>
        </tr>
    </thead>
</table>

30
আমার যদি এমন কোনও প্রয়োজনীয়তা থাকে যা রানটাইমের সময় কলামগুলি কনফিগার করতে এবং কথিত কলামগুলির সংযুক্ত করে? আমি উল্লিখিত প্রয়োজনীয়তার জন্য কোডটি কীভাবে প্রয়োগ করতে পারি?
সিএস লুইস

এটি আমাকে মুদ্রিত নয় এমন আমার সমস্যা নিরাময় করতে সহায়তা করেছিল। ঠিক আছে, এটি আমার ডেট্যাটেবলের জন্য আমার আরও একটি সমস্যা নিরাময় করতে সহায়তা করেছিল যেখানে আমি লিখেছি "Sort":false, তারপরে এটি নিয়ামকের কাছ থেকে আগত ক্রমটিতে তালিকাটি দেখতে সক্ষম হয়েছিল Model.OrderByDescending(x=>x.Action==0).ThenBy(x=>x.Action)
সোরঙ্গওয়ালা আব্বাসালী

4
<thead>একটি ধারণ করতে হবে <tr>, তারপর <th>গুলি
brahimm

এটি একটি স্ট্যান্ডার্ড ডেটা টেবিলের জন্য সত্য (এবং আমার সমস্যাটি সমাধান করুন)। আর: @ সিএস লুইস: আমি স্ট্যাটিক টেবিলের সাথে নিশ্চিত নই, তবে আপনি যদি অজ্যাক্স অনুরোধের পাশাপাশি রানটাইমে কলামগুলি কনফিগার করছেন তবে এটিতে কিছু রাখার প্রয়োজন নেই <thead>তবে আপনার ডেটা টেবিলের
হার্ভি ডবসন

64

এছাড়াও এই সমস্যাটি ছিল, এই অ্যারেটি সীমার বাইরে ছিল:

order: [1, 'asc'],

4
এই সবসময় আমাকে পায়। অ্যারেটি সীমা ছাড়িয়ে থাকলে 0-এ অ্যারে ডিফল্ট করার কোনও উপায় আছে কি?
জেগ্রিসলি

6
@ জেগ্রাসলি আপনি এটিকে একটি খালি অ্যারে হিসাবে সেট করতে পারেন: ক্রম: []
হোগার্থ 45 ই

4
আমার কলামগুলি যেখানে 5 এবং আমি এখানে 7 উল্লেখ করছি! ধন্যবাদ
এফিন

4
এক! সপ্তাহ! এক পুরো সপ্তাহ! এবং এটি একটি 7 দিনের সপ্তাহ! এবং আমি নিশ্চিত যে আমি 9-থেকে -5-তে কাজ করছিলাম না , আরও 9-থেকে মধ্যরাতের মতো ... এই সমস্ত হারিয়েছি কারণ আমি এই বাগ সম্পর্কে জানতাম না !! অররর্ররর্ররগ !! ... এত সময় নষ্ট হয়েছে, আমি গভীরভাবে লজ্জা বোধ করছি, আমি বারবার ইন্টারনেটে অনুসন্ধান করেছি এবং সমস্ত সম্ভাব্য সমাধান নিয়ে পরীক্ষা-নিরীক্ষা করেছি - কেউ এটিকে 'ফিক্স' করার কাছাকাছি আসতে পারে না। এবং তারপরে ... কেবল সুযোগ এবং ইতিমধ্যে হতাশার দ্বারা ... আমি আপনার উত্তর জুড়ে এসেছি, এবং তা-দা! পাঁচ মিনিটের মধ্যে, সবকিছু ঠিক হয়ে গেল । আমি যদি ধনী হতাম, আমি আপনাকে 10 কে - চিরকুট
গুইনেথ ল্লেওলিন

9

আমার জন্য, বাগটি নিজেই ডেটা টেবিলগুলিতে ছিল; ডেটা টেবিল ১.১০.২ এ বাছাই করার কোডটি সীমানার জন্য পরীক্ষা করবে না; এইভাবে আপনি যদি কিছু ব্যবহার

order: [[1, 'asc']]

খালি টেবিল সহ, কোনও সারি আইডেক্স 1 নেই -> এই ব্যতিক্রমটি নিশ্চিত করে। টেবিলের ডেটা সংশ্লেষজনকভাবে আনা হওয়ায় এটি ঘটেছিল। প্রাথমিকভাবে, পৃষ্ঠাগুলিতে ডেটা লোডযোগ্য টেবিলটি ডেটা ছাড়াই শুরু হয়ে যায়। ফলাফল ডেটা আনার সাথে সাথে এটি পরে আপডেট করা উচিত।

আমার সমাধান:

// add within function _fnStringToCss( s ) in datatables.js
// directly after this line
// srcCol = nestedSort[i][0];

if(srcCol >= aoColumns.length) {
    continue;
}

// this line follows:
// aDataSort = aoColumns[ srcCol ].aDataSort;

এই ইস্যুতে আপনার ব্যাখ্যার জন্য ধন্যবাদ; @ hogarth45 উপরে সঠিকভাবে সমস্যা / বাগ চিহ্নিত, কিন্তু সম্পর্কে তাই পরিষ্কার ছিল না কেন ছিল, আসলে, একটি সমস্যা। আমি আপনাকে দু'বছর পরে উত্তর দিচ্ছি ... এবং স্পষ্টতই এটি সংশোধন করা হয়নি, এমনকি অন্ততপক্ষে যতদূর আমি জানি, সরকারী ডকুমেন্টেশনেও উল্লেখ করা হয়নি।
Gwyneth Llewelyn

7

আমি একই সমস্যার মুখোমুখি হয়েছি, নিম্নলিখিত পরিবর্তনগুলি আমার সমস্যার সমাধান করেছে।

$(document).ready(function() {
     $('.datatable').dataTable( {
            bSort: false,
            aoColumns: [ { sWidth: "45%" }, { sWidth: "45%" }, { sWidth: "10%", bSearchable: false, bSortable: false } ],
        "scrollY":        "200px",
        "scrollCollapse": true,
        "info":           true,
        "paging":         true
    } );
} );

aoColumnsঅ্যারে প্রতিটি কলামের এবং তার প্রস্থ বর্ণনা করে sortableবৈশিষ্ট্য।

এই ত্রুটিটি উল্লেখ করার জন্য অন্য একটি জিনিস উপস্থিত হবে যখন আপনি কোনও কলাম নম্বর দ্বারা অর্ডার করবেন যা অস্তিত্বহীন।


4

আমার ক্ষেত্রে ছিল

$(`#my_table`).empty();

কোথায় হওয়া উচিত ছিল

$(`#my_table tbody`).empty();

দ্রষ্টব্য: আমার ক্ষেত্রে আমাকে টেবিলটি খালি করতে হয়েছিল যেহেতু আমার কাছে ডেটা ছিল যা আমি নতুন ডেটা সন্নিবেশ করার আগে যেতে চাইতাম।

ভাগ করে নেওয়ার কথা ভেবেছি এটি ভবিষ্যতে কাউকে "সম্ভবত" সহায়তা করতে পারে!


1

আমার এই সমস্যা ছিল এবং এটি কারণ হ'ল অন্য স্ক্রিপ্টটি সমস্ত টেবিলগুলি মুছে ফেলেছিল এবং সেগুলি পুনরায় তৈরি করছে, তবে আমার টেবিলটি পুনরায় তৈরি করা হচ্ছে না। আমার টেবিলটি পৃষ্ঠায়ও দৃশ্যমান ছিল না তা লক্ষ করার আগে আমি এই সমস্যাটিতে যুগে যুগে কাটিয়েছি। আপনি ডেটা টেবিলগুলি আরম্ভ করার আগে আপনার টেবিলটি দেখতে পাচ্ছেন?

মূলত, অন্যান্য স্ক্রিপ্টটি করছিল:

let tables = $("table");
for (let i = 0; i < tables.length; i++) {
  const table = tables[i];
  if ($.fn.DataTable.isDataTable(table)) {
    $(table).DataTable().destroy(remove);
    $(table).empty();
  }
}

এবং এটি করা উচিত ছিল:

let tables = $("table.some-class-only");
... the rest ...

1

পার্স হওয়ার কারণে [']আপনাকে একক উদ্ধৃতিগুলি ডাবল কোটে স্যুইচ করতে হবে["]

আপনি যদি টেবিলে ডেটা-অর্ডার বৈশিষ্ট্যটি ব্যবহার করে থাকেন তবে এটি এটির মতো ব্যবহার করুনdata-order='[[1, "asc"]]'


এটি ওপির প্রশ্নের সাথে প্রাসঙ্গিক নয় তবে এটি আমার ক্ষেত্রে কাজ করে (এইচটিএমএল 5 ডেটা বৈশিষ্ট্য ব্যবহার করে)
ব্ল্যাকবায়ারন

0

আমার ক্ষেত্রে আমি orderস্ক্রিপ্টের অভ্যন্তরে যেখানে আপনি ডেটা সারণিটি কনফিগার করেন সেখানে সম্পত্তি প্রয়োগ করার সময় একটি বৈধ কলাম নম্বর স্থাপন করে সমস্যার সমাধান করেছি ।

var table = $('#mytable').DataTable({
     .
     .
     .
     order: [[ 1, "desc" ]],

ইতিমধ্যে অন্যান্য উত্তরগুলি মূলত একই জিনিস বলছে। কয়েক বছরের পুরানো প্রশ্নগুলিতে অনর্থক উত্তর এড়াতে চেষ্টা করুন।
Thelr
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.