Monatliche Archive: Dezember 2007

Mein Sohn gehackt Gamespot

Also, heute Morgen, Mein Sohn wird bestimmt zu sehen, dass ein Alter-dreizehn Halo eingeschränkt 3 Video an GameSpot. Ich bin draußen Schnee schaufeln, so dass ich nicht da bin, zu fördern oder behindern. Notwendigkeit ist die Mutter der Erfindung und alles, was … Er hat ein eureka! Augenblick. Er erkennt, dass obwohl Gamespot ihm seine eingeben will Real Geburtsdatum, Er kann wirklich betreten Alle Geburtsdatum, was er will. Nachdem er, dass erkannte, Er machte sich alt genug, um das Video zu sehen.

I’m not quite sure how I feel about this 🙂

Sonntag Funny: “Es ist Druck Müll”

In meinem ersten Job nach dem College in 1991, Ich hatte das Glück, für ein produzierendes Unternehmen mit arbeiten 13 Standorte, nicht einschließlich seiner Firmenzentrale in New Jersey. Ich kam gerade dann, wenn das Unternehmen-out ein neues ERP-System Roll war. Wir waren eine kleine IT-Abteilung von etwa zehn Personen insgesamt, zwei von Ihnen sind nicht Gefahren. Teil des Projektes beteiligt, IBM System zu ersetzen 36 Boxen mit HP Hardware und HPUX. Jeder verwendet grüne Röhren, Zugriff auf das system.

Das Projekt rollt entlang und ich bin herabgesandt nach Baltimore mit einem neuen Kollegen, Jeff. Unsere Aufgabe war, an die macht, die Unix-Rechner, Stellen Sie sicher, dass die o/s ausgeführt wurde, das ERP-System installieren, Konfigurieren Sie das ERP, bilden Menschen auf den ERP und Maßarbeit für Leute auf der Stelle tun. (Dies war ein Traumjob, vor allem kommt gerade aus der Schule). Bevor wir wirklich aus dem Boden könnte, Wir mussten die grünen Röhren entpacken, Lege sie auf Schreibtischen und verdrahten Sie. Und das beste daran war, dass wir die RJ11-Stecker auf uns setzen mussten.

Aus irgendeinem Grund, das ich nie verstanden, und eigentlich nie daran gedacht, Fragen zum Zeitpunkt, Wir hatten einige vertragschließenden Unternehmen kommen und führen Sie die Kabel im gesamten Werk, aber wir hatten nicht sie setzen auf den Steckern. Also, Es gab eine "Patch-box" mit Dutzenden von unbeschrifteten Kabel in den PC-Raum"" und diese snaked rund um das Gebäude an verschiedenen Orten im Gebäude.

Wir haben unseren Weg durch das im Laufe eines Wochenendes, Testen jedes Kabel, setzen auf einem connector (sicherstellen, dass es war gerade vs. gekreuzt), Sicherstellung der Bit-Einstellungen auf die grünen Röhren und Drucker korrekt waren, Kennzeichnung von Drähten, sicherstellen, dass diese "getty" für jeden Port und wahrscheinlich tausend andere Dinge, die ich seitdem unterdrückt habe wurde ordnungsgemäß ausgeführt. Es kam alles zusammen ganz gut.

Aber, Es war ein wichtiges Kabel, die wir herausfinden konnte nicht. Das Werk in Baltimore hatte eine Beziehung mit einem Lager-Ort in New Jersey. Einige Aufträge an Baltimore verschifft, aus dieser Position. Es gab zwei Drähte, die wir, zum Herstellen von Feld HPUX hatten: eine grüne Röhre und einem Drucker. Die grüne Röhre war einfach, aber der Drucker wurde zum dreiwöchigen Albtraum.

Wenn Sie es nicht wissen, oder haben es unterdrückt, Umgang mit grünen Röhren und Drucker auf diese Weise, Es gibt verschiedene Möglichkeiten, die Sie beschäftigen, indem Sie verschiedene Stifte festlegen. 8-Bit, 7-Bit, Parität (gerade/ungerade/keine), vermutlich weitere. Wenn Sie eine dieser Einstellungen falsch ist, das Rohr oder der Drucker zeigt noch Sachen, aber es wird insgesamt Kauderwelsch, oder es werden Kauderwelsch mit erkennbaren Zeug dazwischen. Natürlich, Diese Pins sind schwer zu sehen und eine kleine Wohnung-Rand-Schraubendreher mit festgelegt werden müssen. Und sie sind nie standard.

Richten wir die erste von vielen schnell Anrufe mit dem NJ-Typen (ein grauer Computer-Hasser, die wahrscheinlich uns bis zum heutigen Tag verflucht). Wir haben das grüne Rohr ziemlich schnell arbeiten, aber wir konnten nicht den Drucker arbeiten bekommen. Es hielt "Drucken Müll". Wir würden einen neuen Connector RJ11 schaffen., Umschalten zwischen gekreuzten und geraden. Wir würden den Port löschen und neu erstellt in Unix. Wir gingen durch die schwierige Aufgabe, ihn uns die Steckerbelegung des Druckers erklären, nie wirklich sicher, ob er es richtig gemacht hat.

