ユーザーが InfoPath 2003 で繰り返し保存セクションを削除するのを止めることができました。私のコードは InfoPath 2010 では機能しません。誰か、以下のコードを書き直す新しい方法を見つけられますか?
InfoPath 2003 では、繰り返しセクションの OnBeforeChange 内で、DataDOMEvent プロパティの e.Site および e.Source をチェックして、誰がそのイベントを発生させたかを確認できました。例えば:
<ParentElement>
…
<RepeatingSection IsSave=”false” …>
<Field 1 />
<Field 2 />
<Field 3 />
<Field 4 />
<Field 5 />
<Field 6 />
</RepeatingSection>
…
</ParentElement>
Dim isRowModification As Boolean
Dim IsSave As Boolean
…
isRowModification = (e.Source Is e.Site)
If IsSave AndAlso isRowModification Then
e.ReturnMessage = "You cannot modify or remove this Section."
e.ReturnStatus = False
End If
InfoPath 2010 では、XmlChangingEventArgs に e.Source プロパティがありません。繰り返しセクションの変更イベントがフィールドの変更または繰り返しセクション自体によって発生した場合、e.Site は常に繰り返しセクションを指します。フィールド 5 が繰り返しセクション変更イベントを発生させるかどうかを知る方法が必要です。