Перебирать поля InfoPath по типу - PullRequest
1 голос
/ 25 октября 2011

Есть ли способ перебирать поля infopath по типу?

Как, итерация по всем полям даты или всем целочисленным полям и т. Д. Я пытаюсь написать класс, который выполняет проверку поля в коде позади формы, так как проверка поля OOTB не работает при отправке формыиз кода позади.Я хотел бы написать общий класс, который можно использовать для любой формы infopath.Спасибо.

Ответы [ 2 ]

1 голос
/ 03 ноября 2011

Вы не можете сделать это только с помощью XML формы InfoPath.
Вы должны зависеть от myschema.xsd (вы можете получить этот файл, переименовав свой xsn-файл в cab и распаковать его или выбрав «Export Source Files» в меню публикации). Теперь, когда у вас есть файл xsd и что имена полей уникальны в форме InfoPath, вы можете сделать следующее:
1- Получить имя файла из формы InfoPath
2- Проверьте тип данных этого поля в файле myschema.xsd
3- Сделайте проверку.

Короче говоря, файл myschema.xsd хранит типы данных
<xsd:element name="CurrentAccount" nillable="true" type="xsd:boolean"/>
Но форма InfoPath просто хранит значение, которое может переводиться в несколько типов данных (я просто воспринимаю это как строку)
<my:CurrentAccount>false</my:CurrentAccount>

0 голосов
/ 25 октября 2011

По возможности это связано с Linq. Например. у вас есть список объектов, в которые вы помещаете разные вещи, но вы перебираете только строки:

var fields = new List<object>();
fields.Add(42);
fields.Add("one");
fields.Add(84);
fields.Add("two");
foreach (string s in fields.OfType<string>())
{
    Debug.Print(s);
}

Вы попадете в окно вывода:

one
two
...