首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在AgileToolkit中对字母数字字段进行排序?

如何在AgileToolkit中对字母数字字段进行排序?
EN

Stack Overflow用户
提问于 2013-05-30 15:26:44
回答 2查看 365关注 0票数 1

我有一个小应用程序,我需要修复几个问题:

  1. 需要使用默认排序顺序设置字段。这是我现在的代码 $crud->grid->getColumn('JOB_NO')->makeSortable(); 网格显示排序图标,但我希望将此字段的默认排序设置为降序。
  2. JOB_NO字段包含字母数字作业编号: N999、N1000、N1001等。

这种方式是可行的,但是它将N999放在顶部,而N1000和N1001甚至不存在,只是在分页之后才能找到几个页面。我怎样才能使更高的工作人数保持在顶端呢?基本上忽略第一个字母?谢谢

EN

回答 2

Stack Overflow用户

发布于 2013-06-01 23:15:08

1)如何做到这一点有两种选择。

第一个选项是将排序添加到模型,而不是直接添加到网格。

然后你可以使用:

代码语言:javascript
复制
$model->addField('foo')->sortable(true);
$model->setOrder('foo','desc');

第二个选项(如果您希望或必须在网格级别这样做):

代码语言:javascript
复制
$grid->getColumn('foo')->makeSortable('-');

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

2)不确定如何做到这一点,但您可以尝试以下方法之一:

  • 在模型中创建新的计算字段,并像SUBSTR(JOB_NO,1) -条形第一个字符那样计算它。然后按这个字段排序。
  • 仅在数据库中保存该代码的数字部分,然后仅在视图级别上的数字之前添加"N“(例如,网格列格式化程序)。
  • 注意,您也可以这样做:从作业顺序中选择job_no ( job_no ),job_no
票数 1
EN

Stack Overflow用户

发布于 2013-06-04 08:54:49

我建议你有一个单独的字段来分类。

首先在数据库和模型内部创建"foo_sort“字段。将其设置为系统字段,以便在默认情况下不会出现在UI中:

代码语言:javascript
复制
$model->addField('foo_sort')->system(true);
$model->setOrder('foo_sort');

然后创建一个钩子,在保存模型之前计算字段的值:

代码语言:javascript
复制
$model->addHook('beforeSave',function($m){
    $m['foo_sort']=substr(0,1,$m['foo']);
});

您不需要做任何其他事情,可能需要手动更新数据库中的现有记录。此方法可用于维护排序字段的许多其他场景,例如从全文搜索数据中去掉HTML。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16840111

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档