Как я делаю использование сортировки таблицы CodeIgniter?

Вопрос не будет полным, если мы не упомянем об альтернативных методах для обхода объектов.

В настоящее время многие известные библиотеки JavaScript предоставляют свои собственные методы для итерации над коллекциями, то есть над массивов , объектов и в виде массива . Эти методы удобны в использовании и полностью совместимы с любым браузером.

  1. Если вы работаете с jQuery, вы можете использовать метод jQuery.each() . Его можно использовать для беспрепятственной итерации по обоим объектам и массивам:
    $.each(obj, function(key, value) {
        console.log(key, value);
    });
    
  2. В Underscore.js вы можете найти метод _.each() , который выполняет итерацию по списку элементов, каждый из которых, в свою очередь, передается в заданную функцию (обратите внимание на порядок аргументов в функции iteratee !):
    _.each(obj, function(value, key) {
        console.log(key, value);
    });
    
  3. Lo-Dash предоставляет несколько методов для итерации поверх свойств объекта , Основной _.forEach() (или его псевдоним _.each()) полезен для циклического перемещения по обоим объектам и массивам, однако (!) Объекты с свойством length рассматриваются как массивы, и чтобы избежать такого поведения, предлагается использовать методы _.forIn() и _.forOwn() (они также имеют первый аргумент value):
    _.forIn(obj, function(value, key) {
        console.log(key, value);
    });
    
    _.forIn() выполняет итерацию по и унаследовал перечислимые свойства объекта, тогда как _.forOwn() выполняет итерацию только над собственными свойствами объекта (в основном проверяя функцию hasOwnProperty). Для простых объектов и литералов объектов любой из этих методов будет работать нормально.

Как правило, все описанные методы имеют одинаковое поведение с любыми поставленными объектами. Кроме того, использование нативного цикла for..in обычно будет быстрее , чем любая абстракция, например jQuery.each(), эти методы значительно проще в использовании, требуют меньше кодирования и обеспечивают лучшую обработку ошибок.

9
задан imlouisrussell 30 December 2011 в 01:21
поделиться

4 ответа

Я использовал этот метод: http://codeigniter.com/forums/viewthread/45709/#217816

Я также развернул его для установки cookie, базирующихся от вида поэтому, когда кто-то возвращается, таблица отсортирована то же как прежде.

5
ответ дан 4 December 2019 в 21:52
поделиться

Если Вы соглашаетесь с сортировкой на стороне клиента, плагин Tablesorter для jQuery довольно хорош.

2
ответ дан 4 December 2019 в 21:52
поделиться

Я столкнулся с этим с довольно сложной таблицей. Твердая часть была то, что таблица могла расти/уменьшать в зависимости от определенных переменных!! Большая боль :(

Вот то, как я обработал его..

Скорректированный system/application/config/config.php для разрешения символа запятой в URI:

$config['permitted_uri_chars'] = 'a-z 0-9~%.:_\-,';

Скорректируйте мой контроллер с функцией сортировки:

function sorter() {
  //get the sort params
  $sort = explode(",",$this->uri->segment(3)); //the 3rd segment is the column/order
  //pass the params to the model
  $data = $this->model_name->get_the_data($sort[0],$sort[1]);
  $this->_show($data);
}
function _show($data) {
  //all the code for displaying your table
}

Я упростил, но Вы получаете идею. Цель состоит в том, чтобы иметь URL как это:

/controller/sorter/columnname, порядок сортировки

Вызовы функции сортировщика другая внутренняя функция для контакта с логикой дисплея/шаблона/представления - это - задание, должен иметь дело с сортировкой, называют и получают соответствующие данные из модели.

Конечно, это могло быть уменьшено до просто Вашей текущей функции:

function showGrid() {
  $sort = $this->uri->segment(3);
  if ($sort) {
    //get the data sorted
  } else {
    //get the data the default way
  }
  //rest of your view logic
}

Тем путем Вы даже не нуждаетесь в отдельной функции - и можете использовать третий сегмент для определения сортировки.

1
ответ дан 4 December 2019 в 21:52
поделиться

Я недавно добавил этого сортировщика Таблицы (который использует Прототип) к набору моих страниц. Это быстро и довольно легко реализовать.

0
ответ дан 4 December 2019 в 21:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: