Определение расширенных критериев для таблиц соединения в компоненте сетки smartclient для Openbravo ERP.

Я новичок в системе OpenBravo ERP, поэтому извините, если задал очевидный вопрос.

Я создал собственное представление MDI в Openbravo ERP, добавил поле ввода для фильтрации имени продукта в сетке списка Smarclient, которая содержит заказы. Я создал источник данных Order и привязал его к сетке Smartclient. Чего я хочу добиться, так это отфильтровать список заказов в сетке по имени продукта, которое добавляется в текстовое поле ввода. Я пробовал с несколькими подходами, но безуспешно. Итак, я пришел к вопросу, можно ли добавить таблицу соединений в AdvancedCriteria в функцию fetchData сетки?

Вот фрагмент моего кода:

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 заранее.


person user2563562    schedule 12.01.2014    source источник


Ответы (1)


Аналогичный вопрос размещен на SmartClient Forum о объединении таблиц для источника данных listgrid< /сильный>.

Вот мое решение, которое определенно решит вашу проблему:

Создайте представление, созданное путем объединения таблиц, необходимых для сетки, и используйте его в качестве источника данных

person Braj    schedule 06.03.2014