maandelijkse archieven: Februari 2008

Kleine openbare aankondiging: Windows Live beveiligingsinstellingen en contacteren ruimte eigenaars

Ik heb ontvangen een handvol berichten van personen via de ingebouwde "Stuur een bericht" functie Microsoft biedt live spaces (die ook host is voor mijn blog) elke maand.

Ongeveer een derde van de tijd, deze gebruikers hebben beveiligd hun live Spaces-account zodat ik kan niet antwoorden. Dit is een soort van anti-spam functie ik neem aan dat.

</einde>

Eenvoudige uitleg: “De waarde valt niet binnen het verwachte bereik.”

UPDATE: Een anonieme poster liet grote commentaar over interne namen. Zorg ervoor dat om het te lezen.

Bij het werken met gebeurtenis ontvangers en andere code die verwijst naar de SharePoint-lijstitems via het objectmodel, Ik maken vaak fouten dat deze fout tijdens runtime te genereren:

Fout laden en event receiver Conchango.xyzzyEventReceiver uitgevoerd in xyzzy, Versie = 1.0.0.0, Cultuur = neutraal, PublicKeyToken = 0dc50a750396c3ac. Aanvullende informatie is hieronder. : De waarde valt niet binnen het verwachte bereik.

Ik denk dat dit is een vrij algemene fout die potentieel veel verschillende manieren wordt veroorzaakt. Echter, een simpele uitleg is dat ik een veld onjuist referencement ben. Als de naam van het veld "Vervaldatum", Ik moet verwijzen naar het als dit in een event receiver:

Eigenschappen.ListItem["Vervaldatum"]

Als ik verkeerd spelt of de verkeerde gebruiksvoorbeeld wanneer wordt verwezen naar het veld, SharePoint genereert de hierboven genoemde runtime-fout. Bijvoorbeeld, Dit is verkeerd:

Eigenschappen.ListItem["vervaldatum"]

</einde>

Abonneren op mijn blog.

Technorati Tags:

Eindgebruiker Quick Tip: Soort weergaven in een documentbibliotheek, Lijst, etc.

We kunnen, moet en vele weergaven in SharePoint-lijsten maken (documentbibliotheken, aangepaste lijsten, etc). SharePoint-lijsten altijd beschikbare weergaven in alfabetische volgorde. We kunnen dit niet veranderen met behulp van de functionaliteit voor bestandsdialoogvensters die. Als het kan worden gedaan via aanpassing (en ik ben niet zeker dat het kan), het is veel te technisch voor uw typische eindgebruiker.

Als u wilt bepalen van de volgorde in welke SharePoint lijsten beschikbare weergaven, Voeg gewoon een nummer of een brief aan de naam van de weergave, Als in:

1 – Door materiële Type
2 – Alle documenten
3 – Vervaldatum

-of-

A – Door materiële Type
B – Alle documenten
C – Vervaldatum

Ik heb ook weergaven waarvan het doel strikt is te voeden een KPI. Ik heb gevolgd deze naamgevingsconventie:

Z_KPI_[Beschrijving]

Die ervoor zorgt dat mijn "KPI" weergaven verschijnen aan de onderkant van de lijst.

</einde>

Abonneren op mijn blog.

Technorati Tags: ,

Zondag grappig: “Toen ik een kleine jongen”

Als een ouder, ergens langs de lijn die ik ontdekte de "toen ik een kleine jongen" truc.

Mijn zoon, waarschijnlijk vier of vijf op het moment, speelde een ballon en als meest kleine jongens die met ballonnen spelen, Hij schoot het. Hij was erg overstuur. De wereld was gekomen om een einde. Ik zei tegen hem, "toen ik kleine jongen, Ik had een ballon en op popped en uiteindelijk, Ik heb een nieuwe ballon." Het leek te helpen hem omgaan met zijn verlies en leidde tot een leuke praten over hoe het was toen ik een kleine jongen.

