2

Sharepointリストからのデータをフィールドに入力するInfopathフォームを作成しようとしています。Sharepointデータソースから値が入力されるドロップダウンリストボックスを設定しました。その部分は正常に機能します。ここで、ユーザーがリストから項目の1つを選択すると、他の文字列フィールドに自動的に入力されるようにします。
そこで、これを行うためのルールを設定しました。Sharepointリストから属性を取得するためのXPath式を作成しました

xdXDocument:GetDOM("Base Printers")
/dfs:myFields/dfs:dataFields/dfs:Base_Printers/@PNP_String

問題は、これが常にリストの最初の項目から属性(PNP_String)を取得することです。ユーザーの選択に基づいて、適切なプリンター(Base_Printers)を追加します。したがって、Base_Printersにインデックスを付けてから、PNP_Stringを選択する必要があります。だから私はこれを試しました

.../dfs:Base_Printers[2]/@PNP_String

2番目の項目にインデックスが付けられ、そのPNP文字列が返されます。これはすばらしいことです。
しかし、ユーザーが選択した要素にインデックスを付ける必要があるため、これを試しました。

.../dfs:Base_Printers[@Printer=my:basePrinter]/@PNP_String

ここで、@ Printerは共有ポイントリストの属性であり、my:basePrinterはドロップダウンリストのローカルinfopath変数です。そして、それは私には何もしません。リテラル値を試したとき:

.../dfs:Base_Printers[@Printer='XYZ']/@PNP_String

正しいpnp文字列を選択しました。
だから私の質問は、ユーザーの選択に基づいてそのプリンターの配列にインデックスを付けるにはどうすればよいですか?

ありがとう

4

2 に答える 2

1

私はそれを理解したと思います。

xdXDocument:GetDOM("Base Printers")/dfs:myFields/dfs:dataFields
/dfs:Base_Printers[@Printer = current()]/@PNP_String

奇妙な理由で、次のコマンドを使用すると機能します。

@Printer = current()

ただし、使用する場合はそうではありません。

@Printer = my:basePrinter

current()とmy:basePrinterの両方が同じ文字列を返しますが。

奇妙さ...

于 2009-02-19T15:58:59.187 に答える
0

デフォルトでは、XPathは周囲の環境からコンテキスト(ローカルinfopath変数など)を継承しません。

XSLTでは、グローバルな(つまり、ルートノードで定義された)xsl:variable宣言を入力できるメカニズムを提供するのはプロセッサの責任であり、XPathで$nameとして使用できます。

InfoPathがわからないため、具体的に説明することはできませんが、文書化する必要があります(例を介して間接的にのみ使用する場合でも)...

また、述語([]内)で、独自の述語を持つ完全なロケーションパスを使用できることにも注意してください。したがって、選択した値が同じドキュメントで使用できる場合は、次のように使用できます。

.../dfs:base_printers[@printer=/theform/theCombo/Values[@selected=true]]
于 2009-02-19T14:57:39.170 に答える