タイプごとにInfoPathフィールドを反復処理する方法はありますか?
のように、すべての日付フィールド、またはすべての整数フィールドなどを繰り返します。コードビハインドからフォームを送信するとOOTBフィールド検証が機能しないため、フォームの背後にあるコードでフィールド検証を実行するクラスを作成しようとしています。任意のinfopathフォームに使用できるジェネリッククラスを作成したいと思います。ありがとう。
タイプごとにInfoPathフィールドを反復処理する方法はありますか?
のように、すべての日付フィールド、またはすべての整数フィールドなどを繰り返します。コードビハインドからフォームを送信するとOOTBフィールド検証が機能しないため、フォームの背後にあるコードでフィールド検証を実行するクラスを作成しようとしています。任意のinfopathフォームに使用できるジェネリッククラスを作成したいと思います。ありがとう。
これは、InfoPathフォームのXMLのみでは実行できません。
myschema.xsdに依存する必要があります(このファイルは、xsnファイルの名前をcabに変更して抽出するか、公開メニューから[ソースファイルのエクスポート]を選択することで取得できます)。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>
大きな可能性は、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