如何在xpage上过滤dojo网格?

时间:2012-04-05 03:58:36

标签: xpages dojox.grid

我们如何过滤从REST服务组件获取其数据的dojo网格(extlib组件)?我有一个网格从REST服务组件正确加载了视图中的数据。我还在xpage上有一个下拉列表,用户可以在其中选择一个值,该值是同一视图中其中一列的dbcolumn。我已经尝试将REST服务键值设置为viewScope.filterCat01(这是组合框的变量),我也尝试在按钮中设置过滤器(BY是字段/列名称)但似乎没有过滤它。有任何想法吗?在我检查网格属性时按钮,它确实有效,所以我知道网格对象是有效的 - 但过滤器似乎没有做任何事情。我也尝试过做grid._refresh()以及在REST服务组件中设置Keys而没有运气。有没有特殊的方法来触发过滤器?

var filterValue = XSP.getElementById("#{id:comboBox2}").value;
var grid = dijit.byId("#{id:djxDataGrid1}");
grid.filter({ By: filterValue});

1 个答案:

答案 0 :(得分:1)

这绝对是你需要拼凑一千条神秘线索来解决问题的事情之一(Domino--永远不会!)。无论如何,去年我不得不解决这个问题。以下是“搜索”按钮的示例:

var searchText = dojo.byId('#{id:searchText}').value.replace(/"/g, '|"');
if (searchText) {
  var ftSearchText = '[Title] CONTAINS "' + searchText + '" OR [Description] CONTAINS "' + searchText + '" OR [URL] CONTAINS "' + searchText + '"';
  dijit.byId('#{id:grid}').filter('?search=(' + ftSearchText + ')', false);
} else {
  dojo.byId('#{id:reset}').click();
}

正如您所看到的,当应用过滤器时,它正在进行ft搜索。关键是将“?search =”放在过滤器字符串的开头。

这里是'重置'按钮示例:

dojo.byId('#{id:searchText}').value="";
var grid = dijit.byId('#{id:grid}');
grid.filter("",true);
grid.store.close();
grid._refresh();

这是用8.5.2开发的。使用dojo 1.6.1可能会有一些更简洁的方法来处理8.5.3。

享受!