I want to use DXValidationProvider
to check if Item
's name inside TextEdit
is unique. I've got collection of Item
objects available.
Pseudo code for Item class:
class Item {
public string Name {get;set;}
// ...
}
First I create ConditionValidationRule
:
List<Item> MyItems;
// .... MyItems is filled somewhere there. Its size is >0 for sure (checked with debugger).
// Binding works for sure too.
ConditionValidationRule uniqueItemNameRule = new ConditionValidationRule();
uniqueItemNameRule.CaseSensitive = false;
uniqueItemNameRule.ConditionOperator = ConditionOperator.NotAnyOf;
uniqueItemNameRule.ErrorText = "Name must be unique";
uniqueItemNameRule.ErrorType = ErrorType.Critical;
uniqueItemNameRule.Value1 = MyItems.Select(x => x.Name).ToList();
validationProvider.SetValidationRule(teName, uniqueItemNameRule);
However when I set Item's name which is not unique, validation passes anyway. I did not forget to perform the validation since other rules works as intended. DevExpress lacks documentation on validation rules so can't really have reading there.
For ConditionOperator.NotAnyOf
you must use ConditionValidationRule.Values
property instead of ConditionValidationRule.Value1
property.
Here is example:
uniqueItemNameRule.Values.AddRange(MyItems.Select(x => x.Name).ToList());