kategorie Argief: SharePoint

Hoe geheimsinnige SharePoint foute op te los.

Oorsig:

Ontfouting is moeilik om by die ontwikkeling van persoonlike funksies vir Windows Sharepoint Services 3.0 (WSS) of Microsoft Office SharePoint Server (MOSS). The main culprit is that SharePoint normally surfaces very little diagnostic information on the web browser when an error occurs. This blog entry describes how to locate additional system-generated diagnostic information that can often provide that extra bit of detail that one needs in order to identify root causes. This can then lead to solving the problem.

Ek het hierdie tegniek gebruik met groot sukses anders geheimsinnige foute op te los.

Benadering:

SharePoint slaan 'n groot deel van die inligting op 'n diagnostiese teken in 'n log-lêer in die 12 Hive.

Die "12 korf" is gewoonlik in "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12". (Ek is nie seker of dit moontlik is vir die 12 korf na nêrens anders te lewe, in werklikheid).

Die idee is om die huidige log lêer op te spoor, force the error and then quickly open the log file. These log files are characterized by:

  • Copious amounts of information. SharePoint generates a very large amount of diagnostic information and writes it to that log file very quickly. You need to be quick with the fingers to capture it.
  • Multiplicity. SharePoint does not write to a single log file but rather generates multiple log files in sequence.
  • Kopieer en plak mooi in MS Excel.

My gunsteling metode:

  1. Maak 'n Windows Explorer verwys na die 12 Hive logs.
  2. Sorteer die oog op die toon deur gewysigde datum (die meeste nuwe eers).
  3. Merk die mees onlangse log-lêer.
  4. In 'n blaaier, dwing om die fout te voorkom.
  5. Vinnig die huidige log lêer oopmaak en die inhoud kopieer na MS Excel.
  6. Spring na die einde en analiseer die betrokke inskrywings.

Ander aantekeninge:

By verstek, die diagnostiese log is geleë in die 12 Hive logs gids.

MS Beste praktyke (soos per Mike T. van Microsoft) state that the log files should be saved to a separate hard drive. One does this via central admin. Your system administrator may have done this, in welke geval jy moet natuurlik die log lêer daar in plaas van die standaard 12 korf plek).

Hierdie inskrywing fokus op kwessies soos:

  • SharePoint workflow versuim het om te begin as gevolg van 'n interne fout.
  • (meer bygevoeg word verloop van tyd)
  • Hierdie inskrywing is nuttig diagnose van workflow foute (bijv. "Die workflow versuim het om te begin as gevolg van 'n interne fout").

MOSS: Effektiewe inleiding tot 'n organisasie

