Quantcast
Channel: SmartClient Forums
Viewing all articles
Browse latest Browse all 4756

ListGrid editorType fields not validated

$
0
0
I've got a CanvasItem built on a ListGrid, which in turn uses custom editors for its fields. My custom item (MultipleItem) represents an array, and the validation should restrict it to be length 3. Field A is not validated, while field B is validated as I expect.

Why is the validator inside of MultipleItem not being executed when the row is being validated?

I'm using "v9.1p_2015-07-08/Pro Deployment".

Code:

isc.ClassFactory.defineClass("MultipleItem","TextItem");
isc.MultipleItem.addProperties({
  multiple:true,
  detail:false,
  transformInput: function(form,item,value,oldValue){
      if(value == null){
        return null;
      }
      return value.replace(/ /g,'').split(',');
  },
  validators: [
      {
        type:"custom",
          condition:function(item,validator,value,record){
            console.log("validating length1:",value.length);
            return value.length == item.arrayLength;
          }
      }
  ],
});

var CustomFields = [
  {hidden: true,name: "id",primaryKey: true},
  {name:"salign",title:"A",editorType:"MultipleItem",arrayLength:3},
  {name:"talign",title:"B",editorType:"MultipleItem",arrayLength:3,
    validators: [
      {
          type:"custom",
          condition:function(item,validator,value,record){
            console.log("validating length2:",value.length);
            return value.length == item.arrayLength;
          }
      }
    ]
  },
];

isc.ClassFactory.defineClass("CustomItem", "CanvasItem");
isc.CustomItem.addProperties({
  shouldSaveValue:true,
  createCanvas: function() {
      var initial = this.getValue();
      var lg = isc.ListGrid.create({
        dataSource: isc.DataSource.create({
            clientOnly:true,
            fields:CustomFields
        }),
        saveLocally:true,
        data:initial,
        canEdit: true,
        editByCell: true,
        fields:CustomFields,
      });
      return lg;
  },
  showValue : function (displayValue, dataValue) {
      if (this.canvas == null) return;
      var lg = this.canvas.members[0];
      lg.setData(dataValue);
      this.canvas.show();
  },
  getValue: function(){
      try {
        var lg = this.canvas.members[0];
        this.storeValue(lg.getOriginalData());
      } catch(err){}
      var orig = this.Super("getValue",arguments);
      if(orig == null){
        return orig;
      }
      var data = Array();
      for(var i=0; i<orig.length; i++){
        var obj = Object();
        for(var f=0; f<CustomFields.length; f++){
            var name = CustomFields[f]["name"];
            if(name in orig[i]){
              obj[name] = orig[i][name];
            }
        }
        data.push(obj);
      }
      return data;
  }
});

var testData = [
  {id:1,salign:['a1','a2','a3'],talign:['b1','b2','b3']},
]

var df = isc.DynamicForm.create({
  width:300,
  height:200,
  autoDraw:true,
  numCols:1,
  colWidths:["*"],
  fields:[{name:"tpi",showTitle:false,
            editorType:"CustomItem",
            height:200,
            defaultValue:testData}]
});


Viewing all articles
Browse latest Browse all 4756

Trending Articles