0

我是 OpenBravo ERP 系统的新手,所以如果我发布了一个明显的问题,我很抱歉。

我在 Openbravo ERP 中创建了一个自定义 MDI 视图,在 Smarclient 的包含订单的列表网格中添加了一些用于过滤产品名称的输入字段。我创建了一个 Order 数据源并将其绑定到 Smartclient 网格。我想要实现的是按添加在输入文本字段中的产品名称过滤网格中的订单列表。我尝试了几种方法,但没有成功。所以我开始质疑是否可以在网格的 fetchData 函数中的 AdvancedCriteria 中添加连接表?

这是我的代码片段:

isc.ELB_MainView.addProperties({
  form: null,
   grid: null,
   initWidget: function () {
    this.grid = isc.OBGrid.create({
     setDataSource: function (ds, fields) {
     var selectedFields = [],
     fs = OB.Constants.FIELDSEPARATOR,
     ident = OB.Constants.IDENTIFIER,
     fieldNames = ['documentNo', 'documentStatus', 'orderDate', 'accountingDate',        'businessPartner'+fs+ident, 'currency'+fs+ident],
     i, j;
     for(i = 0; i < fieldNames.length; i++) {
        for(j in ds.fields) {
           if(ds.fields.hasOwnProperty(j) && j === fieldNames[i]) {
              selectedFields.push(ds.fields[j]);
           }
        }
     }
       this.Super('setDataSource', [ds, selectedFields]);
     this.fetchData();
  }
  });
  this.form = isc.DynamicForm.create({
   fields: [{name : "productName",
          title: "Product Name", 
          type : "text", 
          width: '100%', 
          change: function(form, item, value, oldValue){
             form.main.grid.invalidateCache();
             form.main.grid.fetchData({
                _constructor: 'AdvancedCriteria',
                operator: 'and',
                criteria: {
                   'fieldName': 'orderLineList.product.name',
                   'operator': 'equals',
                   'value': value
                }
            });
        this.Super('change', arguments);
   }}],
   main: this
  });


  OB.Datasource.get('Order', this.grid, null, true);

 this.addMember(this.form);
  this.addMember(this.grid);

 this.Super("initWidget", arguments);
}

});

提前Tnx。

4

1 回答 1

0

SmartClient 论坛上发布了类似的问题,关于Joining tables for listgrid datasource

这是我的解决方案,肯定会解决您的问题:

创建通过连接网格所需的表创建的视图并将其用作数据源

于 2014-03-06T22:30:55.723 回答