(hierdie item kruis gepos tussen http://paulgalvin.spaces.live.com/blog/ en http://blogs.conchango.com)

Die plasings op hierdie webtuiste is my eie en verteenwoordig nie noodwendig Conchango se poste, strategieë of menings.

Oorsig:

Hierdie inskrywing beskryf 'n bietjie agtergrond inligting oor 'n groot (3,000 gebruikers) Microsoft Office SharePoint Server (MOSS) rollout and what we did to get the project rolling in such a way that the client is happy and firmly down a path that ends with full adoption of the MOSS feature set. As of the writing of the entry, Ons is ongeveer 50% complete with the first phase of the project. As things progress, Ek sal hierdie item werk en / of skryf nuwe inskrywings.

In hierdie spesifieke geval, the company had already installed SharePoint Portal Server 2003. The IT group installed the product in a sort of "let’s see if anyone cares" fashion. It was quickly adopted by many business users and became quite popular in the enterprise at large. Soos jy kan dink, Dit was nie die beste uitrol strategie (wat die kliënt erken geredelik) en wanneer MOSS op die toneel aangekom, the client resolved to "do it right" en ons gehuur het om hulle te help.

Een van die sentrale vrae waarmee ons toe ons begin die implementering van hierdie projek was: Hoe voer ons MOSS aan hierdie kliënt? Given that the client already had experience with SharePoint, ons het gewonder — do we need to do "differential" opleiding of begin ons van die grond af? After working with key users, we determined that treating this as a green field project made more sense.

That decision gave a starting point but still left us with the major requirement of figuring out a good strategy for rolling MOSS out to the enterprise. MOSS is such a big animal … it includes content management, dokument bestuur, soek, sekuriteit, gehoor fokus, projek bestuur, "fabulous forty" templates, workflow, besigheid data connector, ens.. Couple this with the fact that it’s a large organization that kan werklik gebruik maak van feitlik elke groot MOSS funksie en jy het die bestanddele van 'n groot projek met 'n onderneming te bereik en baie goeie dinge gebeur.

Ons is gekonfronteer met hierdie kwessie keer op keer … Moss het 'n onderneming bereik met sy onderneming funksie-stel, Maar selfs ietwat gesofistikeerde kliënte het 'n harde tyd geestelik absorbeer die eienskappe, laat staan ​​die integrasie van 'n aansienlike gedeelte van hulle in hul daaglikse roetine.

I don’t have a magic solution to the problem. I instead address just the very first steps that we’ve taken with the client to lead them down the path to successful long-term adoption.

Omvang:

As much as I wanted the team to craft a project plan that included such milestones as "PoepleSoft Integration via BDC Completed", "New Cross-Departmental Product Launch Workflow Complete" and "Executive Management KPI’s Accepted", I had to settle for something less. This is not to say that "less" sleg. In werklikheid, the "less" that we decided for the initial rollout was miles ahead of where they were before we started. In ons geval, the "less" verander in:

  • Eenvoudige dokument bestuur met behulp van dokument biblioteke, version control and content types.
  • Effektiewe soek gebaseer op die inhoud tipes en persoonlike vooraf soek (deur die bestuur van eiendomme, XSLT mooi resultate te lewer, ens.).

In bykomend tot die bogenoemde onderneming breë funksies (wat beteken dat hulle sou word uitgerol na alle departemente en gebruikers), ons ook die volgende Singleton in-omvang mini-projekte:

  • Bewys van die konsep BDC integrasie.
  • Multi-stap-en multi-tak workflow proses geskep via SPD.
  • Komplekse Path vorm.
  • Oppervlak KPI's vir 'n paar sake-proses (waarskynlik HR talent verkryging in ons geval, al wat kan verander).

Die omvang hier is nie 100% accurate but representative of our approach and sufficient for my purpose here, which is to explain what I consider to be an "effective" bekendstelling van MOSS wat die kliënt stewig af die goue paaie na volle MOSS aanneming.

I won’t write much more about the singleton in this entry. I do want to point out that these are part of our over-arching strategy. The idea is to implement the core document management and search features to all users yet provide highly functional, high visible and highly representative examples of other core MOSS features which are simply beyond the ability of most users to absorb at this early stage. Egter, they will be "out there" en een hoop dat ander sake-eenhede sal weet of leer oor hulle en wil daardie funksies vir hulself, leading to greater adoption. These singleton success stories also serve to provide our sales team "ammunition" vir die suksesvolle wen tweede, third and n-phase projects.

Wat het Ons stel en hoekom?

Nadat hulle op dokument bestuur en soek as 'n basislyn onderneming breë vereiste, we needed to start gathering details. As a practical matter, hierdie gedraai rondom die begrip van hul dokumente en wat uiteindelik koppel aan die begrip van die inhoud tipes.

I’ve found it’s difficult to explain content types without visual aides. More technical folk can walk away from a discussion about content types when CT’s are described in database terms. "A CT is similar to a database table, dit het kolomme en kolomme word gedefinieer in terme van data tipes, maar CT data tipes sluit in meer as 'n eenvoudige integer / datum, but also "choice" and "lookup" and the like." We can talk about "extending" inhoud tipes, much like one can inherit functionality from a base class in object oriented languages. However this is obviously not helpful for the transportation department admin person who has no technical background. Dws, byna almal wat saak maak in 'n mos uitrol.

Using a white board is iffy. I’ve presented the idea of a content type and drawn brilliant (of so dit lyk asof hulle) foto's van die inhoud tipes en wat hulle doen vir jou in terme van die soektog en hoe hulle kan uitgebrei word, ens.. Op die ou end, dit voel soos 'n paar gloeilampe het aangeskakel, but the resulting white board picture is a mess.

Dit het ons na ons huidige en tot dusver mees doeltreffende landing plek: 'n mos sandbox webwerf ingestel om hierdie eienskappe te toon.

Met behulp van die sandbox webwerf, ons demonstreer:

  • Inhoud tipes:
    • Die skep van 'n CT met verskeie tipes data (teks, datum, keuse, boolean, soek, ens.).
    • Uitbreiding van 'n CT deur die skep van 'n nuwe CT gebaseer op 'n ouer.
    • Soek vir dokumente met behulp van CT metadata.
  • Dokument biblioteke:
    • Assosieer 'n enkele CT met 'n biblioteek.
    • Wat gebeur wanneer ons laai 'n dokument na daardie biblioteek?
    • Assosieer verskeie CT se met 'n doc biblioteek.
    • Wat gebeur wanneer ons laai 'n dokument na daardie biblioteek?
    • Filter en sorteer via kolomopskrifte in 'n doc lib.
    • Dokument biblioteek uitsig:
      • Sorteer
      • Groepering
      • "Quick entry" (gegewensblad oog)
      • "Untagged data" (om te help met migrasie na MOSS uit ander bronne inhoud; meer inligting oor hierdie hieronder).

Die Sandbox Site:

Ons ontwerp ons sandbox webwerf na 'n permanente kenmerk in die ontwikkeling omgewing gebruik word vir opleiding doeleindes lank nadat ons klaar is met die projek en sluit 'n paar artefakte soos beskryf:

Inhoud tipes:

Ons het die volgende tipes inhoud: Faktuur, Koop Order, Dienste faktuur.

Ons gekies faktuur en bestelling, want hulle is min of meer universeel onder
stood entities. Everyone in business understands that an invoice is a demand for payment to a kliënt vir 'n bedrag uitgereik op 'n sekere datum betaal moet word soos per paar betaling terme. This leads to a natural definition of a CT which we called "Training Invoice" (om dit te onderskei van enige ander soort faktuur). The purchase order is similarly easily defined. We also created a "Training Services Invoice" by creating a new CT based upon the "Training Invoice" CT en bygevoeg net een kolom, "services rendered".

Met die bogenoemde, Ons kan nou demonstreer paar belangrike funksies van CT se sonder om te verval probeer om 'n abstrakte konsep te verduidelik; everyone already understands what we mean by "invoice" and "purchase order" en in plaas daarvan om te fokus op die meganika van die CT self.

Custom Lyste:

CT with columns of type "lookup" point to a custom list or document library. We use this extensively and for the sandbox, we created one supporting custom list that contains customers. We picked customers because it’s an easy concept to understand and easy to demonstrate. The Invoice CT has a column, "Kliënt" that is defined of type "lookup" that points at this list.

We created a similar custom list to manage "vendors" for the "Purchase Order" CT.

Dokument biblioteke:

Ons het twee dokument biblioteke: "Invoices" and "Mixed Documents".

We configured the invoices document library to manage only documents of CT type "Invoice".

We configured the "Mixed Documents" biblioteek al drie CT se bestuur.

Skep verskeie sienings wat wys sorteer, filter, gegewensblad en groepering.

Soek:

Ons gedefinieer twee nuwe bestuur eiendomme en gekarteer om hulle te faktuur nommer en die kliënt.

We created a new customized advance search site and modified it to enable users to search for "invoices" die gebruik van dié twee gekarteerde eiendomme.

Verander die XSLT sodat die faktuur en kliënt nommer, wanneer die huidige, appear in an HTML table in a bright color. The objective here is to demonstrate that such formatting is possible.

Sit alles bymekaar:

Ons reël vir die sleutel gebruikers om deel te neem in 'n demonstrasie.

Ons volg hierdie eenvoudige script:

  1. Beskryf die betekenis en doel van 'n CT, gebruik van fakture en die aankoop bestellings as voorbeelde.
  2. Wys die faktuur CT definisie terselfdertyd hulle verseker dat hulle nie nodig het om te gebruik daardie skerms hulself, net haal die konsepte.
  3. Gaan na die fakture dokument biblioteek.
  4. Laai 'n dokument.
  5. Demonstreer dat die kliënt drop-down werklik afkomstig van 'n persoonlike lys.
  6. Voeg 'n nuwe kliënt aan die kliënt lys en dan werk die onlangs foto faktuur se meta data met die nuutgeskepte kliënt.
  7. Switch to the "mixed documents" library and upload a document. Explain how the system prompts for a document type.
  8. Go back to invoices document library and show how clicking on a column name changes sort order.
  9. Demonstreer kolom-vlak filter.
  10. Toon verskillende standpunte demonstreer multi-vlak sortering, filter en groepering.
  11. Wys die data vel oog.
  12. Explain the purpose of a "untagged documents" sien.
  13. Skakel oor na die persoonlike gevorderde soek.
  14. Teen hierdie tyd, die onlangs opgelaai dokument moes gewees het gekruip en geïndekseer, so 'n soektog wat demonstreer die vermoë om op die faktuur op te spoor deur middel van die gekarteerde eiendom.
  15. Ons demonstreer die verskil tussen soek via gekarteerde eiendomme vs. net 'n teks soek.

Op hierdie punt, we are more or less done with the demo. It seems to take about 30 aan 45 minute, afhangende van hoeveel mense vra vrae.

We then send them back to their desks with "homework". This consists of a simple excel spreadsheet where we ask them to define for us what they think they need in terms of CT’s, beide op 'n hoë vlak (net naam en besigheid gebruik) as well as columns and type of data they would store in the column. We don’t ask them to define column data types in MOSS terms, but business terms.

In Opsomming:

We’ve created a sandbox environment that we can use to demonstrate some core MOSS features whose appeal are enterprise-wide.

We have modeled easily understood and common business entities so that users can focus on MOSS and not get bogged down on the entities / voorbeelde hulself.

Business users walk away from theses sessions with "homework" in die vorm van Excel-dokumente wat hulle nou is bevoeg om in te vul en te gebruik vir die ontwerp van hul eie eerste-cut inhoud tipes.

Ten slotte, as ons doen demos met verloop van tyd, die kliënt se span lede hulself meer in staat om na uit te voer, doen om die demo's om hulself en oor die algemeen vry om die res van ons het om te werk aan meer komplekse kwessies, soos globale taksonomie, komplekse werkstromen, BDC en die soos.

MOSS: Funksionele Voorbeeld - Custom Data Tipe

Besigheid scenario:

Onderneming breë implementering van MOSS vir produksie-maatskappy met 30+ terreine en 'n paar dosyn korporatiewe departemente.

Besigheid doel:

Ten spyte van 'n menigte van die besigheid groepe (departemente, plekke, ens.), sekere data moet in stand gehou word op 'n globale vlak. Byvoorbeeld, 'n gesaghebbende meester lys van al die fisiese plekke van die maatskappy (bijv. produksie fasiliteite, pakhuis plekke, verkope kantore) behou moet word in 'n sentrale plek.

Tegniese Probleem:

Die onderneming taksonomie is geïmplementeer met behulp van verskeie webwerf versamelings. Ons wil graag die gesaghebbende lys van fisiese plekke te skep in 'n persoonlike WSS lys. Toe, wanneer ons nodig het om 'n kolom in 'n tipe inhoud te hê (of 'n kolom by 'n lys of doc biblioteek) wat vervat korporatiewe plekke, we would create a column using the "lookup" gegee tipe en punt na die meester lys.

Ongelukkig, lookup datatypes must access a source list "locally" Dit beteken dat ons gesaghebbende lys nie kan strek webwerf versamelings.

Tegniese oplossing:

Implementering van 'n nuwe persoonlike data tipe geïmplementeer wat gebaseer is op SPField en voorgestel as 'n DropDown List in die UI wie ListItems vul van die meester WSS lys.

Ons het 'n nuwe tuiste versameling genoem "http://localhost/EnterpriseData". Daar, we created a custom list named "Corporate Locations". This list just uses the standard "Title" veld van die lys van die werklike korporatiewe plekke te bevat.

Een volg 'n paar diskrete stappe om 'n persoonlike data tipe te skep in WSS. Hulle is:

  1. Definieer 'n klas wat erf van SPField ('n mens kan besit van ander velde, indien nodig).

