【问题标题】:JQuery Bootgrid, search doesn't find formatted columnsJQuery Bootgrid,搜索找不到格式化的列
【发布时间】:2016-10-11 09:57:19
【问题描述】:

我有一个 JQuery Bootgrid,其中包含两个格式化程序,需要正确格式化日期和欧元值列(在行中,我将日期存储为字符串,格式为 YYYYMMDD,以便在用户选择排序该列时正确排序该列,而表格输出的日期格式为 DD/MM/YYYY。另外,我只是将 € 符号添加到欧元输出值中。

简单地说,JQuery Bootgrid 的默认搜索功能会搜索原始值,而不是格式化的值,而我当然需要让用户能够搜索格式化的值。如果您有解决方案甚至解决方法,请帮助我!

【问题讨论】:

    标签: jquery jquery-plugins jquery-bootgrid


    【解决方案1】:

    如果您正在处理数据源,则始终可以从后端(即 json 提供程序)规范化搜索。

    增强现有表 - 好吧,Grid.prototype.search 就是功能。

    【讨论】:

      【解决方案2】:

      我遇到了类似的问题,搜索正在查看原始数据而不是格式化数据,但需要原始数据进行排序。

      我所做的是在格式化的列上设置data-searchable="false",然后添加一个新列,其中日期已经由我自己格式化。然后将此新列设置为data-visible="false"。表结构大致如下:

      <table>
          <thead>
              <tr>
                  <th data-column-id="date" data-formatter="dateNoTimeFormat" data-searchable="false">Report Date</th>
                  <th data-column-id="formattedDate" data-visible="false"></th>
              </tr>
          </thead>
          <tbody>
              <tr>
                  <td><?php echo $reportDate; ?></td>
                  <td><?php echo date('d/m/Y', strtotime($reportDate)); ?></td>
              </tr>
          </tbody>
      </table>
      

      默认情况下,bootgrid 搜索不包括隐藏列,因此源代码也需要稍作修改。 jquery.bootgrid.js(v1.3.1 中的第 172 行)中有一个函数 containsPhrase(row),其中有一个 if 语句读取:

      if (column.searchable && column.visible &&
          column.converter.to(row[column.id]).search(searchPattern) > -1)
      {
          return true;
      }
      

      &amp;&amp; column.visible 需要从代码中删除,这意味着搜索还将查看设置为隐藏的列。

      【讨论】:

      • 谢谢!我以前用另一种方法解决了,现在我不记得如何了。 :)
      • @1Garrett2010 没问题,我一直在寻找一段时间,但找不到任何东西,所以我想我会把它放在那里以帮助其他人! :)
      猜你喜欢
      • 1970-01-01
      • 2023-03-25
      • 2017-01-30
      • 2015-07-25
      • 2018-05-15
      • 1970-01-01
      • 1970-01-01
      • 2017-08-10
      • 1970-01-01
      相关资源
      最近更新 更多