Jak používat skript pro kaskádě v tabulkách, které mají vztah seznam–podrobnosti v aplikaci InfoPath

Překlady článku Překlady článku
ID článku: 892952 - Produkty, které se vztahují k tomuto článku.
Rozbalit všechny záložky | Minimalizovat všechny záložky

Úvod

Tento článek popisuje způsob použití skriptu kaskádové odstranění tabulek mají vztah seznam–podrobnosti v aplikaci Microsoft Office InfoPath. Pomocí tohoto kódu můžete odstranit položky podrobností propojené předlohy položku pomocí pole klíče při odstranění předlohy položky.

Další informace

Společnost Microsoft poskytuje ukázky programování pouze pro ilustraci, bez žádné záruky výslovně uvedené nebo odvozené,. včetně, bez omezení, odvozených záruk vztahujících se k obchodovatelnosti nebo vhodnosti pro určitý účel. Tento článek předpokládá, že uživatel je obeznámen s programovacím jazykem, který je předmětem ukázky, a s nástroji použitými pro vytvoření a ladění skriptu. Pracovníci technické podpory společnosti Microsoft mohou vysvětlit funkce určitého postupu, nemohou však následující příklady rozšířit o další funkce nebo konstrukce podle konkrétních požadavků uživatele. K vytvoření tabulek mají vztah seznam–podrobnosti související podrobná položky jsou odstraněny při odstranění položky předlohy, postupujte takto:
  1. Spustit aplikaci InfoPath a otevřít nový prázdný formulář. Postupujte takto:

    Pro aplikaci InfoPath 2007
    1. V levém podokně dialogového okna Vyplnit formulář klepněte na tlačítko Navrhnout šablonu formuláře.
    2. V návrhovém okně šablonu formuláře klepněte na tlačítko prázdnou a potom klepněte na tlačítko OK.
    Pro aplikaci InfoPath 2003
    1. V levém podokně dialogového okna Vyplnit formulář klepněte na tlačítko Navrhnout formulář.
    2. V pravém podokně klepněte na tlačítko Nový prázdný formulář.
  2. Vložte dvě tabulky s opakováním. Postupujte takto:

    Pro aplikaci InfoPath 2007
    1. V nabídce Vložit položku Tabulka s opakováním.
    2. Nastavit počet sloupců 2 a potom klepněte na tlačítko OK.
    3. Opakováním kroku a b vložit jinou tabulku s opakováním kroku.
    Pro aplikaci InfoPath 2003
    1. V nabídce Vložit klepněte na tlačítko Další ovládací prvky.
    2. V seznamu Vložit ovládací prvky v podokno úloh Controls položku Tabulka s opakováním.
    3. Nastavit počet sloupců 2 a potom klepněte na tlačítko OK.
    4. Opakujte krok b a c vložit jinou tabulku s opakováním kroku.
  3. Vytvořte dvě další tabulky s opakováním a vázat dva nové tabulky na stejná data jako první dvě tabulky s opakováním. Postupujte takto:
    1. V nabídce Zobrazit klepněte na Zdroj dat.
    2. V podokno úloh Data Source rozbalte Skupina1.
    3. Klepněte pravým tlačítkem myši skupina2 a potom klepněte na položku Tabulka s opakováním.
    4. V podokno úloh Data Source rozbalte group3.
    5. Klepněte pravým tlačítkem myši group4 a potom klepněte na položku Tabulka s opakováním.
  4. Vytvořit vztah seznam–podrobnosti mezi dvěma tabulkami, které jste vytvořili v kroku 3. Postupujte takto:
    1. Klepněte pravým tlačítkem myši v první tabulce a potom klepněte na příkaz Vlastnosti tabulky s opakováním.

      Poznámka: Tato tabulka je třetí tabulku z horní části formuláře.
    2. V dialogovém okně Vlastnosti tabulky s opakováním klepněte na kartu Seznam a podrobnosti.
    3. Ve skupinovém rámečku Nastavení seznam a podrobnosti klepněte na tlačítko nastavit jako hlavní.
    4. Do pole ID seznamu zadejte Master1 a potom klepněte na tlačítko OK.
    5. Klepněte pravým tlačítkem myši na další tabulku a potom klepněte na příkaz Vlastnosti tabulky s opakováním.

      Poznámka: Tato tabulka je čtvrtá tabulku z horní části formuláře.
    6. V dialogovém okně Vlastnosti tabulky s opakováním klepněte na kartu Seznam a podrobnosti.
    7. Ve skupinovém rámečku Nastavení seznam a podrobnosti klepněte na tlačítko nastavit jako podrobnosti.
    8. Do pole propojit s ID vyberte Master1.
    9. Ve skupinovém rámečku propojit seznam a podrobnosti klepněte na tlačítko podle pole klíče.
    10. Klepněte na ikonu Výběr XPath napravo od pole pole klíče (hlavní) a potom klepněte na tlačítko pole1.
    11. Klepnutím na ikonu vpravo od pole pole klíče (podrobnosti)Vybrat XPathfield3 klepněte a potom klepněte na tlačítko OK.
  5. Vložit kód vynutit kaskádě v události OnAfterChange pole klíče v tabulce Podrobnosti. Postupujte takto:

    Pro aplikaci InfoPath 2007
    1. V podokno úloh Data Sourcepole1skupina2 klepněte pravým tlačítkem myši, klepněte na položku programování a klepněte na Událost po provedení změny.
    2. Okno úprav skriptu přidejte následující kód.

      Poznámka: Nahradit názvy skupin a polí, která chcete použít zástupné symboly pole a skupiny zástupné symboly.
      function msoxd_my_field1::OnAfterChange(eventObj)
      {
       // Write code here to restore the global state.
       
       if (eventObj.IsUndoRedo)
       {
        // An undo operation or a redo operation has occurred, and the DOM is read-only.
        return;
       }
       
       //Delete corresponding details if a delete operation has occurred on source group2.
       if(eventObj.Operation == "Delete" && eventObj.Source.nodeName == "my:group2")
       {
        //Block the view update feature to improve performance.
        thisXDocument.View.DisableAutoUpdate();
        
        //Obtain the  value of the keyfield of that row that you want to delete (set as field1 in Designer).
        var nodeKeyFieldMaster = eventObj.Source.selectSingleNode("my:field1");
                
        //Set the selection on all nodes in Detail.
        var nodesDetail = XDocument.DOM.selectNodes("/my:myFields/my:group3/my:group4");
       
        //View each row in Detail, and then delete the row if the key field in the detail matches the key field in the master.
        for (i=0; i< nodesDetail.length; i++)
        {
         //Obtain the row.
         var row = nodesDetail.item(i);
         
         //Obtain the  value of the keyfield for the current row  (set as field3 in Designer).
         var nodeKeyFieldDetail = row.selectSingleNode("my:field3");
       
         //Delete the row if the keyfield in the detail matches the keyfield of the deleted row in the master.
         if(nodeKeyFieldDetail.text == nodeKeyFieldMaster.text)
         {
          row.parentNode.removeChild(row); 
         }
      
        //Re-enable the view update.
        thisXDocument.View.EnableAutoUpdate();
      
        }
       } 
      }
      
    3. V nabídce soubor klepněte na tlačítko Uložit.
    4. V nabídce soubor klepněte na příkaz Konec.
    Pro aplikaci InfoPath 2003
    1. V podokno úloh Data Sourcepole1skupina2 klepněte pravým tlačítkem myši a potom klepněte na příkaz Vlastnosti.
    2. V dialogovém okně Vlastnosti pole nebo skupiny klepněte na kartu ověření a obsluhy události.
    3. V seznamu událostiOnAfterChange klepněte a potom klepněte na tlačítko Upravit.
    4. Okno úprav skriptu přidejte následující kód.

      Poznámka: Nahradit názvy skupin a polí, která chcete použít zástupné symboly pole a skupiny zástupné symboly.
      function msoxd_my_field1::OnAfterChange(eventObj)
      {
       // Write code here to restore the global state.
       
       if (eventObj.IsUndoRedo)
       {
        // An undo operation or a redo operation has occurred, and the DOM is read-only.
        return;
       }
       
       //Delete corresponding details if a delete operation has occurred on source group2.
       if(eventObj.Operation == "Delete" && eventObj.Source.nodeName == "my:group2")
       {
        //Block the view update feature to improve performance.
        thisXDocument.View.DisableAutoUpdate();
        
        //Obtain the  value of the keyfield of that row that you want to delete (set as field1 in Designer).
        var nodeKeyFieldMaster = eventObj.Source.selectSingleNode("my:field1");
                
        //Set the selection on all nodes in Detail.
        var nodesDetail = XDocument.DOM.selectNodes("/my:myFields/my:group3/my:group4");
       
        //View each row in Detail, and then delete the row if the key field in the detail matches the key field in the master.
        for (i=0; i< nodesDetail.length; i++)
        {
         //Obtain the row.
         var row = nodesDetail.item(i);
         
         //Obtain the  value of the keyfield for the current row  (set as field3 in Designer).
         var nodeKeyFieldDetail = row.selectSingleNode("my:field3");
       
         //Delete the row if the keyfield in the detail matches the keyfield of the deleted row in the master.
         if(nodeKeyFieldDetail.text == nodeKeyFieldMaster.text)
         {
          row.parentNode.removeChild(row); 
         }
      
        //Re-enable the view update.
        thisXDocument.View.EnableAutoUpdate();
      
        }
       } 
      }
      
    5. V nabídce soubor klepněte na tlačítko Konec zavřete okno úprav.
    6. Klepněte na tlačítko OK zavřete dialogové okno Vlastnosti pole nebo skupiny.