Hier is die kode vir daardie:

openbare klas XYZZYCorporateLocationField : SPFieldText
{
openbare XYZZYCorporateLocationField
(SPFieldCollection velde, string typeName, string displayName)
: basis(velde, typeName, displayName) { }

openbare XYZZYCorporateLocationField
(SPFieldCollection velde, string displayName)
: basis(velde, displayName) { }

openbare oorheers BaseFieldControl FieldRenderingControl
{
kry
{
BaseFieldControl control = nuwe XYZZYCorporateLocationFieldControl();
control.FieldName = hierdie.Interne Naam;
terugkeer control;
} //kry
} // fieldrenderingcontrol

openbare oorheers string GetValidatedString(voorwerp waarde)
{
indien (hierdie.Required || value.ToString().Equals(String.Leë))
{
gooi nuwe SPFieldValidationException ("Department is not assigned.");
}
terugkeer basis.GetValidatedString(waarde);
} // getvalidatedstring

} // XYZZYCorporateLocation

  1. Definieer 'n ander klas wat afgelei van die basis veld beheer, soos in:

openbare klas XYZZYCorporateLocationFieldControl : BaseFieldControl
{
beskerm DropDown List XYZZYCorporateLocationSelector;

beskerm oorheers string DefaultTemplateName
{
kry
{
terugkeer "XYZZYCorporateLocationFieldControl";
}
} // DefaultTemplateName

openbare oorheers voorwerp Waarde
{
kry
{
EnsureChildControls();
terugkeer hierdie.XYZZYCorporateLocationSelector.SelectedValue;
} // kry
stel
{
EnsureChildControls();
hierdie.XYZZYCorporateLocationSelector.SelectedValue = (string)hierdie.ItemFieldValue;
} // stel
} // override object Value

beskerm oorheers nietig CreateChildControls()
{

indien (hierdie.Field == nul || hierdie.ControlMode == SPControlMode.Vertoon)
terugkeer;

basis.CreateChildControls();

hierdie.XYZZYCorporateLocationSelector =
(DropDown List)TemplateContainer.FindControl("XYZZYCorporateLocationSelector");

indien (hierdie.XYZZYCorporateLocationSelector == nul)
gooi nuwe Uitsondering("ERROR: Cannot load .ASCX file!");

indien (!hierdie.Page.IsPostBack)
{

die gebruik van (SPSite site = nuwe SPSite("Http://localhost / enterprisedata"))
{
die gebruik van (SPWeb web = site.OpenWeb())
{

SPList currentList = web.Lists["Corporate Locations"];

foreach (SPItem XYZZYCorporateLocation in currentList.Items)
{
indien (XYZZYCorporateLocation["Title"] == nul) voortgaan;

string theTitle;
theTitle = XYZZYCorporateLocation["Title"].ToString();

hierdie.XYZZYCorporateLocationSelector.Items.Add
(nuwe ListItem(theTitle, theTitle));

} // foreach

} // using spweb web = site.openweb()
} // using spsite site = new spsite("Http://localhost/enterprisedata")

} // if not a postback

} // CreateChildControls

} // XYZZYCorporateLocationFieldControl

