SharePointCommunity
Die deutschsprachige Community für SharePoint, Microsoft 365, Teams, Yammer und mit Azure

Sponsored by

Willkommen im Forum Archiv.
Einträge sind hier nicht mehr möglich, aber der Bestand von 12 Jahren SharePoint-Wissen ist hier recherchierbar.




WebPart / Formular ausblenden, wenn einmal genutzt

Geprüfte Antwort Dieser Beitrag hat 2 Antworten

Ohne Rang
19 Beiträge
XirTam erstellt 4 Jan. 2012 09:03
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo zusammen,

ich habe ein Formular über InfoPath geändert (auslesen vom WebServices, damit die Userdaten aus dem AD schon in verschiedenen Feldern voreingetragen sind).

Das geht ja auch super. Nun habe ich allerdings die Anforderung, das Formular auf der Seite anzeigen zu lassen. Ok auch kein Problem, dafür gibt es ja ein WebPart, mit dem ich InfoPath Formulare anzeigen lassen kann.


ABER nun habe ich außerdem noch die Anforderung, wenn ein User das Formular einmal genutzt hat (soll eine Art Abfrage werden), soll das Formular für den User nicht mehr angezeigt werden.

Ich dachte da an JavaScript über den Designer --> " if User schon in der Liste, dann WebPart nicht anzeigen" mal ganz salop gesagt.

Nur wie kann ich das wo machen?

 

Gruß und schonmal Danke

Henry

Alle Antworten

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 4 Jan. 2012 17:27
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ich würde das direkt im Formular machen. Irgendwo werden die ausgefüllten Formulare ja gespeichert und erst dann bekommen sie eine ID. Also kannst Du prüfen, ob die ID größer Null ist und falls ja blendest Du einfach im Formular eine andere Ansicht ein (die leer ist oder nur ein "bereits ausgefüllt" enthält).

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
19 Beiträge
XirTam Als Antwort am 10 Jan. 2012 16:59
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo,

 

ich habe das mit einem JavaScript gelöst. Dieses einfach auf einem Inhaltseditor webpart hochladen und die entsprechende Liste + Formular eintragen und schon klappt es.

________________________________________________________

 

<script type="text/javascript" src="/JQuery/jquerry.js"></script>
<script src="/_layouts/SP.js" type="text/ecmascript"></script> <script type="text/javascript">
 
    var timerHandle = "";
    var currentWindowsAccount = "";
   
    _spBodyOnLoadFunctionNames.push("runCustom");

   
    function hide()
    {
        document.getElementById("MSOZoneCell_WebPartWPQ8").style.display='none';
    }
   
    function show()
    {
        document.getElementById("MSOZoneCell_WebPartWPQ8").style.display='run-in';
    }
 
    $(window).load(function runCustom()
    {
        //timerHandle = setTimeout(getCurrentLoggedInUser, 10);
        getCurrentLoggedInUser();
    });
 
    function getCurrentLoggedInUser()
    {
       
        //clearTimeout(timerHandle);
         
        var welcomeMenuItems = $('#ID_MySiteLinksMenu');
         
        if (welcomeMenuItems.length > 0)
        {
            var onmenuclickValue = welcomeMenuItems.attr("onmenuclick");
            var onmenuclicksplit = onmenuclickValue.split("%5C");
            var loggedInUserString = onmenuclicksplit[1];
            var loggedInUserStringSplit = loggedInUserString.split("'");               
            currentWindowsAccount = loggedInUserStringSplit[0];
            timerHandle = setTimeout(ViewItem, 50);
        }
        else
        {
            //timerHandle = setTimeout(getCurrentLoggedInUser, 10);
        }
    }
 
    function ViewItem()
    {
        var context = new SP.ClientContext.get_current();
        var web = context.get_web();
        var list = web.get_lists().getByTitle('LISTENNAME'); // HIER DEN NAMEN ÄNDERN

        var query = SP.CamlQuery.createAllItemsQuery();
        allItems = list.getItems(query);
        context.load(allItems, 'Include(SPALTENNAME)'); // Hier die Spalte eintragen, auf die geprüft werden soll
        context.executeQueryAsync(Function.createDelegate(this, success), Function.createDelegate(this, failed));
        clearTimeout(timerHandle);
    }

    function success()
    {
       
        var TextFiled = "";
        var ListEnumerator = this.allItems.getEnumerator();

        while(ListEnumerator.moveNext())
        {
            var currentItem = ListEnumerator.get_current();
            TextFiled  += currentItem.get_item('Title') + '\n';
        }
        //alert(TextFiled + currentWindowsAccount);
       
        var IsExisting = TextFiled.match(currentWindowsAccount);
        if (IsExisting == currentWindowsAccount)
        {
            hide();
        }
        else show();
    }
    function failed(sender, args)
    {
        alert("failed. Message:" + args.get_message());
    }
   
 </script>

 

________________________________________________________

Bei Fragen stehe ich gerne zur Verfügung.

 

MfG XirTam / Henry :-D