Es ist an der Zeit, go live, Alles in Baltimore summt, aber wir können nicht den Fluch Drucker aufstehen in New Jersey zu arbeiten! Wir haben alle Möglichkeiten außer fahren zurück bis NJ Arbeit an den Drucker persönlich ausgeschöpft.. Alles, was treibende vermeiden, Wir bitten ihn, endlich zu uns faxen was er bekommt, wenn es "Müll" ist, Hoffnung, dass vielleicht noch ein Hinweis in diesen Müll, die uns sagen, was wir tun falsch.

Als wir ankamen, das fax, Wir wussten sofort, was los war. Siehe, Unsere Methode zu testen, ob wir einen Drucker richtig konfiguriert hatte war ein "Lp ausstellen" Befehl wie folgt:

LP/Etc/passwd

Im Grunde, wir die Unix-Passwort-Datei ausgedruckt. Es ist immer vorhanden und Out of the box, immer nur eine Seite. Sie standard Unix Passwort-Datei sieht ungefähr so aus:

Smith:*:100:100:8A-74(Büro):/Startseite/smith:/Usr/bin/shguest:*:200:0::/Startseite/Gast:/Usr/bin/sh  

Wir hatten schon Ausdrucken der Passwort-Datei immer und immer wieder für mehrere Wochen und es wurde korrekt gedruckt. Jedoch, für den Endbenutzer, Es war "Drucken Müll".

</Ende>

Noch ein anderes Netzwerk-Anmeldeinformationen Multi Herausforderung Problem und Lösung

Mein Mandant vor kurzem installiert ein magisches Gerät aus Wacholder ersetzt, die offenbar ihre alten Cisco Netzwerk-Lastenausgleich (NLB). Ungefähr zur gleichen Zeit, Wir installierten eine Hotfix um eine Workflow-Problem zu lösen.

Ein oder zwei Tage später, Wir haben ein Problem festgestellt, wenn wir den Anbieter für gemeinsame Dienste zugegriffen (SSP). Wir konnten dorthin zu gelangen., aber wir würden eine Benutzer-ID und Ihr Kennwort mehrmals auf jeder Seite angefochten werden. Dies geschah nicht mit dem wichtigsten Portal app, noch zentraler administration. Natürlich, Wir wussten nicht, welche der beiden (Wacholder oder hotfix) Das Problem wäre, Allerdings vermutete ich stark den hotfix, herauszufinden, wir hatten es nicht richtig installiert.

Es stellte sich heraus, dass Wacholder eine Art Komprimierungseinstellung hatte. Eines der gekleidete Figuren Vergleichszeitraum im Netzwerk Gruppe, Aufrechnung. Dass unser Problem gelöst.

Dies ist nicht das erste Mal, die Komprimierung die Hauptursache für ein SharePoint-Problem für mich gewesen ist. IIS-Komprimierung betroffene negativ ein 3rd Party-Tool von die guten Leute von The Dot Net Factory für IE 6 Browser (IE 7 Browsern funktionierte ohne Probleme).

Also, Fügen Sie "Kompression" der Gefahren-Liste.

</Ende>

Wir danken: http://www.elfwood.com/art/s/h/sherry/death_colour.jpg.html

Technorati Tags: ,

Denken über das Ändern von Blogging-Plattform

Ich begann meine "Blog-Karriere" unter Verwendung von Microsoft-Plattform und es ist gut zu mir gewesen. Es ist einfach zu buchen, Es gibt gute Möglichkeiten und Widgets für die Verwaltung Ihres "Space", menschenwürdige Web-Speicher und So weiter.

Jedoch, Ich verliebte mich wirklich nur in die MS-Lösung fast ohne Planung. Dass allein Anrufe für mich, wo ich bin und wohin ich gehe zu bewerten, im Hinblick auf eine Blogging-Plattform. Es gibt auch zwei wichtige Einschränkungen, die stört mich richtig jetzt gegenüber Windows Live Spaces.

Erste, Ich kann sehr gute Statistiken nicht erhalten.. Es gibt Statistiken, aber das Detail ist oft abgeschnitten und nicht in einer Weise, die für jede Art von Analyse ermöglicht präsentiert. Es keine Sortierung oder Export-Funktion. Viele Blog-Ideen, die basierend auf die Art der Informationen, die Menschen kommen (oder vor allem nicht finden) Wenn sie mein Blog suchen. Es ist sehr schwer zu leben Räume dafür verwenden.

Sekunde, Es scheint nicht zu keinen Mechanismus zum "Geld verdienen" ein Windows live Space blog. Tatsächlich, um loszuwerden MS ads (von denen ich keinen Vorteil ableiten), Ich brauche eigentlich Microsoft bezahlen. (Mindestens, Das ist, wie ich es verstanden habe; Ich habe keine endgültigen Antworten und Fragen wie es erhalten).

Nun, da habe ich ein Muster und eine Reihe von Blogging-Gewohnheiten, Ich möchte andere Optionen bewerten. Ich habe einige Nachforschungen gemacht und es gibt viel Auswahl, aber ich bin neugierig, was andere Leute, vor allem anderen in der SharePoint-community (als Blogger oder Leser), gerne benutzen.