Die bogenoemde kode implemente basies die logika vir die mense aan die DropDown List, met waardes van die WSS persoonlike lys geleë op http://localhost/enterprisedata and named "Corporate Departments".

Ek gedefinieer beide klasse in 'n enkele. Cs lêer, saamgestel is dit en sit dit in die GAC (sterk vereiste, natuurlik).

  1. Implementering van 'n beheer sjabloon (.ascx) soos aangedui:

<%@ Beheer Taal="C#" Erf="Microsoft.SharePoint.Portal.ServerAdmin.CreateSiteCollectionPanel1,Microsoft.SharePoint.Portal,Weergawe = 12.0.0.0, Kultuur = neutraal,PublicKeyToken = 71e9bce111e9429c" compilationMode="Always" %>
<%
@ Registreer Tagprefix="wssawc" Naamruimte="Microsoft.SharePoint.WebControls" Vergadering="Microsoft.SharePoint, Weergawe = 12.0.0.0, Culture = neutral, PublicKeyToken = 71e9bce111e9429c" %> <%@ Registreer Tagprefix="SharePoint" Naamruimte="Microsoft.SharePoint.WebControls" Vergadering="Microsoft.SharePoint, Weergawe = 12.0.0.0, Culture = neutral, PublicKeyToken = 71e9bce111e9429c" %>
<SharePoint:Lewering Sjabloon ID="XYZZYCorporateLocationFieldControl" runat="server">
<Sjabloon>
<ASP:DropDown List ID="XYZZYCorporateLocationSelector" runat="server" />
</Sjabloon>
</
SharePoint:Lewering Sjabloon>

