Archiv der Kategorie: jQuery und SharePoint

Überwinden Sie lästiges Problem mit relativen Urls in SharePoint Quick Launch

Ich wollte die Schnellstart-Navigation neulich einen Link hinzu und SharePoint erzählte mir:

image

Reine Textversion, die ist:

Sicherzustellen Sie, dass die URL gültig ist und mit entweder ein gültiges Zeichen beginnt (ein Nummernzeichen (#) oder Schrägstrich (/)) oder eine gültige unterstützte Protokoll (zum Beispiel, "http://’, "Https://’, ' Datei://’, "ftp://’, "Mailto:’, ' Nachrichten:’).

"Blech und pox!"Ich sagte.

Ein Workaround zu diesem soll JavaScript verwenden, um eine bekannte Verknüpfung in der Schnellstartleiste finden, und überschreiben Sie sein Verhalten.

Um dies zu testen, Wasserverbrauch Ihrer Test-Website einen neuen Link hinzufügen:

image

Ich habe jQuery. Um es zu lösen, einige JavaScript und jQuery Shape auf das Zeichenblatt verwenden Ihre bevorzugte Technik und mit einer Codezeile wie folgt:

 

$(Dokument).bereit( Funktion () {

    $("eine:enthält('Test URL Ersatz')").Klicken Sie auf(Funktion () { Warnung("geänderte Click-Verhalten!"); Rückkehr falsch;});

});

Und Bob ist dein Onkel.

Die jQuery-Auswahl findet jeder <eine> Tag, das "Test-URL Ersatz" in seinem Namen hat. Möchten Sie möglicherweise suchen-, die abhängig von Ihrer Verbindung und diese Melodie.

Die Click…(Funktion() überschreibt, was SharePoint getan hätte, wenn der Benutzer geklickt hat. Stellen Sie sicher, dass Sie "false zurück," Es wird deine Sachen zu tun und dann versuchen, die Href-Sache zu, Das ist sicherlich nicht Ihr Ziel.

Dies geschah und Test in einer SharePoint-online-Umgebung sollten aber funktionieren gut in 2010 und früher zu.

</Ende>

undefinedOnnieren Sie meinen Blog ab.

Folgen Sie mir auf Twitter bei http://www.twitter.com/pagalvin

Schnell und einfach: Lösen Sie "Ungültiger URL-Parameter” Problem mit UpdateListItems in lists.asmx

Beim Arbeiten mit UpdateListItems über lists.asmx, Es ist einfach, den Fehler zu generieren:

Ungültiger URL-Parameter.

Die bereitgestellte URL enthält einen ungültigen Befehl oder Wert. Bitte überprüfen Sie die URL erneut.

Sie können diesen Fehler erhalten, wenn Sie vergessen, ID in enthalten die die Liste der Felder aktualisieren.  Dies, wie viele dieser SP Webdienste, ist ein wenig counterintuitive, da Sie die ID in das ID-Attribut des einschließen müssen die <Methode> Element.  Und du bist nicht aktualisiert ID und wahrscheinlich nie in erster Linie möchten.

Diese SOAP-Envelope arbeitet:

<soapenv:Umschlag xmlns:Soapenv =' http://Schemas.xmlsoap.org/SOAP/Envelope/'>
  <soapenv:Körper>                      
    <UpdateListItems Xmlns =' http://Schemas.Microsoft.com/SharePoint/SOAP/'>                     
      <listName>{C712E2EA-54E1-47AD-9D99-1848C7773E2F}</listName>                     
        <Aktuelles>                     
         <Batch-OnError ="Weiter">
          <Methoden-ID ="1" Cmd ="Update">
            <Feldname ="CooperativeLock">gesperrt!</Feld>
            <Feldname ="ID">1</Feld>
          </Methode>
        </Batch>                     
        </Aktuelles>                
      </UpdateListItems>             
  </soapenv:Körper>         
</soapenv:Umschlag>

Wenn Sie den ID-Feldverweis entfernen dann erhalten die lästige Meldung "Ungültiger URL-Parameter" Sie.

</Ende>

undefinedOnnieren Sie meinen Blog ab.

Folgen Sie mir auf Twitter bei http://www.twitter.com/pagalvin

 

Armer Mann ist in JavaScript Zwischenspeichern.

[TL;DR-version: Verwenden Sie Cookies zum Speichern der Ergebnisse der asynchrone Aufrufe; die Ergebnisse der letzten asynchrone Aufrufe sofort gerendert, und überprüfen sie dann nach dem Laden der Seite.]

Ich habe auf SharePoint-Intranet-Site für einen Client, dass die Funktionen gearbeitet, unter anderem, eine stilisierte Sekundärnavigation dessen Menüoptionen über eine normale alte benutzerdefinierte Liste verwaltet werden.  Die Idee besteht darin, dass der Client "ihre" Site-Menü steuern, ohne zu beeinflussen oder durch die globale Navigation löschte dadurch beeinträchtigt wird.

(Es ist etwas unglaublich subversiven zum Hinzufügen eines CEWP, der auf einer HTML-Datei verweist, das lädt einige CSS und JS grundlegend verändern fast alles über eine Website Verhalten... aber das ist für einen anderen Beitrag)

Der Code für diese ziemlich einfach:

Die Wunde Punkt hier ist das jedes Mal, wenn jemand eine der Seiten hits, Web-Browser des Benutzers greift Elemente aus der Liste abgerufen.  Sobald Dev vollständig und Tests sind bewährt Dinge zu stabil und vollständig sein, Dieser Aufruf ist unnötig mehr als 99% die Zeit, da das Menü nur selten ändert.  Es hat auch einen seltsamen UI Affekt, der in dieser schönen neuen Welt von hyper-Ajaxy Websites üblich ist – die Seite macht und erst dann rendert das Menü.  Es ist nervös und störend aus meiner Sicht.  Und nervös. Also, Zwischenspeichern. 

Ich änderte die Logik Wasserverbrauch:

  • Suchen Sie ein Cookie im Browser, der Menü enthält, wie ich es zuletzt gelesen
    • Wenn gefunden, machen Sie es sofort.  Warten Sie nicht auf die Seite geladen.  (Sie müssen sicherstellen, dass Ihre HTML hier strategisch ist, aber es ist nicht schwer zu tun).
  • Warten Sie, bis die Seite fertig geladen und machen ein Async aufrufen, um Menüelemente aus einer Liste mit REST oder lists.asmx oder was auch immer zu laden
  • Vergleichen Sie, was ich mit dem cookie
    • Wenn es passt, STOP
    • Ansonsten, mithilfe von jQuery, ein paar dynamisch zu füllen, wenn <Li>ist in einem <UL>
  • Verwenden Sie CSS, um die Formatierung zu tun
  • Gewinn!

Einige von Ihnen werden sagen, "hey! Es gibt kein richtiger Zwischenspeichern hier da du sowieso das Menü liest jedes Mal.”  Und du hast Recht-ich gebe nicht dem Server jede Art von Bruch.  Aber weil der Aufruf asynchron und geschieht, nachdem die Seite erste ist rendert HTML-Nutzlast voll, es "fühlt"sich stärker auf den Benutzer.  Das Menü macht ziemlich viel wie die Seite zieht.  Wenn das Menü zur Änderung geschieht, der Benutzer wird eine unruhige neu zu ziehen des Menüs unterzogen, aber nur dieses eine Mal.

Es gibt einige Möglichkeiten, um diese Zwischenspeicherung effizienter und helfen den Server zur gleichen Zeit:

  • Setzen Sie in der Regel, dass der "Cookiecache" gültig für einen Mindestaufenthalt von ist 24 Stunden oder einige andere Zeitrahmen. Solange es keine abgelaufene cookie, Verwenden Sie das Cookie Menü Snapshot und nie schlagen Sie den server.

Nun... das ist alles, die was gerade in den Sinn kommen :). 

Wenn jemand hier eine clevere Idee hat würde ich gerne kennenlernen.

Und schließlich – kann diese Technik für andere Sachen verwendet werden.  Dieser Client-Seite hat eine Reihe von datengesteuerten Dingen auf verschiedenen Seiten, viele von ihnen ändern relativ selten (wie einmal pro Woche oder einmal im Monat).  Wenn Sie bestimmte Bereiche der Funktionalität gezielt, Sie können eine reaktionsschnellere Benutzeroberfläche geben, ziehen Inhalte aus dem lokalen Cookie laden und Rendern sofort.  Es fühlt sich schneller an den Benutzer, auch wenn Sie nicht den Server Schleifen speichern.  Sie können sparen Sie die Serverzyklen bei Entscheidung über einige Bedingungen und Auslöser dieser lokalen Cookiecache für ungültig erklären.  Das ist alles situationsabhängig und künstlerisch Zeug und wirklich am meisten Spaß :). 

</Ende>

undefinedOnnieren Sie meinen Blog ab.

Folgen Sie mir auf Twitter bei http://www.twitter.com/pagalvin

XSLT und jQuery-Beispiele

Ich mache seit viel von XSLT und jQuery und dachte, ich würde ein paar Ausschnitte teilen, die andere in Zukunft nützlich sein können.

Beispiel 1: Einfache JavaScript ausgeben / jQuery in XSLT:

<XSL:Vorlage-Übereinstimmung = "etwas" XML:Space = "preserve">

  <!– Die Abfrage freundlich Filter ausgeblendeten Feld leer –>
  <Skript-Typ = "Text/Javascript">
    $(Dokument).bereit(Funktion(){
      $("#QueryFriendlyFilters").Val("leer");
    });
  </Skript>

</XSL:Vorlage>

Das Bit ausgibt einige JavaScript, das wartet, bis die Seite geladen (wegen der $(Dokument).bereit(…)) und dann der Wert eines ausgeblendeten Felds benannte Mengen QueryFriendlyFilters zu der literale Wert "leer".

Beispiel 2: Verwendung <XSL:If> "größer als" überprüfen,  "kleiner als", usw..

<XSL:Vorlage-Übereinstimmung = "etwas" XML:Space = "preserve">

  <Div Id = "FdcAllFilters">
 
    <XSL:Wenn test="@Count>0">
      <span Class = "FdcFilterLabel">Aktuelle Filter:</Spannweite>
    </XSL:If>

    <!– hier passiert mehr Material. –>

</XSL:Vorlage>

Der oben stehenden Ausschnitt prüft, ob ein Attribut namens "Zählen" des Elements "etwas" größer als 0 (null) ist.  Der XML-Code dahinter wäre so etwas wie:”

<etwas Count = "5" />

Beispiel 3: Durchlaufen aller Elemente, einstreuen jQuery Aufrufe.

<!– Alle Filter durchlaufen und die korrekte Anzeige  Links. –>
<XSL:for-each select = "UserFilter">

  <eine Klasse = "FilterHref" Href = "Javascript:mySubmitPage('RemoveUserFilter','{@ ID}’)">[X]</eine>

  <span Class = "FdcFilterLabel"><XSL:Wert-der select="@FilterValue"/></Spannweite>

  <Skript-Typ = "Text/Javascript">

    $(Dokument).bereit(Funktion(){
        <XSL:Text><![CDATA[$("#QueryFriendlyFilters").Val( ($("#QueryFriendlyFilters").Val() + " ]]></XSL:Text>\"<XSL:Wert-der select="@FilterValue"/>\"<XSL:Text><![CDATA["));]]></XSL:Text>
    });

  </Skript>

</XSL:für jeden>

Der oben stehenden Ausschnitt ist die komplizierteste und möglicherweise gibt es einfachere Wege, es zu tun.

Der XML-Code dahinter sieht ungefähr wie folgt:

<UserFilter ID = "123" FilterValue = "Xyzzy" />

Dieser Ausschnitt ist durchlaufen <UserFilter> Knoten. 

Es gibt zunächst einen Anker kennzeichnen, die beim Klicken auf Ruft eine JavaScript-Funktion, die bereits auf der Seite ist, "MySubmitPage" und übergibt den Wert eines Attributs auf der <UserFilter> Knoten mit dem Namen "ID". 

Dann gibt es einige jQuery, die wartet, die Seite zu laden.  Dass jQuery aktualisiert ein ausgeblendetes Feld mit dem Namen "QueryFriendlyFilters", indem den Wert des Attributs FilterValue.  Beachten Sie alle verrückt <XSL:Text> und <![CDATA[ … ]]> Bestellung.

Das ist es, hoffe es Hilfen!

</Ende>

Onnieren Sie meinen Blog ab.

Folgen Sie mir auf Twitter bei http://www.twitter.com/pagalvin

Lists.asmx, GetListItems und Ordner

Ich tat etwas Forschung für jemanden heute rund um den list.asmx-Web-Service im Rahmen des SharePoint 2010 (und früher).  Sie war in der Lage, die Listenelemente im Stammordner (die Namen der Unterordner), aber Elemente in Unterordner erhalten könnte.  Ich habe einige schauen herum auf dem Internets und es ist ein überraschend häufig gestellte Frage.  Noch, Ich könnte eine gute Antwort auf die einfache Frage nicht erhalten., "Wenn ich den Ordner weiß, Wie bekomme ich die Elemente in den Ordner?”  Um ehrlich zu sein, Ich versuchte nicht allzu hart, da ich zu Figur diesein raus auf eigene Faust für eine Weile wollte Lächeln.

Um dies einzurichten, Ich habe eine Site mit dem Namen "Blogging Scenarios" und eine benutzerdefinierte Liste mit dem Namen "Benutzerdefinierte Liste mit Sub-Ordner".  Ich habe dann Ordner mit dem Namen:

  • Jahr 2005
  • Jahr 2006
  • Jahr 2007

Ich hinzugefügt ein paar Elemente in den Ordner "Jahr 2006".  Dies ist, wie es aussieht:

image

Mein Freund ist nicht schreiben von C#-Code, sondern eher mit Hilfe von Java, So war der SOAP-Umschlag, was sie wirklich brauchte.  Zu erhalten, die, Ich schrieb ein wenig jQuery und Fiddler dann verwendet, um das tatsächliche HTTP-Gespräch zu erhalten.

Hier ist die relevante jQuery (Ich kopiert den Code unten unten wenn Sie kopieren möchten):

image

Sie erste Schlüssel ist, um sowohl eine <queryOptions> und <QueryOptions> Knoten.  Der zweite Schlüssel ist, dass die <Ordner> der Knoten ist ein URL, auf den der Client Zugriff hat.

Möglicherweise gibt es andere Möglichkeiten, um dies, aber dies funktioniert gut für mich, bei der Verwendung von jQuery.

Hier ist der SOAP-Umschlag für die oben:

<soapenv:Umschlag xmlns:Soapenv =’http://Schemas.xmlsoap.org/SOAP/Envelope/’>                
  <soapenv:Körper>
    <GetListItems Xmlns =’
http://Schemas.Microsoft.com/SharePoint/SOAP/’>
      <listName>Benutzerdefinierte Liste mit Sub-Ordner</listName>
      <viewFields>  
        <ViewFields>
          <FieldRef-Name =' Titel’ />
          <FieldRef-Name ='EncodedAbsUrl’ />
        </ViewFields>
      </viewFields>
      <queryOptions>
        <QueryOptions>
          <Ordner>
http://demoserver1-Blogging Szenarien/Listen/benutzerdefinierte Liste mit Sub-Ordner/Jahr 2006</Ordner>
        </QueryOptions>
      </queryOptions>
   
</GetListItems>
  </soapenv:Körper>
</soapenv:Umschlag>

Viele Beispiele und Diskussion um dies führte mich zu glauben, dass alles, was ich brauche <QueryOptions> und geben Sie einen Ordnernamen ein.  Für mich, Ich müssen sowohl in wrap <queryOptions> ebenso wie geben Sie eine vollqualifizierte URL für den <Ordner> Knoten.

Hier ist das jQuery-AJAX-setup:

$(Dokument).bereit(Funktion() {
       Var SoapEnv =
           "<soapenv:Umschlag xmlns:Soapenv =’http://Schemas.xmlsoap.org/SOAP/Envelope/’> \
               <soapenv:Körper> \
                    <GetListItems Xmlns =’http://Schemas.Microsoft.com/SharePoint/SOAP/’> \
                       <listName>Benutzerdefinierte Liste mit Sub-Ordner</listName> \
                       <viewFields> \
                           <ViewFields> \
                              <FieldRef-Name =' Titel’ /> \
                              <FieldRef-Name ='EncodedAbsUrl’ /> \
                          </ViewFields> \
                       </viewFields> \
                       <queryOptions> \
                         <QueryOptions> \
                           <Ordner>http://demoserver1/Blogging Szenarien/Listen/benutzerdefinierte Liste mit Sub-Ordner/Jahr 2006</Ordner> \
                         </QueryOptions> \
                       </queryOptions> \
                   </GetListItems> \
               </soapenv:Körper> \
           </soapenv:Umschlag>";

</Ende>

Onnieren Sie meinen Blog ab.

Folgen Sie mir auf Twitter bei http://www.twitter.com/pagalvin

Lists.asmx, GetList und "Wert darf nicht null sein”

Heute entdeckte ich, dass die GetList() Methode in lists.asmx Es ist anfällig für eine geheimnisvolle "Wert darf nicht null sein" Ausnahme auslösen oder Webdienst hat sehr sorgfältig aufgerufen werden (und das geht davon aus, dass Sie vorbei die schlimmer generische Fehlermeldung erhalten können, "Ausnahme des Typs ' Microsoft.SharePoint.SoapServer.SoapServerException’ ausgelöst wurde.")  Speziell, Ich fand, dass Sie keine Art von Präfix auf die GetList-Methode bereitstellen können.  Der folgende jQuery-Ausschnitt zeigt die:

image

Wenn Sie das tun, der Webdienst antwortet mit "Wert darf nicht null pro dies als sein" Fiddler-bereitgestellten HTTP-Protokoll:

<?XML Version = "1.0" Encoding = "Utf-8"?>
  <Seife:Umschlag
     xmlns:Seife ="
http://Schemas.xmlsoap.org/SOAP/Envelope/"    
     xmlns:Xsi = "
http://www.w3.org/2001/XMLSchema-instance
     xmlns:XSD ="
http://www.w3.org/2001/XMLSchema">

  <Seife:Körper>
    <Seife:Fehler>
      <FaultCode>Seife:Server</FaultCode>
      <faultString>
        Ausnahme des Typs ' Microsoft.SharePoint.SoapServer.SoapServerException’ ausgelöst wurde.
      </faultString>
      <Detail>
        <ErrorString Xmlns ="
http://Schemas.Microsoft.com/SharePoint/SOAP/">
Wert darf nicht null sein..
        </ErrorString>
      </Detail>
    </Seife:Fehler>
  </Seife:Körper>
</Seife:Umschlag>

Natürlich, Sie würde nicht das Präfix "s0" wahrscheinlich auf eigene hinzufügen., aber einige Werkzeuge sind dafür anfällig (wie Eclipse).

Dies ist umso mehr verwirrend / frustrierend, da andere Methoden Präfixe tolerieren.  Zum Beispiel, die GetListCollection Methode dagegen nicht, wenn es vorangestellt worden ist, auch mit Unsinn Präfixe wie "Xyzzy":

image

Diese "Wert darf nicht null sein" scheint ziemlich häufig mit lists.asmx so hoffentlich dies jemand in Zukunft helfen wird.

</Ende>

Onnieren Sie meinen Blog ab.

Folgen Sie mir auf Twitter bei http://www.twitter.com/pagalvin

Endlos Schachteln <div> Markierungen und jQuery

Dies scheint, wie so ein Spinner-Thema, Ich bin nicht sicher, dass es wirklich lohnt, über das Bloggen, aber das hat nie aufgehört mich vor, So hier gehen wir Lächeln

Ich bin an einem Projekt arbeiten wo ich einige Daten von einer Suche ziehen bin, Verpackung es bis in eine XML-Nachricht und dann die XML sich letztlich verwandelt in HTML via XSLT.  Es gibt eine Menge von jQuery beteiligt, ein wenig davon implementiert einige der Tab-Taste Funktionen.  Wenn Sie auf eine Registerkarte klicken (wirklich, eine <div>), jQuery ruft .hide() und ...zum() auf verschiedenen divs (der erste Seite laden lädt alle Inhalte, so gibt es in diesem Fall keine postbacks).

Ein paar Stunden, die Registerkarte Schaltlogik Schritte auffälliges Verhalten und es würde nicht eine meiner Registerkarten zeigen.  Ich verfolgt letztlich es bis auf die Tatsache, dass InternetExplorer (mindestens) dachte, dass die <div> Tags geschachtelt weit, weit tiefer als beabsichtigt.Die Developer Toolbar zeigen würde:

-<Div Id = "Tab1Content">
  -<div>
    -<div>
      -<Div Id = "Tab2Content">
        -<div>
           …………………………
                   </div>  <— endlich zeigt es hier ganz unten geschlossen wurde!

Also, Wenn ich habe ein $("# Tab1Content").Ausblenden(), Ich würde auch Tab2 verstecken und ich könnte nie Tab2 zeigen, wenn ich nicht auch Tab1 zeigen.  Ich Kopieren und Einfügen den Code bis in visual Studio und es zeigte alle die Div Futter bis schön, so, wie sie angeblich zu tun, wie folgt aussehen:

-<Div Id = "Tab1Content">
  +<div>
  +<div>
-<Div Id = "Tab2Content">
  +<div>
  +<div>

Ich schlug meinen Kopf gegen die Wand für eine Weile und bemerkte, dass in der eigentlichen HTML Code eine Menge von leeren generiert wurde <div> Schlagwörter, wie:

<Körper>

  <Div Id = "Tab1Content">

    <Div Id = "row1" />
    <Div Id = "row2" />

  </div>

  <Div Id = "Tab2Content">

    <Div Id = "row1" />
    <Div Id = "row2" />

  </div>

</Körper>

(Das oben genannte ist Waaaaaaaaaaaay vereinfacht.  Die leere Div-Tags sind völlig gültig. Einige meiner <div> Markierungen waren voll von Inhalten, aber viel mehr nicht.  Ich kam zu der Erkenntnis, dass mein <XSL:für jeden> Richtlinien wurden die Kurzform ausgeben Div-tags wenn die XSL-Datei:für jede nicht ' finden Sie alle Daten.  Die Ausgabe einen HTML-Kommentar gezwungen, wie gezeigt:

image

 

Nachdem ich den tat, des Div schön aufgereiht und begann meine Tab switching.

Wie immer, Ich hoffe, dass dieses Hilfen im Notfall.

</Ende>

Onnieren Sie meinen Blog ab.

Folgen Sie mir auf Twitter bei http://www.twitter.com/pagalvin

Noch mehr jQuery–Ändern der Größe eines Bild-Beispiel

Eine alte Clienthersteller einen Webpart geerbt und es hat ein Imageproblem Größe.  Die Bilder sollten 60×50 aber aus irgendeinem Grund, der ursprüngliche Hersteller gezwungen, in 42×42, So suchen sie gequetscht:

 

Gutes Bild

Schlechtes Image

Hier befindet sich das markup (etwas vereinfacht):

<table Class = "erweitert-Outlook">
  <THEAD>
    <TR>
      <Th  Breite = 100′>3 Dienstag</Th>
    </TR>
  </THEAD>

  <TBODY>
    <TR-Klasse = 'Prognose'>
      <td Width = 100′>
        <UL>
          <Li Class = 'hoch'>Hoch: 72&DEG;F</Li>
          <Li Class = "niedriger">Niedrig: 44&DEG;F</Li>
          <Li Class = 'Zustand'>Sonnig
            <Img Src =’
http://deskwx.WeatherBug.com/images/Forecast/Icons/Localized/60×50/en/Trans/cond007.png’ Breite = 42’ Höhe = 42’ Alt =” />
          </Li>
        </UL>
      </TD>
    </TR>

  </TBODY>

</Tabelle>

Sie werden feststellen, dass obwohl die Pfad zu dem Bild selbst zeigt die richtige dimension (60×50) der ursprüngliche Hersteller gezwungen es 42×42.  Warum?  Verrückt.

Auf jeden Fall, Ich wollte eine schnelle und einfache Lösung für dieses Problem und ich wandte mich an jQuery.  Der Trick bestand darin, alle entsprechenden finden <IMG> Markierungen.  Ich wollte nicht mit anderen Img Tags Dreck über (davon gibt es viele).  Dieses Bit von jQuery Tat die Tücke:

<Skript-Typ = "Text/Javascript" Src ="http://AJAX.googleapis.com/AJAX/libs/jQuery/1.5/jQuery.Min.js"></Skript>

<Skript-Typ = "Text/Javascript">
     $(Dokument).bereit(Funktion () {

         $(' li.condition > Img').jeder(Funktion (Index, Artikel)
           
{
             $(Artikel).CSS("Breite", "60"); 
             $(Artikel).CSS("Höhe", "50");
            });
     }); // auf Dokument laden
</Skript>

Das Bit des Codes wird die Auflistung <Li> Markierungen, deren Klasse ist "Bedingung" und <IMG> Kinder.  Dann durchläuft es all das.  Wirkten gefällt ein Anmut.

Ich konnte es wahrscheinlich optimieren, aber ich war nie einer der Unix-Typ, das π gelöst An 18 Ziffern Genauigkeit mit Sed und Awk und ich bin nicht diese Art, wenn jQuery entweder Kerl Lächeln.

</Ende>

Onnieren Sie meinen Blog ab.

Folgen Sie mir auf Twitter bei http://www.twitter.com/pagalvin

Implementieren Sie ein globales Pop-up Notification System

Ich schrieb einen Artikel für www.SharePoint.Briefing.com mit dem Titel"Implementieren Sie ein globales Pop-up Notification System.”  Diese Funktion wurde für eine Community College Schule Schließungen aufgrund von Schnee und so weiter kommunizieren implementiert. 

Es verwendet eine benutzerdefinierte Liste, Out of the Box SharePoint web Services und einige jQuery zu tun, die Arbeit.

Hier ist ein teaser:

image

Die ganze Sache hier lesen: http://www.sharepointbriefing.com/features/article.php/3918471/Implement-a-Global-Pop-up-Notification-System.htm

</Ende>

Onnieren Sie meinen Blog ab.

Folgen Sie mir auf Twitter bei http://www.twitter.com/pagalvin

Kontrollieren Sie Ihre OK und Abbrechen-Schaltflächen

Ich schrieb in diesem Artikel eine Weile zurück, aber sieht aus wie ich es von meinem Blog zur Zeit link nicht, so, hier geht:

image

Dieser Artikel beschreibt wie erzwingen newform.aspx, auf eine Seite umleiten, wenn der Benutzer klickt OK und eine andere Seite, wenn sie "Abbrechen" klickt.

</Ende>

Onnieren Sie meinen Blog ab.

Folgen Sie mir auf Twitter bei http://www.twitter.com/pagalvin