Wenn dieses Thema Sie interessiert und Sie haben eine Meinung oder bereit sind, Ihre Erfahrungen zu teilen, Bitte einen Kommentar hinterlassen oder mich direkt per e-Mail.

Vielen Dank!

<Ende />

Technorati Tags:

SharePoint Designer Email sendet ???? in einer E-Mail

Forum-Benutzer Fragen gelegentlich: Warum setzt SharePoint Designer ???? in meiner Email statt einen Feldwert?

Ein Grund, warum dies passiert ist, weil die Variable, auf die Sie verweisen, null ist.

Dies kann geschehen, weil Sie versuchen, ein Feld aus dem aktuellen Element"verweisen" aber der Benutzer nie einen Wert in dieses Formularfeld eingegeben.

<Ende />

Technorati Tags:

Vergleichen / Test für leere Daten in SharePoint Designer-Workflows

Szenario: In einer SharePoint Designer-Workflows, Sie müssen bestimmen, ob ein Datumsfeld leer ist.

Problem: SPD bietet keine direkte Methode für Datumsangaben auf etwas anderes als ein Datum vergleichen. Eine solche Bedingung z. kann nicht erstellt werden.: "If [DateField] gleich leer".

Lösung: Das Datum in eine Zeichenfolge konvertieren. Verwenden Sie Zeichenfolgenvergleich, um festzustellen, ob das Datum leer ist.

Screenshots:

Die folgenden Screenshots zeigen, wie Sie dies tun. In diesem Szenario, ein Feld für ein Element, "Umweltgenehmigungen:Erste Genehmigung Erinnerungsdatum", ist eingereicht und der Workflow als Reaktion auslöst.

Bild

Bild

Hinweise:

Als ich versuchte, dies, Ich war angenehm überrascht, zu erfahren, dass es funktioniert. Ich war besorgt, dass SharePoint Designer die Zeichenfolge Zuordnung unterbinden könnte (Variable:StringReminderDateDate) aber es war es möglich.

Ich war auch besorgt, so dass sie, der Wert kann Null und entweder sprengen die WF zur Laufzeit oder vielleicht die globale Temperatur erhöhen 1/2 eine gewisse, aber diese Bedenken waren unbegründet.

</Ende>

Technorati Tags:

Die Bar ist immer noch ziemlich hoch zu erweitern MOSS

Heute, Ich arbeitete mit einem Klienten und beschreiben, wie das Webpart für Inhaltsabfragen ändern und zusätzliche Bits von Informationen von einem Inhaltstyp angezeigt.

"Erste, Konfigurieren Sie die CQWP zum Herstellen einer Verbindung mit der Datenquellen, Anschließend exportieren Sie es an Ihrem Arbeitsplatz, Ändern <CommonViewFields>, Hochladen, Entfernen Sie das Original, und jetzt ist es "grundiert’ zum Anzeigen der anderen Spalten. Nächste, Öffnen Sie SharePoint Designer, Navigieren Sie zu der Website Auflistung Stamm, und suchen Sie ItemStyle.xsl. Kopieren Sie eine der Vorlagen als ein nützlicher Ausgangspunkt. Gehen Sie zurück und ändern die CQWP machen dieser neuen Vorlage verwenden. Schließlich, Ändern Sie die Vorlage um die neuen Felder zu rendern! (Vergessen Sie nicht, dass es wieder in so dass andere Benutzer die Ergebnisse sehen können)."

Es ist alles ganz klar für mich (und die meisten von uns SharePoint-Entwickler-Typen) Was hier vor sich geht und wie es ganz nett, wirklich, dass die Daten abrufen Aspekte der CQWP also gut getrennt von den Daten-Präsentation-Aspekten sind. Aber, Es ist nicht so einfach zu erklären, ist es?

<Ende />

Content Query Web Teil Ergebnisse in einem Raster anzeigen / Tabelle

Übersicht und Zielsetzung

Out of the box, MOOS’ Webpart für Inhaltsabfragen (CQWP) zeigt die Ergebnisse in Form einer Liste, ähnlich zu den Suchergebnissen. Es ist auch möglich, die Ergebnisse in einem Raster-Format anzeigen (dh. HTML-Tabellenformat). Raster-Formate sind unter Umständen besser. Ich beschreibe wie man diesen Effekt in diesem Artikel zu erreichen.

Business-Szenario

Ich arbeite mit einem Client auf eine unternehmensweite MOSS-rollout. Wir haben ihre Taxonomie gestaltet, so dass Projekte Bürger der ersten Klasse in der Hierarchie sind und ihre eigene Top-Level-Website haben. Projektmanager erhalten eine Singleton-Liste von Projektzusammenfassungsinformationen, wie Titel, Budget, erwarteter Fertigstellungstermin, verbleibende Budget und anderen Übersicht Typ Felder. Von "singleton" Ich meine eine benutzerdefinierte SharePoint-Liste, die garantiert, dass nur ein Element enthalten. Vereinfachender, Es sieht wie folgt aus:

Bild

