2009-04-20 10 views
2

Ich bin der Gestaltung ein InfoPath (Change Request) Form:InfoPath Autofeld

1) Wie kann ich ein Textfeld hinzufügen, die automatisch auf die nächste Zahl erhöht, wenn ein neues Formular erstellt wird (das Hinzufügen eines neuen Change Request Formular in die Formularbibliothek).

2) Wie lade ich Informationen von einem vorhandenen Formular in das neue Formular.

HINWEIS: Das Feld befindet sich nicht in einer sich wiederholenden Tabelle. Ich muss die nächste Change Request-Nummer auf jedem neuen Change Request-Formular generieren.

TIA!

Antwort

2

Es gibt keine eingebaute Möglichkeit, dies zu tun, aber es gibt mehrere Möglichkeiten, um das zu erreichen, was Sie wollen (Datenbankabfrage oder SPList-Abfrage). Aber diese Art von Anfrage riecht irgendwie nach einem Workaround für ein anderes Problem. Häufige Fälle für die Zahlen zu erhöhen, sind:

  • eindeutige IDs
  • zählen die Anfragen
  • make beziehbar durch externe Liste (wie bei ID)
  • IDs erratbar machen (Zeitstempel sind nicht)

Wenn Sie eine ID benötigen: In den meisten Fällen müssen Sie keine Ganzzahl-IDs verwenden. Verwenden Sie einfach den Formulartitel als natürliche ID. (z. B. Kunde + Zeitstempel)

Wenn Sie erratbare IDs benötigen, benötigen Sie diese, weil ein externes System auf die Anfrage zugreifen oder auf sie verweisen möchte. Versuchen Sie in diesem Fall, die Pull-Richtung in eine Push-Richtung zu ändern (z. B. mithilfe von Workflows) oder lassen Sie Ihr anderes System eine "getID" -Funktion bereitstellen, die von Ihrem Formular abgerufen werden kann (keine Raten erforderlich).

Wie auch immer - für mich sieht es so aus, als wollten Sie dies erreichen, um ein anderes Problem zu lösen. Vielleicht gibt es auch für dieses Problem verschiedene Lösungen?

0

Sie könnten ein Token in Ihre Texttitel in dem Formular eingeben, für das Sie eine automatische Nummerierung wünschen, z. B. # num #, und dann javascript oder jquery verwenden, um diese Tokens zu finden und durch inkrementierte Zahlen zu ersetzen.

Der Nachteil ist, dass die Token nicht in Zahlen übersetzt werden, wenn Sie die Liste nach Excel exportieren. Aber es ist eine gute Lösung für das On-Screen-Rendering.

Verwenden Sie Firebug, um die Klasse des Containers herauszufinden, in dem sich die Tags für die automatische Nummerierung befinden. Vielleicht könnten Sie etwas wie folgt tun:

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); 
      } 
     } 
    } 
}