سؤال

أنا استخدم Datatablesلعرض بعض بيانات XML التي أتيت ، لكنني أبحث عن نهج مختلف قليلاً. أرغب في الحصول على مربعات بحث على كل عمود وألحقها بشكل مثالي بالقيم من النتائج .. لذا بدلاً من مربع "البحث" على صفحته ، سيكون لدي مربع فوق كل عمود مع قيم (على سبيل المثال ، لعملية العرض المحرك: Trident ، WebKit ، Gecko ، إلخ. في مربع التحرير والسرد). هل يمكنني تغيير datatables jQuery للسماح بذلك أو ينبغي أن أبدأ من نقطة الصفر. يبدو الأمر شاقًا ، لكنني ما زلت جديدًا على jQuery. أي ردود موضع تقدير كبير. شكرا مقدما.

تحرير: شكرا على الردود. أنا أستخدم DataTables مع مربعات التحرير والسرد كما اقترح Predrag ، والتي يتم ملؤها مع جميع القيم من الأعمدة (وليس فقط تلك الموجودة في الصفحة المعروضة) ، ولكن عندما أقوم بتحديد قيمة ، لا يبدو أنها تطلق النار الحدث الذي يعيد تحميل الشبكة. هذا هو رمز jQuery الخاص بي على الصفحة:

<script type="text/javascript">
    $(document).ready(function() {


    <!-- Sorting and pagination -->
    var oTable = $('#mainTable').dataTable( {
      "bJQueryUI": true,
      "sPaginationType": "full_numbers",
      "bFilter": false
    });

    <!-- Filtering -->
    $("thead td").each(function(i) {
      this.innerHTML = fnCreateSelect(oTable.fnGetColumnData(i));
      $('select', this).change(function() {
        oTable.fnFilter($(this).val(), i);
      });
    });
  });
</script>

بالإضافة إلى ذلك ، لقد أضفت هذه الوظائف إلى أسفل jQuery.datatables.js على النحو التالي من هذه الصفحة: http://datatables.net/examples/api/multi_filter_select.html

(function ($) {
/*
* Function: fnGetColumnData
* Purpose:  Return an array of table values from a particular column.
* Returns:  array string: 1d data array 
* Inputs:   object:oSettings - dataTable settings object. This is always the last argument past to the function
*           int:iColumn - the id of the column to extract the data from
*           bool:bUnique - optional - if set to false duplicated values are not filtered out
*           bool:bFiltered - optional - if set to false all the table data is used (not only the filtered)
*           bool:bIgnoreEmpty - optional - if set to false empty values are not filtered from the result array
* Author:   Benedikt Forchhammer <b.forchhammer /AT\ mind2.de>
*/
$.fn.dataTableExt.oApi.fnGetColumnData = function (oSettings, iColumn, bUnique, bFiltered, bIgnoreEmpty) {
    // check that we have a column id
    if (typeof iColumn == "undefined") return new Array();

    // by default we only wany unique data
    if (typeof bUnique == "undefined") bUnique = true;

    // by default we do want to only look at filtered data
    if (typeof bFiltered == "undefined") bFiltered = true;

    // by default we do not wany to include empty values
    if (typeof bIgnoreEmpty == "undefined") bIgnoreEmpty = true;

    // list of rows which we're going to loop through
    var aiRows;

    // use only filtered rows
    if (bFiltered == true) aiRows = oSettings.aiDisplay;
    // use all rows
    else aiRows = oSettings.aiDisplayMaster; // all row numbers

    // set up data array    
    var asResultData = new Array();

    for (var i = 0, c = aiRows.length; i < c; i++) {
        iRow = aiRows[i];
        var aData = this.fnGetData(iRow);
        var sValue = aData[iColumn];

        // ignore empty values?
        if (bIgnoreEmpty == true && sValue.length == 0) continue;

        // ignore unique values?
        else if (bUnique == true && jQuery.inArray(sValue, asResultData) > -1) continue;

        // else push the value onto the result data array
        else asResultData.push(sValue);
    }

    return asResultData;
} 
} (jQuery));


function fnCreateSelect(aData) {
var r = '<select><option value=""></option>', i, iLen = aData.length;
for (i = 0; i < iLen; i++) {
    r += '<option value="' + aData[i] + '">' + aData[i] + '</option>';
}
return r + '</select>';
}

عندما قمت بتعيين نقطة توقف في fnfilter وأغير قيمة أحد مربعات المرشحات المنسدلة ، لا يتم ضرب نقطة الإيقاف ، لكنها تتعرض للضرب عندما قمت بتعيين واحدة في fncreateselect. أفعل شيئا خاطئا؟

هل كانت مفيدة؟

المحلول

أنا استخدم وأحب Datatables ، تحقق من هذا الرابط:

http://www.datatables.net/examples/api/multi_filter.html

و هذه:

http://datatables.net/examples/api/multi_filter_select.html

نصائح أخرى

الدفع مرشح جدول picnet. إذا كنت تفضل أن تبنيها بنفسك ، فإن هذا البرنامج التعليمي باستخدام jQuery لمعالجة وتصفية البيانات قد تبدأ.

ال jqgrid المكوّن الإضافي لبيانات الشبكة لديه هذه الوظيفة. يمكنك إلقاء نظرة على ذلك.

يمكنك العثور على المزيد حول البرنامج المساعد للبحث هنا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top