Náhled formuláře ukazují, jak to provést works.To kód, postupujte takto:
  1. Pro aplikaci InfoPath 2007

    V nabídce soubor přejděte na položku Náhled a potom klepněte na formulář.

    Pro aplikaci InfoPath 2003

    V nabídce soubor přejděte na příkaz Formulář náhledu a klepněte na tlačítko výchozí
  2. Některé hodnoty test vložte do první tabulky na formuláři. Tato tabulka je hlavní tabulky. Postupujte takto:
    1. V prvním sloupci první řádek zadejte Test1.
    2. Ve druhém sloupci první řádek zadejte Master1.
    3. Pod řádek, kde právě zadali data klepněte na tlačítko Přidat nový řádek první tabulky Vložit položku.
    4. V prvním sloupci druhý řádek zadejte Test2.
    5. Ve druhém sloupci druhý řádek zadejte Master2.
    6. Pokud chcete přidat další řádky, opakujte kroky 2 c až 2e.
  3. Některé hodnoty test vložte do druhé tabulky ve formuláři. Tato tabulka je tabulka Podrobnosti. Postupujte takto:
    1. V prvním sloupci první řádek zadejte Test1.
    2. Ve druhém sloupci první řádek zadejte Detail1.
    3. Pod řádek, kde právě zadali data klepněte na tlačítko Přidat nový řádek druhé tabulky Vložit položku.
    4. V prvním sloupci druhý řádek zadejte Test2.
    5. Ve druhém sloupci druhý řádek zadejte Detail2.
    6. Pokud chcete přidat další řádky, opakujte kroky 2 c až 2e.
  4. Test tabulek seznam a podrobnosti. V tabulce třetí postupně vyberte každý řádek. Čtvrtý tabulka zobrazuje pouze řádky z druhé tabulky, které mají stejnou hodnotu v prvním sloupci jako vybraný řádek třetí tabulky.
  5. Odstranit řádek z hlavní tabulky. Postupujte takto:
    1. V tabulce třetí vyberte druhý řádek, kde první sloupec obsahuje "Test2".
    2. Klepněte na šipku vedle vybraného řádku a potom klepněte na tlačítko Odebrat skupina2.

      Poznámka: Řádky, které mají stejný text v prvním sloupci jsou automaticky odstraněny z tabulky čtvrtý podle ukázkový kód. Například je odstraněna "Test2".

Vlastnosti

ID článku: 892952 - Poslední aktualizace: 30. ledna 2007 - Revize: 2.2
Informace v tomto článku jsou určeny pro produkt:
  • Microsoft Office InfoPath 2003
  • Microsoft Office InfoPath 2003, Service Pack 1 (SP1)
  • Microsoft Office InfoPath 2007
Klíčová slova: 
kbmt kbxml kbcodesnippet kbcode kbprogramming kbhowto KB892952 KbMtcs
Strojově přeložený článek
Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.
Projděte si také anglickou verzi článku:892952

Dejte nám zpětnou vazbu

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com