Question (asked by a forum user): I have a Contact Selector control in a repeating table in a browser form. How do I validate that there's something in the Contact Selector control?
Suggested Solution:
First, how can you validate contact selector control?
Here is the solution:
Private int Validate()
{
XPathNavigator ContactSelectorField = this.CreateNavigator().SelectSingleNode(XPATH of Contact Selector, this.NamespaceManager);
if (ContactSelectorField.SelectChildren(XPathNodeType.Element).Count == 0)
{
returnValue = 0;
}
else if (ContactSelectorField.SelectChildren(XPathNodeType.Element).Count > 0)
{
ContactSelectorField = ContactSelectorField.SelectSingleNode("my:Person", this.NamespaceManager);
if (string.IsNullOrEmpty(ContactSelectorField.SelectSingleNode("my:DisplayName").Value.Trim()) ||
string.IsNullOrEmpty(ContactSelectorField.SelectSingleNode("my:AccountId").Value.Trim()) ||
string.IsNullOrEmpty(ContactSelectorField.SelectSingleNode("my:AccountType").Value.Trim()))
{
returnValue = 0;
}
}
}
In a repeating table, you can iterate through all items and validate the control. I mean it depends on your actual requirements. This is just a hint. Please use your own judgement.
XPathNavigator docNavigator = this.CreateNavigator();
XPathNodeIterator nodeIterator = docNavigator.Select("/my:myFields/my:group/my:repeatingGroup", this.NamespaceManager);
bool Status = true;
for (int i = 0; i < nodeIterator.Count; i++)
{
string strItemXPath = "/my:myFields/my:group/my:repeatingGroup[" + (i + 1) + "]" + "/my:"
Status = Validate(strItemXPath); //See modified Validate function below
}
Private int Validate(string path)
{
XPathNavigator ContactSelectorField = this.CreateNavigator().SelectSingleNode(path + "contactSelector", this.NamespaceManager); //contactSelector is the name of the contact selector control.
if (ContactSelectorField.SelectChildren(XPathNodeType.Element).Count == 0)
{
returnValue = 0;
}
else if (ContactSelectorField.SelectChildren(XPathNodeType.Element).Count > 0)
{
ContactSelectorField = ContactSelectorField.SelectSingleNode("my:Person", this.NamespaceManager);
if (string.IsNullOrEmpty(ContactSelectorField.SelectSingleNode("my:DisplayName").Value.Trim()) ||
string.IsNullOrEmpty(ContactSelectorField.SelectSingleNode("my:AccountId").Value.Trim()) ||
string.IsNullOrEmpty(ContactSelectorField.SelectSingleNode("my:AccountType").Value.Trim()))
{
returnValue = 0;
}
}
}
This is off the top of my head. You may have to tweak it before trying it.
No comments:
Post a Comment