Die bogenoemde is gered in c:\program lêers algemene lêers Microsoft gedeelde web bediener uitbreidings 12 controltemplates.

  1. Ten slotte, skep ons 'n XML lêer te stoor in die ..... 12 XML Gids. Dit is CAML te verduidelik dat ons persoonlike data tipe en vir my voorbeeld, lyk soos hierdie:

<?xml weergawe="1.0" encoding="UTF-8" ?>
<
FieldTypes>
<
FieldType>
<
Field Naam="Type Name">CorporateLocations</Field>
<
Field Naam="ParentType">Teks</Field>
<
Field Naam="TypeDisplayName">Corporate Locations</Field>
<
Field Naam="TypeShortDescription">All XYZZY Corporate locations including manufacturing or other facilities.</Field>
<
Field Naam="UserCreatable">WAAR</Field>
<
Field Naam="ShowInListCreate">WAAR</Field>
<
Field Naam="ShowInDocumentLibraryCreate">WAAR</Field>
<
Field Naam="ShowInSurveyCreate">WAAR</Field>
<
Field Naam="ShowInColumnTemplateCreate">WAAR</Field>
<
Field Naam="FieldTypeClass">Conchango.XYZZYCorporateLocationField, XYZZYCorporateLocationField, Weergawe = 1.0.0.0, Culture = neutral, PublicKeyToken=b0b19e85410990c4</Field>
<
RenderPattern Naam="DisplayPattern">
<
Skakel>
<
Expr>
<
Kolom />
</
Expr>

