2

infopath (変更要求) フォームを設計しています:

1)新しいフォームが作成されたときに次の番号に自動的にインクリメントされるテキスト ボックスを追加するにはどうすればよいですか (新しい変更要求フォームをフォーム ライブラリに追加します)。

2) 既存のフォームから新しいフォームに情報を取得するにはどうすればよいですか?

注: フィールドが繰り返しテーブル内にありません。新しい変更要求フォームごとに、次の変更要求番号を生成する必要があります。

ティア!

4

2 に答える 2

2

これを行う組み込みの方法はありませんが、目的を達成する方法がいくつかあります (データベース クエリまたは SPList クエリ)。しかし、この種の要求は、別の問題の回避策のような匂いがします。数値が増加する一般的なケースは次のとおりです。

  • 一意の ID
  • リクエストを数える
  • 外部リストから参照可能にする(IDと同じ)
  • ID を推測可能にします (タイムスタンプは推測できません)

ID が必要な場合: ほとんどの場合、整数 ID を使用する必要はありません。フォームのタイトルを自然な ID として使用するだけです。(例: 顧客 + タイムスタンプ)

推測可能な ID が必要な場合は、外部システムが要求にアクセスまたは参照する必要があるため、それらが必要になります。その場合、(ワークフローを使用して) プル方向をプッシュ方向に変更するか、既知の ID を取得するためにフォームから呼び出すことができる "getID" 関数を他のシステムに提供させます (推測は必要ありません)。

とにかく - 私にとっては、他の問題を解決するためにこれを達成したいようです。たぶん、その問題にもさまざまな解決策がありますか?

于 2009-04-20T06:56:52.913 に答える
0

#num# などの自動番号付けが必要なフォームのテキストタイトルにトークンを入力し、javascript または jquery を使用してそれらのトークンを見つけ、インクリメントされた数字に置き換えることができます。

これの欠点は、リストを Excel にエクスポートした場合、トークンが数値に変換されないことです。しかし、これはオンスクリーン レンダリングには適したソリューションです。

Firebug を使用して、autonumber タグを格納しているコンテナーのクラスを特定します。多分あなたはこのようなことをすることができます:

function TokenReplacement(){
    var ClassName = 'ms-formlabel';
    var elements = new Array();
    var elements = document.getElementsByTagName('td'); 
    var numerator=0;
    //Now do find and replace on everything else
    for(var e=0;e<elements.length;e++){
        thiselement = elements[e];
        if(thiselement.className == ClassName){
            //autonumber the questions by replacing the #num# token
            if(thiselement.innerHTML.search('#num#') > -1){
                numerator++
                var replacenum = "<b>" + numerator + ".&nbsp;&nbsp;</b>";
                thiselement.innerHTML = elements[e].innerHTML.replace('#num#',replacenum);  
            }
        }
    }
}
于 2012-09-17T14:54:50.843 に答える