2009-04-20 12 views
2

私はInfoPathの(変更要求)フォームを設計しています:のInfoPathオートナンバー型フィールド

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

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

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

TIA!

答えて

2

これを行うための方法はありませんが、データベースクエリまたはSPListクエリを実行する方法はいくつかあります。しかし、このような要求はどういうわけか他の問題の回避策のようなにおいがします。増加する数のため 一般的な例は以下のとおりです。

  • 固有のID
  • IDが推測可能な(タイムスタンプがありません)
を作る要求
  • (IDと同じ)外部リストによって参照可能なメイク
  • を数えます

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

    推測可能なIDが必要な場合は、外部システムがリクエストにアクセスしたり参照したりする必要があるため、IDが必要です。その場合、プッシュ方向をプッシュ方向に変更(たとえばワークフローを使用)してください。または、他のシステムにフォームで呼び出すことができる「getID」機能を提供させて、既知のIDを取得してください。

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

  • 0

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

    これの欠点は、リストをExcelにエクスポートした場合、トークンが数値に変換されないことです。しかし、それはスクリーン上のレンダリングのための良い解決策です。

    オートナンバー型のタグが入っているコンテナのクラスを調べるには、Firebugを使用します。 たぶん、あなたはこのような何かを行うことができます:

    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); 
          } 
         } 
        } 
    } 
    
    関連する問題