<Geval Waarde=""/>

<Default>
<
HTML>
<![CDATA[
<span style="color:Red"><b>]]>
</
HTML>

<
Kolom SubcolumnNumber="0" HTMLEncode="WAAR"/>

<HTML><![CDATA[</b></span>]]></HTML>

</
Default>
</
Skakel>

</
RenderPattern>
</
FieldType>
</
FieldTypes>
This XML file adds the custom data type to the WSS "library" en pas dit op teen die GAC'd vergadering.

Na beweeg al hierdie stukkies in plek, iisreset op die bediener en dit moet almal begin werk mooi.

MOSS: Opdatering van 'n persoonlike lys

Daar is baie goeie voorbeelde van die opdatering van persoonlike lyste via die SDK. Hier is nog 'n.

Besigheid probleem: Path vorm ontwerp wat gebruikers in staat stel aanlyn aankooprekwisisies te betree. PO rekwisisienommers moet tradisionele volgorde gebaseerde heelgetalwaardes en bereken outomaties.

Business Solution: Skep 'n persoonlike MOSS lys met twee kolomme: "ControlField" and "ControlValue". Die waarde kolom bevat die volgende aankoop rekwisisienommer. Note that the generic "control" naamkonvensie maak voorsiening vir die toekoms beheer velde wat gebruik kan word as dit nodig is.