Der technische Ansatz ist ähnlich wie beschrieben Hier (http://paulgalvin.spaces.live.com/blog/cns!1CC1EDB3DAA9B8AA!447.entry). Der CQWP wird eine XSL-Transformation ausgeben von HTML für den Browser zum Rendern verwendet..

Ich stelle mir vor immer das Ergebnis vor dem Tauchen in die XSL-Datei, da XSL ein Alptraum ist. Hier ist meine gewünschte Ergebnis:

Bild

HTML wie folgt generiert, die sich ergeben:

<HTML>
 <Körper>
 <Zentrum>
 <Tabelle Grenze= 1>

<!-- Etiketten-->
 <TR bgcolor= blau>
 <TD><Schriftart Farbe= weiß><b>Projektname</b></Schriftart></TD>
 <TD ausrichten= rechts><Schriftart Farbe= weiß><b>Vollständiges Datum</b></Schriftart></TD>
 <TD ausrichten= rechts><Schriftart Farbe= weiß><b>Budget</b></Schriftart></TD>
 <TD ausrichten= rechts><Schriftart Farbe= weiß><b>Tatsächliche Kosten</b></Schriftart></TD>
 <TD><Schriftart Farbe= weiß><b>Gesamtstatus</b></Schriftart></TD>
 </TR>

<TR>
 <TD>Computerraum neu verkabeln.</TD>
 <TD ausrichten= rechts>02/01/08</TD>
 <TD ausrichten= rechts>22,500.00</TD>
 <TD ausrichten= rechts>19,000.00</TD>
 <TD>In Bearbeitung</TD>
 </TR>

<TR>
 <TD>Bereitstellung Server für SQL Upgrade</TD>
 <TD ausrichten= rechts>04/01/08</TD>
 <TD ausrichten= rechts>7,500.00</TD>
 <TD ausrichten= rechts>0.00</TD>
 <TD>Geplant</TD>
 </TR>

</Tabelle>
 </Zentrum>
 </Körper>
</HTML>

Ansatz

Gehen Sie folgendermaßen vor um das Raster zu erstellen:

  1. Identifizieren Sie die Komponenten des Rasters (Zeilen/Spalten).
  2. Definieren und Erstellen der erforderlichen Websitespalten.
  3. Unterseiten für die Projekte und Singleton-Listen zu erstellen.
  4. Fügen Sie die CQWP zu einer Webseite hinzu und konfigurieren Sie es für Ihre Listen suchen.
  5. Ändern der CQWP XML um die zusätzlichen Spalten zu sammeln.
  6. Ändern Sie die XSL-Datei um eine Tabelle zu erzeugen.

Ich werde auf Nummer sechs konzentrieren. Zahlen eins bis vier sind geradlinig und etwas, das jeder Benutzer CQWP bereits getan hat. Nummer fünf wurde gut dokumentiert, andere einschließlich dieser erschöpfenden Screenshot beladenen Artikel aus MSDN Hier (http://msdn2.microsoft.com/en-us/library/bb897399.aspx) und Heather Solomon's blog Hier (http://www.heathersolomon.com/blog/articles/CustomItemStyle.aspx).

Schrauben und Muttern

Beginnen Sie und implementieren Sie die Schritte eins bis fünf nach der MSDN-Dokumentation und Heather Solomon Artikel.

An diesem Punkt, Sie haben Ihre CQWP zur Seite hinzugefügt, und Sie haben Ihre <CommonViewFields> nach Bedarf konfiguriert.

Die üblichen Schritte, Ich bekomme diese Zwischenergebnisse:

1. Erstellen eines Inhaltstyps, templatized benutzerdefinierte Listen für dieses Inhaltstyps und zwei Standorte. Hier ist der Content-type:

Bild

Hier ist die Websitestruktur:

Bild

2. Fügen Sie die CQWP nach Listenerstellung mein Projekt Unterwebsites und Singleton Projekt Zusammenfassung:

Bild

3. Fügen Sie alle zusätzliche Informationen, die ich über will die <CommonViewFields>:

        <Eigenschaft Name="CommonViewFields" Typ="Zeichenfolge">Project_x0020_Name;Project_x0020_Expenses;Project_x0020_Status;Project_x0020_Start_x0020_Date;Project_x0020_End_x0020_Date;Project_x0020_Budget</Eigenschaft>

Anmerkung, die ich hatte weiterhin die Eigenschaftenfelder auf einer Linie, oder es würde nicht funktionieren. (CQWP sagen mir, dass die Abfrage keine Elemente zurückgegeben).

4. An diesem Punkt, Wir sind bereit, über die MSDN-Artikel bewegen und Flip Sie Heather Solomon-Artikel. Ihre Schritte, beginnend in der Nähe von Schritt #5 um eine benutzerdefinierte erstellen / nicht duplizierte Version der ItemStyle.xsl. Ich befolgen Heathers Rat, bis hinauf Schritt 11 und erhalten diese Zwischenergebnisse:

4.1: Mein XSL-Vorlage wie folgt zu nennen:

<XSL:Vorlagenname = "Grid" Match = "Zeile[@Style = "Grid"]" Modus = "Itemstyle">

Ich passe auch leicht ihr vorgeschlagen <XSL:für jeden …> durch das Hinzufügen einer <BR /> Tag, um eine sauberere Liste bereitstellen:

    <XSL:für jeden Wählen Sie="@*">
      P:<XSL:Wert der Wählen Sie="Name()" /><BR/>
    </XSL:für jeden>

4.2: Ändern Sie das Webpart, zur Darstellung und wählen Sie meine "Gitter" Stil:

Bild

Die Änderung übernommen und hier ist das Ergebnis:

Bild

Aus dem Gesagten sehen wir, dass wir wollen, dass die Felder (Projektname, Kosten, Status, usw.) stehen für uns zu nutzen, wenn wir den HTML-Code ausgeben. Nicht nur das, aber wir sehen die Namen, mit denen wir diejenigen Spalten die XSL-Datei verweisen muss. Zum Beispiel, Wir verweisen auf Projekt-Status als "Project_x005F_x0020_Name".

An diesem Punkt, Wir fahren von Heather's Blog und von den Schultern der Riesen, Ich hinzufügen mein eigenes kleines bisschen.

ContentQueryMain.xsl

HINWEIS: Wenn sowohl ContentQueryMain.xsl als auch ItemStyle.xsl ändern, Checken Sie diese Dateien wieder, bevor die Auswirkungen Ihrer Änderungen angezeigt werden sollen.

Raster zu Zwecken, MOSS verwendet zwei verschiedene XSL-Dateien, um die Ergebnisse zu produzieren, sehen wir von einer CQWP. Das vorherige Bit Ausgabe generieren, Wir modifiziert ItemStyle.xsl. MOSS nutzt eigentlich ein weiteres XSL-Datei, ContentQueryMain.xsl, in Verbindung mit ItemStyle.xsl seine HTML generieren. Wie der Name schon sagt, ContentQueryMain.xsl ist der "main" XSL, das steuert den gesamten Fluss der Übersetzung. Durchläuft alle gefundenen Elemente und übergibt sie eins nach dem anderen zu Vorlagen in ItemStyle.xsl. Wir werden ItemStyle.xsl zum Generieren von geöffnetem ändern. <Tabelle> Tag vor dem Ausgeben von der ersten Zeile der Daten und dem schließenden <Tabelle> Tag nach der letzten Zeile ausgeben. Um dies zu erreichen, ContentQueryMain.xsl wird geändert, um unsere "Gitter zwei Parameter übergeben" Vorlage in ItemStyle.xsl, "letzte Zeile" und die "aktuelle Zeile". ItemStyle.xsl verwendet diese bedingt die erforderlichen Tags ausgeben.

Heather Solomon Technik, Wir suchen ContentQueryMain.xsl. Es befindet sich an der gleichen Stelle wie ItemStyle.xsl. Dieser Screenshot sollte helfen:

Bild

Wir müssen die folgenden Änderungen vornehmen:

  • Eine Xsl-Vorlage ändern, "CallItemTemplate" aufruft, die tatsächlich unser Grid-Vorlage in ItemStyle.xsl. Wir geben zwei Parameter der Grid-Vorlage weiter, sodass es die Daten haben wird, die es bedingt zu generieren, öffnen und schließen muss <Tabelle> Schlagwörter.
  • Ändern Sie ein weiteres Stück der ContentQueryMain.xsl, die CallItemTemplate"aufruft" ein "LastRow weiterzugeben" Parameter, so dass LastRow unsere Grid-Vorlage weiterbelastet werden kann.

Suchen Sie die Vorlage mit dem Namen "OuterTemplate.CallItemTemplate" durch die Zeichenfolge identifiziert:

  <XSL:Vorlage Name="OuterTemplate.CallItemTemplate">

Das gesamte Template wie folgt zu ersetzen:

  <XSL:Vorlage Name="OuterTemplate.CallItemTemplate">
    <XSL:param Name="CurPosition" />

    <!--
      Hinzufügen der "LastRow" Parameter.
      Wir verwenden, nur wenn der Element-Stil-Pass in "Grid" ist.
    -->
    <XSL:param Name="LastRow" />

    <XSL:Wählen Sie>
      <XSL:Wenn Test="@Style = 'NewsRollUpItem'">
        <XSL:anwenden-Vorlagen Wählen Sie="." Modus="ItemStyle">
          <XSL:mit param Name="EditMode" Wählen Sie="$cbq_iseditmode" />
        </XSL:anwenden-Vorlagen>
      </XSL:Wenn>
      <XSL:Wenn Test="@Style = 'NewsBigItem'">
        <XSL:anwenden-Vorlagen Wählen Sie="." Modus="ItemStyle">
          <XSL:mit param Name="CurPos" Wählen Sie="$CurPosition" />
        </XSL:anwenden-Vorlagen>
      </XSL:Wenn>
      <XSL:Wenn Test="@Style = 'NewsCategoryItem'">
        <XSL:anwenden-Vorlagen Wählen Sie="." Modus="ItemStyle">
          <XSL:mit param Name="CurPos" Wählen Sie="$CurPosition" />
        </XSL:anwenden-Vorlagen>
      </XSL:Wenn>

      <!--
              Übergeben Sie aktuelle Position und Lastrow an die Gitter itemstyle.xsl Vorlage.
              ItemStyle.xsl verwenden, die die offene ausgeben und schließen <Tabelle> Schlagwörter.
      -->
      <XSL:Wenn Test="@Style = "Grid"">
        <XSL:anwenden-Vorlagen Wählen Sie="." Modus="ItemStyle">
          <XSL:mit param Name="CurPos" Wählen Sie="$CurPosition" />
          <XSL:mit param Name="Letzter" Wählen Sie="$LastRow" />
        </XSL:anwenden-Vorlagen>
      </XSL:Wenn>

      <XSL:sonst>
        <XSL:anwenden-Vorlagen Wählen Sie="." Modus="ItemStyle">
        </XSL:anwenden-Vorlagen>
      </XSL:sonst>
    </XSL:Wählen Sie>
  </XSL:Vorlage>

Die Kommentare werden der Zweck der Änderungen.

Natürlich, die "OuterTemplate.CallItemTemplate" nennt sich aus einer anderen Dokumentvorlage. Suchen Sie nach dieser Vorlage für diese Textzeichenfolge:

<XSL:Vorlage Name="OuterTemplate.Body">

Blättern Sie durch die Anweisungen im OuterTemplate.Body und fügen den LastRow-Parameter wie folgt ein (als Kommentar in kursiv dargestellt):

<XSL:Call-template Name="OuterTemplate.CallItemTemplate">
  <XSL:mit param Name="CurPosition" Wählen Sie="$CurPosition" />
  <!-- Den LastRow Parameter einfügen. -->
  <XSL:mit param Name="LastRow" Wählen Sie="$LastRow"/>
</XSL:Call-template>

Nach all dem, Endlich haben wir die Dinge richtig einrichten, so dass unsere ItemStyle.xsl ausgeben kann <Tabelle> Markierungen an der richtigen Stelle.

ItemStyle.Xsl

HINWEIS: Wieder, ItemStyle.xsl nach Sie Änderungen vornehmen, so dass Sie die Auswirkungen dieser Änderungen sehen Einchecken.

Wir haben hier zwei Aufgaben:

  • Ersetzen Sie die gesamte Grid-Vorlage. Sie können von unten kopieren.
  • Fügen Sie einige Mumbo Jumbo außerhalb der Template-Definition, die "Formatcurrency ermöglicht" Vorlage arbeiten. (Sie können sagen, dass ich einen schwach Handle auf XSL).

Erste, im oberen Bereich der ItemStyle.xsl, Fügen Sie diese Zeile:

  <!-- Einige Hokuspokus, die uns ermöglicht, U.S anzeigen. Währung. -->
  <XSL:Dezimal-format Name="Personal" Ziffer="D" />

  <XSL:Vorlage Name="Standard" Spiel="*" Modus="ItemStyle">

Beachten Sie, dass ich fügte hinzu, es direkt vor der <XSL:Vorlagenname = "Standard" …> Definition.

Nächste, gehen Sie zurück zu unserer Grid-Vorlage. Ersetzen Sie die gesamte Grid-Vorlage durch folgenden code. Es ist gründlich kommentierte, aber zögern Sie nicht, mich per e-Mail oder Kommentare auf meinem Blog zu hinterlassen, wenn Sie Fragen haben.

  <XSL:Vorlage Name="Raster" Spiel="Zeile[@Style = "Grid"]" Modus="ItemStyle">

    <!--
      ContentMain.xsl übergibt, CurPos und zuletzt.
      Wir verwenden diese bedingt die offene ausgeben und schließen <Tabelle> Schlagwörter.
    -->
    <XSL:param Name="CurPos" />
    <XSL:param Name="Letzter" />

    <!-- Die folgenden Variablen sind unverändert aus der Norm ItemStyle.xsl -->
    <XSL:Variable Name="SafeImageUrl">
      <XSL:Call-template Name="OuterTemplate.GetSafeStaticUrl">
        <XSL:mit param Name="UrlColumnName" Wählen Sie=""ImageUrl""/>
      </XSL:Call-template>
    </XSL:Variable>
    <XSL:Variable Name="SafeLinkUrl">
      <XSL:Call-template Name="OuterTemplate.GetSafeLink">
        <XSL:mit param Name="UrlColumnName" Wählen Sie=""LinkUrl""/>
      </XSL:Call-template>
    </XSL:Variable>
    <XSL:Variable Name="DisplayTitle">
      <XSL:Call-template Name="OuterTemplate.GetTitle">
        <XSL:mit param Name="Titel" Wählen Sie="@Title"/>
        <XSL:mit param Name="UrlColumnName" Wählen Sie=""LinkUrl""/>
      </XSL:Call-template>
    </XSL:Variable>
    <XSL:Variable Name="LinkTarget">
      <XSL:If Test="@OpenInNewWindow = 'True'" >_blank</XSL:If>
    </XSL:Variable>

    <!--
      Hier definieren wir eine variable, "TableStart".  Diese enthält den HTML-Code, mit dem wir die Eröffnung der Tabelle sowie die Spaltenbeschriftungen definieren.  Beachten Sie, dass bei CurPos = 1, Es enthält den HTML-Code in einem CDATA-tag.
      Ansonsten, Es wird leer sein.

      Der Wert des TableStart ist ausgegeben, jedes Mal ItemStyle über ContentQueryMain.xsl aufgerufen wird.
    -->
    <XSL:Variable Name="tableStart">
      <XSL:If Test="$CurPos = 1">
        <![CDATA[
        <Tabellenrahmen = 1>
          <TR-Bgcolor = "blau">
            <TD><Schriftfarbe = "White"><b>Projektname</b></Schriftart></TD>
            <TD align = "Right"><Schriftfarbe = "White"><b>Vollständiges Datum</b></Schriftart></TD>
            <TD align = "Right"><Schriftfarbe = "White"><b>Budget</b></Schriftart></TD>
            <TD align = "Right"><Schriftfarbe = "White"><b>Tatsächliche Kosten</b></Schriftart></TD>
            <TD><Schriftfarbe = "White"><b>Gesamtstatus</b></Schriftart></TD>
          </TR>
        ]]>
      </XSL:If>
    </XSL:Variable>

    <!--
      Eine andere variable, Simple einfach definiert das schließende Tag Tabelle.

      Wie bei tableStart, Es ist immer ausgegeben.  Deshalb dessen Wert zugeordnet ist bedingt basierend auf, ob wir die letzte Zeile von ContentQueryMain.xsl übergeben wurde, haben.
    -->
    <XSL:Variable Name="Simple">
      <XSL:If Test="$CurPos = $Last">
        <![CDATA[ </Tabelle> ]]>
      </XSL:If>
    </XSL:Variable>

    <!--
      Strahlen Sie immer den Inhalt des tableStart.  Ist dies nicht die erste Zeile von ContentQueryMain.xsl an uns übergeben, Wir wissen, dass ihr Wert leer sein wird.

      Deaktivieren der Ausgabeschutz weil wenn TableStart es nicht blank, Es enthält aktuelle HTML, das wollen wir durch den Browser gerendert werden.  Wenn wir sagen, nicht Ausgabe der XSL-Parser deaktivieren entkommen, Es werden Sachen wie generieren"&lt;Tabelle&gt;" anstelle von"<Tabelle>".
    -->
    <XSL:Wert der Wählen Sie="$tableStart" Das Disable-Output-escaping="Ja"/>


    <TR>
      <!--
      P:Project_x005F_x0020_Name P:Project_x005F_x0020_End_x005F_x0020_Date P:Project_x005F_x0020_Budget P:Project_x005F_x0020_Expenses P:Project_x005F_x0020_Status
      -->
      <TD>
        <XSL:Wert der Wählen Sie="@Project_x005F_x0020_Name"/>
      </TD>

      <TD ausrichten="rechts">
        <XSL:Wert der Wählen Sie="@Project_x005F_x0020_End_x005F_x0020_Date"/>
      </TD>

      <TD ausrichten="rechts">
        <XSL:Call-template Name="FormatCurrency">
          <XSL:mit param Name="Wert" 
Wählen Sie="@Project_x005F_x0020_Budget"></XSL:mit param> </XSL:Call-template> </TD> <TD ausrichten="rechts"> <XSL:Call-template Name="FormatCurrency"> <XSL:mit param Name="Wert" Wählen Sie="@Project_x005F_x0020_Expenses">
</XSL:mit param> </XSL:Call-template> </TD> <TD> <XSL:Wert der Wählen Sie="@Project_x005F_x0020_Status"/> </TD> <!-- Alle folgenden auskommentiert, Dinge zu klären. Jedoch, bringen Sie es zurück und stopfen ihn in eine <TD> um seine Wirkung zu sehen. --> <!-- <Div Id = "Linkitem" Klasse = "Element"> <XSL:Wenn testen = "String-Length($SafeImageUrl) != 0"> <Div Class = "Bild-Raum-Links"> <a Href = "{$SafeLinkUrl}" Ziel = "{$LinkTarget}"> <IMG-Klasse = "Bild-fixed-Width" Src = "{$SafeImageUrl}"
Alt = "{@ImageUrlAltText}"/> </eine> </div> </XSL:If> <Div Class = "Link-Element"> <XSL:Call-template
Name="OuterTemplate.CallPresenceStatusIconTemplate"/> <a Href = "{$SafeLinkUrl}"
Ziel = "{$LinkTarget}" Titel = "{@LinkToolTip}"> <XSL:Wert-wählen Sie "$DisXSLyTitle" = /> </eine> <Div Class = "Beschreibung"> <XSL:Wert von select="@Description" /> </div> </div> </div>
--> </TR> <!-- Emit dem schließenden Tag Tabelle. Wenn wir nicht auf die letzte Zeile, Dies wird leer sein.. --> <XSL:Wert der Wählen Sie="$Simple" Das Disable-Output-escaping="Ja"/> </XSL:Vorlage> <XSL:Vorlage Name="FormatCurrency"> <XSL:param Name="Wert" Wählen Sie="0" /> <XSL:Wert der Wählen Sie='Format-Nummer($Wert, "$DDD,DDD,DDD.EDC, "Personal")' /> </XSL:Vorlage>

Norm WSS/MOSS Dateneingabemasken unterstützen keine CSS Drop-downs (oder andere Intra-Mitteilung)

UPDATE (04/2008): Dieser große Blog-Eintrag zeigt einen gute Javascript basierten Ansatz für dieses problem: http://webborg.blogspot.com/2008/04/add-functions-and-events-to-sharepoint.html

UPDATE II: (04/2008): Dieser Blog-Eintrag sieht vielversprechend als auch: http://www.cleverworkarounds.com/2008/03/13/free-mosswss-2007-web-part-hide-controls-via-javascript/

Mehrmals pro Woche, Wenn nicht täglich, Forumbenutzer beschreiben eine Anforderung, die normalerweise über cascading Drop-Downs erfüllt sein würde. Zum Beispiel, Ich habe zwei Dropdown-Steuerelemente:

  • Liste der U.S. Staaten
  • Liste der U.S. Städte.

Als verantwortliche Benutzeroberflächenautomatisierungs-Anbietern, Wir wollen es wie das Arbeiten:

  • Paul wählt eine U.S. Zustand aus der Dropdown-Liste.
  • Dies bewirkt, dass die Städte Dropdown-Filtern nur Orte, die zu den ausgewählten Zustand gehören.
  • Paul wählt eine Stadt aus der gefilterten Liste.

Es gibt keine Out-of-Box-Unterstützung für dieses feature. Tatsächlich, Es gibt keine OOB Unterstützung für jede Art von Kommunikation direkte Intra-form. Dazu gehören programmgesteuert ausblenden/aktivieren/deaktivieren Felder Feld Veränderungen an anderer Stelle auf dem Formular.

Das eigentliche Ziel dieses Artikels zu beschreiben, mögliche Lösungen und diese sind die Optionen, wie ich sie kennen:

  1. Entwickeln eines benutzerdefinierten Spaltentyps. Als ein Custom-Spalte-Entwickler, Sie haben die volle Kontrolle über die Welt"" dieser benutzerdefinierten Spalte. Sie können ein kaskadierendes Dropdown-auf diese Weise implementieren.
  2. Erwägen, workflow. In einigen Fällen, Sie möchten automatisch Feld basierend auf einem anderen Feld Wert einen Wert zuweisen. In diesem Fall, Sie würden normalerweise versuchen, eine berechnete Spalte verwenden, aber einige Male, es erhalten nicht nur die Arbeit.. SharePoint Designer-Workflows ist eine relativ verwalten-freundliche Alternative zu herunterfallen in Code und visual studio. Wenn Sie diesen Weg zu gehen, Beachten Sie das Problem durch behoben in diesem Artikel (http://paulgalvin.spaces.live.com/blog/cns!CC1EDB3DAA9B8AA!405.entry).
  3. Event-Handler: Wie workflow, Dies ist eine Lösung nach der Tatsache. Der Ereignishandler ist eine .NET-assembly (C#, VB.NET) auf welche SharePoint übergibt die Steuerung. Das Objekt, die, das Sie entwickeln, hat Zugriff auf die Daten der Liste (und das gesamte Objektmodell) und kann jede benötigte Berechnung.
  4. Verwenden Sie SharePoint Designer, um benutzerdefinierte Formulare erstellen. Ich habe keine direkten Erfahrung mit diesem Ansatz, but I hear they are doing good things with NewForm.aspx these days 🙂
  5. Rollen Sie Ihre eigenen ASP.NET Daten Eingabefunktion (als eigenständige Webseite oder als Webpart) und verwenden Sie stattdessen.

Wenn jemand weiß, dass andere bzw. bessere Optionen, Bitte einen Kommentar und ich werde den Körper von diesem Post zu aktualisieren.

<Ende />

Technorati Tags:

Ja/Nein (das Kontrollkästchen) Filterung im Webpart für Inhaltsabfragen

Zum Filtern nach einer Abfrage für die ja/keine Kontrollkästchen unter dem Titel "PG Meilenstein", CQWP wie folgt konfigurieren:

Bild

Dies ist eine weitere dieser Fragen offensichtlich-einmal-Sie-wissen-It aber hard-to-find-an-answer-to: Gewusst wie: Filtern auf ein ja/kein Kontrollkästchen mithilfe des Inhaltsabfrage-Webparts.

Die erste Suchergebnis Ich finde, mit dem Suchbegriff "Filter Ja/Nein Inhaltsabfrage-Webpart" Hochdruck daran falsch ist, Also ich dachte, ich zieh das da oben und sehen, ob es das falsche Ergebnis in den typischen Suchergebnissen ersetzen kann.

Es ist ganz einfach: True Werte = "1" und falschen Werte ungleich "1" (schöne retro, tatsächlich).

Im obigen Beispiel, Ich erstellte Websitespalte vom Typ Ja/Nein" (CheckBox)" benannte "PG-Meilenstein". Ich habe es in eine Doc-Bibliothek, einige Dokumente hochgeladen, Legen Sie den Wert für ein paar und es getestet.

<Ende />