Dat werkte goed als een troost techniek en ik het een meerdere malen over de volgende periode van tijd gebruikte. Ik kreeg in de problemen eens wanneer zijn Monster Rancher 3 schepsel stierf. Ik sprak over hoe mijn hond, Prins, was overleden bij een auto-ongeluk. Deze keer, zijn antwoord was, "Nu ik voel me slecht over twee dingen!" Ik weggelopen met behulp van de "toen ik een kleine jongen" techniek voor troost na die.

Vóór het incident dode hond, echter, Ik was ook begonnen met de techniek te overtuigen hem om te doen klusjes. "Toen ik een kleine jongen, Ik had uit te gaan en krijgen de krant", "mijn kamer schoon", "get mama haar koffiekopje", etc.

Dit was ook vrij succesvol voor een tijdje, maar hij begon steeds opstand tegen de tirannie van mijn kindertijd. Een gebeurtenis, in het bijzonder, betekende het einde. Ik vertelde hem om de vuilnisbakken van curb terug naar de garage. Hij voerde aan, en ik heb gereageerd, "Toen ik een kleine jongen, Ik moest het afval terug te nemen naar de garage." Hij reageerde, "Oh ja! Goed toen je nog een kleine jongen, dat was dom!".

</einde>

Abonneren op mijn blog.

Technorati Tags:

Weergaven en kolommen in lijsten en documentbibliotheken kunnen niet worden beveiligd

UPDATE (02/29/08): Dit nieuwe codeplex project lijkt te bieden een methode voor het beveiligen van afzonderlijke kolommen: http://www.codeplex.com/SPListDisplaySetting. Hebt u enige ervaring met het werken, laat alstublieft een reactie.

Forum posters heeft vaak een vraag als deze: "Ik heb een manager weergave en en een personeel weergave van een lijst. Hoe beveilig ik de manager weergave zodat personeel kan niet het gebruiken?"

Zij stellen ook vaak een verwante vraag: "Ik wil een specifieke metagegevens kolom beveiligen zodat alleen beheerders die kolom bewerken kunnen terwijl anderen kunnen niet zelfs zien."

Deze antwoorden van toepassing op beide WSS 3.0 en MOSS:

  • SharePoint biedt geen out-of-the-box ondersteuning voor het beveiligen van weergaven.
  • SharePoint biedt geen out-of-the-box ondersteuning voor beveiliging kolommen.

Er zijn verschillende technieken een kunnen volgen om te voldoen aan deze soorten beveiligingsvereisten. Hier is wat ik kan bedenken:

  • Beveiliging op itemniveau voor out-of-the-box gebruiken. Weergaven eren altijd item niveau Beveiligingsconfiguratie. Gebeurtenis ontvangers en/of werkstroom kunt automatiseren beveiligingsinstellingen toewijzing.
  • Persoonlijke weergaven gebruiken voor "bevoorrechte" Weergaven. Deze zijn gemakkelijk genoeg om in te stellen. Echter, in verband met hun "persoonlijke" natuur, Deze moeten worden geconfigureerd voor elke gebruiker. Gebruik standaard beveiligingsconfiguratie om te voorkomen dat iemand anders een persoonlijke weergave maken.
  • Een webonderdeel voor gegevensweergave gebruiken en uit te voeren een soort AJAXy beveiligingsoplossing trimmen.
  • Uw eigen lijst weergave functionaliteit roll en nemen veiligheid trimmen op kolomniveau.
  • Wijzigen van de formulieren voor gegevensinvoer en JavaScript gebruiken in combinatie met het beveiligingsmodel te implementeren van beveiliging op gebruikersniveau kolom trimmen.
  • Een InfoPath-formulier voor gegevensinvoer gebruiken. Implementeren van beveiliging op gebruikersniveau kolom trimmen via web serviceoproepen aan SharePoint en voorwaardelijk Verberg velden zo nodig.
  • Uw eigen ASP.net-gegevens ingang functie waarmee kolom beveiliging trimmen roll.

Geen van deze opties zijn echt dat geweldig, maar er is ten minste een pad te volgen als u wilt, zelfs als het is moeilijk.