Tegniese oplossing: Skep 'n web diens verkry word deur die Path kliënt. Die web diens terug terug die volgende aankooprekwisisie nommer en updates die waarde van die lys.

Lesse wat geleer:

  • Wanneer jy hierdie web diens as 'n data bron aan die Path vorm, Ek het gevind dat dit nodig is om dit te omskep in 'n UDC en stoor dit in 'n data verband biblioteek.
  • Ek het ook gevind dat dit nodig is om kruis domein script via sentrale Dienste Administrasie // aansoek bestuur // vorm bediener verstellings.
  • Die eerste keer wat die vorm het probeer om die web om toegang te verkry, dit neem 'n rukkie en op die geleentheid, sou dit 'n afsnytyd. Ek vroetel met instellings in vorm bediener verstellings die time-out instellings uit te brei en in die oë te help.

Die kode:

die gebruik van Stelsel;
die gebruik van System.Web;
die gebruik van System.Web.Services;
die gebruik van System.Web.Services.Protocols;
die gebruik van Microsoft.SharePoint;
die gebruik van System.Configuration;

[WebService(Namespace = "Http://www.conchango.com/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
openbare klas PoService : System.Web.Services.WebService
{
openbare PoService () {

//Uncomment the following line if using designed components
//InitializeComponent();
}

/// <opsomming>
/// Obtain the next PO number from the sharepoint po number control list.
/// Increment the PO number in that list.
/// </opsomming>
/// <opbrengste></opbrengste>
[WebMethod]
openbare string GetNextPoNumber()
{
string SpPoControlSiteName; // Name of the actual MOSS site that hosts the PO Control list.
string SpPoControlListName; // Name of the actual MOSS list containing the Po control.

SpPoControlSiteName = ConfigurationSettings.AppSettings["PoControlListHostingSite"].ToString();
SpPoControlListName = ConfigurationSettings.AppSettings["PoControlList"].ToString();

string nextPoReqNumber = "Xyzzy";

die gebruik van (SPSite site = nuwe SPSite(SpPoControlSiteName))
{
die gebruik van (SPWeb web = site.OpenWeb())
{

SPList currentList = web.Lists[SpPoControlListName];

foreach (SPItem controlItem in currentList.Items)
{

indien (((string)controlItem["ControlField"]).Equals("NextPoNumber"))
{
nextPoReqNumber = (string)controlItem["ControlValue"];

int int_nextPoReqNumber;
int_nextPoReqNumber = Skakel.ToInt32(nextPoReqNumber);

int_nextPoReqNumber ;

controlItem["ControlValue"] = int_nextPoReqNumber;
controlItem.Update();
}

} // Locating, reading and updating the PO number in the list.


} // using spweb web = site.openweb()
} // using spsite site = new spsite("Http://localhost / Mizuho ")

terugkeer nextPoReqNumber;

}
}