2013-04-17 63 views
0

我使用沒有數據源的ListGrid。我對某些領域使用驗證器。 但是然後我添加新記錄,直到我更改新記錄中的值時才進行驗證。 我不想使用grid.startEditingNew(),因爲如果我不更改它們,它們沒有Record實例。在SmartGWT ListGrid中驗證新行

ListGrid grid = new ListGrid(); 
    grid.setCanEdit(true); 
    ListGridField field1 = new ListGridField("attr1", "Name1"); 
    ListGridField field2 = new ListGridField("attr2", "Name2"); 

    CustomValidator validator = new CustomValidator() { 

       @Override 
       protected boolean condition(Object value) { 
        Logger.log("Validate: " + value); 
        return true; 

       } 
      }; 
    field1.setValidators(validator); 
    field2.setValidators(validator); 
    grid.setFields(field1, field2); 

    Label addButton = new Label(); 
    //... 
    addButton.setTooltip("Add"); 
    addButton.addClickHandler(new ClickHandler() { 
       public void onClick(final ClickEvent clickEvent) { 
        ListGridRecord record = new ListGridRecord(); 
        grid.addData(record); 
      // we can use grid.startEditingNew() instead 
       } 
    }); 

如何強制驗證新行?調用grid.validateRow(grid.getRecords().length - 1)不會導致調用驗證者。

回答

0

爲什麼不驗證設置爲新Record實例(來自FormItems?)的值?
您可以在ListGridField和FormItem上重用驗證器。