OPMERKING: Als je naar beneden een van deze paden, Vergeet niet over "acties-> Openen met Windows Verkenner". U wilt er zeker van dat u met die functie test om ervoor te zorgen dat het niet als een "achterdeur werkt" en uw veiligheid regeling te verslaan.

Hebt u andere ideeën voor of ervaringen met kolommen of weergaven beveiligen, Gelieve e-mail me of een reactie achterlaten en ik zal updaten dit bericht zo nodig.

</einde>

Abonneren op mijn blog.

Technorati Tags:

Quick Tip: BDC ADF versienummers niet gelijk zijn uw vriend

Als u bent hand-codering ADF bestanden en doen een heleboel code/importeren/testcycli, Gebruik het versienummer uw leven gemakkelijker te maken.

Ik haat om het toe te, maar tot deze week, Ik was altijd de ADF verwijderen en opnieuw importeren. Dit zou breken mijn kolommen met zakelijke gegevens en maakt me opnieuw draad hen. Alle overbodige.

Dien dit onder "het is duidelijk zodra je zien".

Voorbeeld:

<LobSystem
xmlns:XSi="http://www.w3.org/2001/XMLSchema-instance" XSi:schemaLocation="http://schemas.Microsoft.com/Office/2006/03/BusinessDataCatalog BDCMetadata.xsd" Type="WebService" Versie="1.2.0.0" Naam="xyzzyDocumentReview" xmlns="http://schemas.Microsoft.com/Office/2006/03/BusinessDataCatalog">

Die versie en Reimport wijzigen en de bestaande kolom voor zakelijke gegevens gebruikt automatisch de bijgewerkte versie met geen aanvullende configuratie vereist.

</einde>

Abonneren op mijn blog.

Technorati Tags:

Oplossing: BDC Picker toont slechts één kolom van resultaten

In mijn pogingen gaande op het verstrekken van een nuttiger opzoekkolom met behulp van BDC, Ik raakte een muur met de BDC picker. Als u nog niet zien, de BDC picker is vergelijkbaar met een datumkiezer mensen behalve dat het werkt met kolommen van het type "zakelijke gegevens".

U toegang tot de picker door te klikken op het pictogram van de open boek van een kolom voor zakelijke gegevens zoals:

afbeelding

De bovenstaande afbeelding toont een kolom voor zakelijke gegevens genaamd "Master Document-Id". Die kolom is aangesloten, via BDC, bij een webservice. De webservice retourneert twee kolommen met gegevens: Document-ID en titel. De zakelijk doel hier is bedoeld als een "dit document is gebaseerd op" functie. Gebruikers selecteren een "master" document en wanneer ze opslaat, de ontvanger van een gebeurtenis opgehaald meta gegevensvelden uit het model waarnaar wordt verwezen.

Standaard, de BDC datumkiezer eruitziet als dit wanneer ik naar een document waarvan de ID zoeken = "38":

clip_image002

Dat is nuttig, maar niet goed genoeg. Mensen denken niet in termen van id 's, zij denken in termen van titels en/of andere metagegevens. De Kleurkiezer kunt u zoeken op andere kolommen (bijvoorbeeld. Titel) maar de feitelijke lijst met titels bleek niet weergegeven, gewoon hun arts is zoals hier wordt weergegeven:

clip_image002[1]

(Het het schermschot is niet zo groot, omdat ik niet kies een zoekopdracht die elke geldige resultaten retourneert, maar je kunt zien dat als het had sommige resultaten gevonden, het zou alleen hebben aangetoond van de arts, niet titels).

Ik zocht hoog en laag naar het antwoord op dit en is mislukt. Mijn collega, de eerbiedwaardige Jonathan Bradshaw, had geconfronteerd en dit probleem opgelost. Wanneer ik stak hem voor hulp, Hij wees me in de goede richting.

Configureren van de datumkiezer om aan te tonen van meerdere kolommen via de ShowInPicker"" onroerend goed in de automatische Documentinvoer:

<Eigenschap Naam="ShowInPicker" Type="System.Boolean">True</Eigenschap>

Meer in detail:

  <!-- Titel -->
  <TypeDescriptor TypeName="System.String" Naam="Titel" >
    <LocalizedDisplayNames>
      <LocalizedDisplayName LCID="1033">Titel</LocalizedDisplayName>
    </LocalizedDisplayNames>
    <Eigenschappen>
      <Eigenschap Naam="DisplayByDefault" Type="System.Boolean">True</Eigenschap>
      <Eigenschap Naam="ShowInPicker" Type="System.Boolean">True</Eigenschap>
    </Eigenschappen>
  </TypeDescriptor>

Deze eigenschap voeren een klein probleem. Zodra u het één keer instellen, u moet voor elke kolom die u wilt weergeven. In mijn geval, BDC picker arts toonde standaard. Echter, Zodra ik heb toegevoegd "ShowInPicker" titel, Arts niet langer weergegeven. Ik dat opgelost door expliciet de eigenschap van de ShowInPicker ingesteld voor Doc-ID.

Hier is het resultaat:

afbeelding

(Ik zal uitleggen de vreemd "168 – CamlSchema.xsd" bouw in een toekomstig blogpost. In het kort, het is een aaneengeschakelde tekenreeks die voorziet in een iets betere user experience).

Natuurlijk, deze blog entry hebben geschreven, Ik heb een zoekopdracht voor "ShowInPicker" en vond vele hits, met inbegrip van dit: http://msdn2.microsoft.com/en-us/library/ms583986.aspx. Het verklaart de betekenis van die eigenschap samen met enkele andere goede dingen van de BDC.

</einde>

Abonneren op mijn blog!

Technorati Tags:

Snelle & Gemakkelijk: Een map maken en toewijzen van een inhoudstype (Of, Hebben uw KPI's en hen ook eten)

Om te werken rond een KPI-probleem Schreef ik over hier, Ik heb een aantal testen en ontdekte dat KPI's werk tegen mappen met metagegevens op dezelfde manier dat zij tegen documenten werken of lijstitems. Ik bleek het uit door het creëren van een nieuw inhoudstype gebaseerd op het inhoudstype van de map en vervolgens een paar velden toegevoegd. Ik sommige indicatoren gemaakt en bewezen bij mezelf dat KPI's werken zoals verwacht. Dit was welkom nieuws. Het is niet perfect, omdat de DrillDown u van krijgen is de KPI tegen de mappen niet precies wat je wilt. Dit is niet te veel een nadeel in mijn geval omdat 1) de eind-de gebruikers weet niet beter en 2) de drill-down gaat naar een map. Ze klikt u op de mapnaam en ze zijn op het item. Het is twee keer klikken in plaats van een, dat is niet het einde van de wereld.

Dit stroomde mooi met het werk dat ik deed. Ik ben het creëren van een map voor elk document dat wordt geüpload. Dit wordt gedaan via een gebeurtenis ontvanger. Als een resultaat, het is een fluitje van een cent te houden de bovenliggende map meta-gegevens in sync met de KPI-gedreven meta-gegevens uit het bestand zelf want het sanitair al in plaats is. Hierdoor kan ik mijn KPI's hebben en ze ook opeten

Ik wijzigde de ontvanger van de gebeurtenis om de map toevoegen en stel deze nieuwe map inhoudstype aan mijn aangepaste KPI-vriendelijke inhoudstype. Dit codefragment did naar de truc:

 SPFolderCollection srcFolders = targetWeb.GetFolder("Documenten").Submappen;
  SPFolder addedFolder = srcFolders.Add(Eigenschappen.ListItem.ID.ToString());
  SPContentTypeId kpiCT = Nieuw SPContentTypeId("0x0120002A666CAA9176DC4AA8CBAA9DC6B4039F");
  addedFolder.Item["Content Type ID"] = kpiCT;
  addedFolder.Item.Update();

