1

小さなアプリがあり、いくつかの問題を修正する必要があります。

  1. デフォルトのソート順でフィールドを設定する必要があります。これは私が今持っているコードです

        $crud->grid->getColumn('JOB_NO')->makeSortable();
    

    グリッドには並べ替えアイコンが表示されますが、このフィールドの既定の並べ替えを降順に設定したいと考えています。

  2. JOB_NO フィールドには、英数字のジョブ番号が含まれます: N999、N1000、N1001 など...

並べ替えは機能していますが、N999 が一番上にあり、N1000 と N1001 はページネーションの数ページ後にしか見つかりません。より高いジョブ番号が一番上に留まるようにソートを設定するにはどうすればよいですか? 基本的に最初の文字を無視しますか?ありがとう

4

2 に答える 2

1

1) これを行うには 2 つのオプションがあります。

最初のオプションは、ソートをグリッドに直接追加するのではなく、モデルに追加することです。

次に、次を使用できます。

$model->addField('foo')->sortable(true);
$model->setOrder('foo','desc');

2 番目のオプション (グリッド レベルでこれを行う必要がある場合):

$grid->getColumn('foo')->makeSortable('-');

// or even (not sure, didn't test this)
$grid->makeSortable('-foo');

2) これを正確に行う方法はわかりませんが、次のいずれかを試すことができます。

  • モデルに新しい計算フィールドを作成し、SUBSTR(JOB_NO,1) のように計算します - 最初の文字を取り除きます。次に、このフィールドで並べ替えます。
  • そのコードの数値部分のみをデータベースに保存し、ビューレベルでのみ数値の前に「N」を追加します(たとえば、グリッド列フォーマッター)。
  • 何らかの方法で次のようにすることもできます: SELECT job_no FROM jobs ORDER BY length(job_no),job_no
于 2013-06-01T23:15:08.630 に答える