Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

Сортировка по столбцам

00 голосов
1
Доброго времени суток !

Опыт в написании модулей для админки пока маленький, поэтому прошу помочь.
Сегодня возник вопрос следующего характера. Написал модуль, частью которого был вывод элементов в виде таблицы (аналогично инфоблоку). Получилось все, кроме сортировки по столбцам. При нажатии на заголовок столбца сортировка не делается. Приведу часть кода :

Код
$sTableID = "tableID"; // ID таблицы
$oSort = new CAdminSorting($sTableID, "ID", "desc"); // объект сортировки
$lAdmin = new CAdminList($sTableID, $oSort); // основной объект списка


$filter = new CAdminFilter(
    $sTableID."_filter", 
    array(
        "ID",
    )
);

function CheckFilter()
{
  global $FilterArr, $lAdmin;
  foreach ($FilterArr as $f) global $$f;
  
  return count($lAdmin->arFilterErrors)==0; 
}

// *********************** /CheckFilter ******************************* //

$FilterArr = Array(
  "find",
  "find_id",
  "find_link_site",
  "find_points",
  "find_total",
  );

$lAdmin->InitFilter($FilterArr);

if (CheckFilter())
{
  $arFilter = Array(
    "ID"    => ($find!="" && $find_name == "id"? $find:$find_id),
    "LINK_SITE"    => $find_link_site,
    "POINTS"    => $find_points,
    "TOTAL"  => $find_total,
  );


  $sql = 'SELECT ... ORDER BY ID desc';
  $audit_list = $DB->Query($sql, false, "File: ".__FILE__."<br>Line: ".__LINE__);
  $audit_list = new CAdminResult($audit_list, $sTableID);



$lAdmin->AddHeaders(array(
  array(  "id"    =>"ID",
    "content"  =>"ID",
    "sort"    =>"id",
    "align"    =>"center",
    "default"  =>true,
  ),
  array(  "id"    =>"id_user",
    "content"  => "Юзер",
    "sort"    =>"id_user",
    "align"    =>"left",
    "default"  =>true,
  ),
  array(  "id"    =>"link_site",
    "content"  => "Сайт",
    "sort"    =>"link_site",
    "align"    =>"left",
    "default"  =>true,
  ),
    array(  "id"    =>"total",
    "content"  => "Итог",
    "sort"    =>"total",
    "align"    =>"left",
    "default"  =>true,
  ),
  
      array(  "id"    =>"percentage",
    "content"  => "Процент",
    "sort"    =>"percentage",
    "align"    =>"left",
    "default"  =>true,
  ),
));



while($myrow = $audit_list->NavNext(true, "f_")):

...

$row =& $lAdmin->AddRow($myrow['id'], $myrow); 

  $row->AddViewField("ID", $myrow['id']);
  $row->AddViewField("id_user", $myrow['link_user']);
  $row->AddViewField("link_site", $myrow['link_site']); 
  $row->AddViewField("total", $myrow['total']); 
  $row->AddViewField("percentage", $myrow['percentage']); 

...

endwhile;


и т.д.

Против мануалы понятно, что данные из таблиц вытаскиваются по средствам метода GetList и подобных, но код таких методов довольно сложен.
Можно ли обойтись без написания таких методов в данном случае (может быть нужно изменить запрос, но как?) ? Вообще, как здесь проще всего реализовать сортировку по столбцам ?

Спасибо !
спросил 21 Май, 13 от Miedz (220 баллов)

1 Ответ

00 голосов
Цитата
id6525576 пишет:
$sql = 'SELECT ... ORDER BY ID desc';

Вот Ваша сортировка. Без написания GetList не обойтись.
ответил 21 Май, 13 от Pomnep (13,960 баллов)

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

0 голосов
1 ответ
0 голосов
1 ответ
0 голосов
3 ответов
спросил 02 Апр, 14 от JAG (100 баллов)
0 голосов
2 ответов
спросил 22 Март, 14 от DoKeR (100 баллов)