Om de werkelijke inhoudstype-ID zoeken, Ik benaderd dat inhoudstype via site-instellingen en kopie/plak deze via de URL zoals:

afbeelding

</einde>

Abonneren op mijn blog!

Technorati Tags: ,

Snel en eenvoudig: De SPFolder van een SPListItem krijgen in een Event Receiver

Ik haat om het toe te, maar ik worstelde met deze alle dag. Mijn ontvanger gebeurtenis nood voor bijwerken van een veld van de bovenliggende map. Dit beetje laat zien hoe om het te doen:

privé VOID UpdateParentFolder(SPItemEventProperties eigenschappen)
{

SPFolder thisItemFolder = eigenschappen.ListItem.File.ParentFolder;
thisItemFolder.Item["ZZ goedkeuringsstatus"] = "Goed nieuws, iedereen!";
thisItemFolder.Item.Update();


} // UpdateParentFolder

In dit geval, Ik ben bezig met een documentbibliotheek en de eigenschappen zijn afkomstig uit een gebeurtenis ItemAdded.

De truc is dat u de SPFolder van het item rechtstreeks vanuit het item zelf niet kan krijgen (dwz. Eigenschappen.ListItem.Folder is leeg). In plaats daarvan, Ga naar het lijstitem gekoppelde bestand en het bestand map ophalen.

</einde>

Abonneren op mijn blog!

Technorati Tags:

Nog een ander Event Receiver Debug truc

Ik weet zeker dat ik ben niet de eerste persoon om te komen met dit. Echter, Ik heb niet gemerkt dat iedereen publiceren een truc als dit sinds ik begon veel aandacht aan de Gemeenschap afgelopen juli. Dus, Ik dacht dat ik post-it deze snelle en gemakkelijke debug tip.

Ik ben bezig met een gebeurtenis-ontvanger die begon te genereren deze fout in de 12 korf:

Fout laden en event receiver Conchango.xyzzyEventReceiver uitgevoerd in xyzzy, Versie = 1.0.0.0, Cultuur = neutraal, PublicKeyToken = blahbalhbalh. Aanvullende informatie is hieronder. : Object reference not set to een exemplaar van een object.

Ik wist niet waar ik deze bug had ingevoerd omdat ik had te veel dingen in een van mijn code/implementeren/testcycli gedaan.

Ik heb geprobeerd deze oplossing om mijn VOB in er met de hoop dat SharePoint 12 component zou tonen de stacktrace, maar geen geluk. Ik weet niet of het is mogelijk en als iemand doet, laat het me weten 🙂

Ik weet dat het is mogelijk om te schrijven van uw eigen berichten in het logboek om de 12 korf. Eerlijk gezegd, Ik wilde iets een beetje minder eng en sneller uit te voeren.

Het kwam bij me op dat ik op zijn minst sommige fundamentele trace-informatie krijgen kon door vangen en opnieuw gooien generieke uitzonderingen zoals dit:

  Probeer {
    UpdateEditionDate(eigenschappen);
  }
  vangst (Uitzondering e)
  {
    gooien Nieuw Uitzondering("Dispatcher, UpdateEditionDate(): Uitzondering: [" + e.ToString() + "].");
  }

Dit kwam in de 12 thusly component:

Fout laden en event receiver Conchango.xyzzyEventReceiver uitgevoerd in xyzzy, Versie = 1.0.0.0, Cultuur = neutraal, PublicKeyToken = blahblahblah. Aanvullende informatie is hieronder. : Dispatcher, UpdateEditionDate(): Uitzondering: [NullReferenceException.: Object reference not set to een exemplaar van een object. op Conchango.xyzzyManagementEventReceiver.UpdateEditionDate(SPItemEventProperties eigenschappen) op Conchango.xyzzyManagementEventReceiver.Dispatcher(SPItemEventProperties eigenschappen, String eventDescription)].

Dat gaf me alle details die ik nodig had om de sporen van dit probleem en ik verwacht om het veel gaan vooruit te gebruiken.

</einde>

Abonneren op mijn blog!