Kategoriarkiv: MOSS

MOSS avansert tilpasning av søk — Saken gjør noe i Avansert søk XSLT

Jeg endre ikke avansert søk XSLT svært ofte, så det virker som jeg er klatring små åser hver gang.

Min nyeste leksjon er dette: Saken saker når refererer til en kolonne. I min Avansert søk, Jeg har kolonner som er definert som dette:

<roten xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<
Kolonner>
<
Kolonne navn="GafTrainingInvoiceNumber" />
<
Kolonne navn="GafTrainingInvoiceLocation" />
<
Kolonne navn="Arbeids-IDen"/>
<
Kolonne navn="Rang"/>
<
Kolonne navn="Tittel"/>
<
Kolonne navn="Forfatter"/>
<
Kolonne navn="Størrelse"/>
<
Kolonne navn="Banen"/>
<
Kolonne navn="Beskrivelse"/>
<
Kolonne navn="Skrive"/>
<
Kolonne navn="Områdenavn"/>
<
Kolonne navn="CollapsingStatus"/>
<
Kolonne navn="HitHighlightedSummary"/>
<
Kolonne navn="HitHighlightedProperties"/>
<
Kolonne navn="ContentClass"/>
<
Kolonne navn="IsDocument"/>
<
Kolonne navn="PictureThumbnailURL"/>
</
Kolonner>
</
roten>

XLST som viser hvor fakturaen nummer og faktura hadde vært:

<p>
Trening fakturanummer: <XSL:verdien av Velg="GafTrainingInvoiceNumber"/>
<
br></br>
Faktura skolene: <XSL:verdien av Velg="GafTrainingInvoiceLocation"/>
</
p>

Men, Velg har å referere til egenskapen i alle små bokstaver, som i:

<p>
Trening fakturanummer: <XSL:verdien av Velg="gaftraininginvoicenumber"/>
<
br></br>
Faktura skolene: <XSL:verdien av Velg="gaftraininginvoicelocation"/>
</
p>


Til jeg løst som, Resultatene viste etikettene (dvs.. "Trening fakturanummeret") men ingen data.

MOSS / InfoPath Forms Server (InfoPath 2007) rullegardinlisten ytelse

Ekstra kategori: InfoPath

Sammendrag: En InfoPath 2007 deployert til en MOSS server-skjemaet gir en miste-ned liste over leverandører som er knyttet til en egendefinert MOSS-liste. Når du velger en leverandør, regler tilordne verdier til en håndfull tekstfelt som salgsrepresentant navn, adresse, byen, tilstand, zip og telefon. Ytelse er fryktelig. Vi merker at ytelsen blir verre (i et ikke-lineært) for hvert enkelt felt oppdaterer vi denne måten. Dvs., Hvis vi bare oppdatere salgsrepresentant navnet, Det tar [x] tidsperiode. Hvis vi oppdaterer salgsrepresentant, address1, Adresse2, byen, tilstand, zip, Det tar 10 ganger lenger.

Løsning: Skrive en webtjeneste (eksempelkode finnes her) som er sendt i en leverandør og returneres tilbake leverandør detaljer. Deretter, tilordne feltene slik. Selv om dette virker treg, Det var ingen merkes forskjell i ytelse når vi tildelt 1 feltet versus 8 felt. Som en ekstra bonus, brukerne får en kul "kontakter serveren" Cylon effekten mens de venter på skjemaet for å aktivere og bruke tjenesten resultater.

MOSS: Unntak oppstod. (Exception from HRESULT: 0x 80020009 (DISP_E_EXCEPTION))

OPPDATERINGEN: Vi har aldri bestemt det rot årsaken til dette problemet og det aldri overflaten igjen.

Vi merker under implementering av et nettsted utvikling som plutselig, to brukere får ikke tilgang til en områdesamling. Disse kontoene kan godkjenne på hovednettstedet, men når du prøver å få tilgang til en bestemt områdesamling, de får bare en blank skjerm. Ingen feil vises, bare en hvit tom side.

Vi logger deg på som en administrator for samling og prøver å legge til en av disse brukerne som en administrator, og denne gangen, Når du trykker på "OK", Vi får denne meldingen:

Unntak oppstod. (Exception from HRESULT: 0x 80020009 (DISP_E_EXCEPTION))

Vi brukte litt tid forskning dette og dessverre, ikke komme opp med noe nyttig. Det var noen meldinger i diagnoseloggen, men det var vanskelig å nøyaktig relatere dem med dette problemet.

Til slutt, løste vi områdesamlingen slettes og opprettes på nytt det og at det.

Hvis jeg finne ut hva som forårsaket dette i fremtid, Jeg vil oppdatere dette innlegget.

MOSS: Veksle mellom egendefinerte lister og tilbake filtrerte data til InfoPath

Virksomhet Scenario:

Angi en metode som gjør det mulig å raskt skrive inn nøyaktig innkjøpsrekvisisjoner.

Forretningsproblem:

Klienten gjør forretninger med flere hundre leverandører.

Leverandører er "type" bestemt. Dette betyr at en leverandør selger datautstyr (f.eks. Dell) eller kontorrekvisita (f.eks. Kramper).

Hvordan kan vi aktivere sluttbrukere som oppretter Kjøp rekvisisjoner Velg en gyldig leverandør?

Forretningsløsning:

Skille leverandører i systemet via "type".

Brukerne kan velge hvilke"" produkt og gir en filtrert sett med aktuelle leverandører.

Teknisk løsning:

Et InfoPath-skjema er designet som lar brukerne angi online innkjøpsrekvisisjoner.

To InfoPath valglistene kontrollere leverandører utvalget. Første, brukeren velger en "Kjøp type". Dette begrenser en andre valglisten inneholder bare leverandører som selger for denne kjøp. Dette er en klassisk gjennomgripende rullegardinliste.

Leverandører er lagret i en MOSS egendefinert liste med egendefinerte kolonner for leverandørattributter som navn, adresse og spesielt "type".

Implementere en tjeneste for en InfoPath-klient å konsumere som går gjennom leverandørlisten egendefinert, returnerer bare leverandører matchende en medfølgende "type".

Starte web-tjenesten via InfoPath-skjemaet.

Erfaringer:

  • Første, Det synes nødvendig å gå denne ruten. Jeg ville ha foretrukket å gjøre filtreringen i InfoPath og ikke opprette web service funksjonalitet her. Men, skjemaer server gir ikke den nødvendige filtreringsfunksjon. Vi kan sette en regel på en "type" valglisten i skjemaet for å åpne slags leverandør spørringen på nytt, men vi kan ikke få det til å fungere. Derfor, Det var nødvendig å implementere webtjenesten.
  • Dette er en klassisk "gjennomgripende valgliste" problemet i InfoPath danner server verden og det er mange gode eksempler der ute som forklarer hvordan å løse.
  • En tom verdi for en kolonne i leverandøroversikten returnerer ikke en tom streng når det refereres til som dette: initItem["Leverandørnavn"]. I stedet, den returnerer en null.

Noen andre notater:

  • Jeg returnerer en matrise[] leverandører fordi jeg hadde problemer med retur en ArrayList. InfoPath ble klagende om det og jeg har ikke tid eller tilbøyelighet til å kjempe over det.. Dette, selvfølgelig, setter en kunstig grense på antall leverandører. Det også tvunget meg til å implementere en trim() metoden på matrisen fordi jeg hater tanken på å returnere tilbake 100's null leverandører. InfoPath vare ikke, men det mast på meg. (Igjen, Dette var lettere enn å kjempe InfoPath over ArrayLists).
  • Jeg implementert en GetSpecificVendorByName() funksjonen også, som kan være lærerikt.

Koden:

ved hjelp av Systemet;
ved hjelp av System.Web;
ved hjelp av System.Web.Services;
ved hjelp av System.Web.Services.Protocols;
ved hjelp av Microsoft.SharePoint;
ved hjelp av System.Configuration;

/// <Sammendrag>
///
Leverandør-tjenesten: Gir leverandøren relaterte tjenester som i dag brukes av et infopath-skjema for klient.
///
/// Historie:
/// ——–
/// 07/24/07: Innledende koding, Paul J. Gavin av Conchango.
///
/// </Sammendrag>
[WebService(Namespace = "http://www.conchango.com/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
offentlig klassen VendorService : System.Web.Services.WebService
{

/// <Sammendrag>
/// Representerer en leverandør fra en egendefinert sharepoint-liste vedlikeholdes av MSUSA.
/// </Sammendrag>
offentlig klassen Leverandør
{
offentlig Leverandør() { }

offentlig Leverandør(SPItem initItem)
{
Hvis (! (initItem["Leverandørnavn"] == null)) Leverandørnavn = initItem["Leverandørnavn"].ToString();
Hvis (! (initItem["Adresse 1"] == null)) VendorAddress1 = initItem["Adresse 1"].ToString();
Hvis (! (initItem["Adresse 2"] == null)) VendorAddress2 = initItem["Adresse 2"].ToString();
Hvis (! (initItem["City"] == null)) VendorCity = initItem["City"].ToString();
Hvis (! (initItem["VendorPhone"] == null)) VendorPhone = initItem["VendorPhone"].ToString();
Hvis (! (initItem["PurchaseType"] == null)) VendorType = initItem["PurchaseType"].ToString();
Hvis (! (initItem["State"] == null)) VendorState = initItem["State"].ToString();
Hvis (! (initItem["Zip"] == null)) VendorZip = initItem["Zip"].ToString();
Hvis (!(initItem["Fax"] == null)) VendorFax = initItem["Fax"].ToString();
Hvis (!(initItem["SalesRepName"] == null)) VendorSalesRepName = initItem["SalesRepName"].ToString();

VendorItemId = initItem.ID; // Unik ID vedlikeholdes via MOSS.
}

offentlig Int VendorItemId;
offentlig streng Leverandørnavn;
offentlig streng VendorAddress1;
offentlig streng VendorAddress2;
offentlig streng VendorCity;
offentlig streng VendorState;
offentlig streng VendorZip;
offentlig streng VendorPhone;
offentlig streng VendorType;
offentlig streng VendorSalesRepName;
offentlig streng VendorFax;
}

offentlig VendorService () {

//Uncomment følgende linje hvis bruker utviklet komponenter
//InitializeComponent();
}

privat Leverandør[] GenerateTestVendors()
{
Leverandør[] resultList;
resultList = nye Leverandør[100];

Leverandør v;
v = nye Leverandør();
v.VendorAddress1 = "v1_address1";
v.VendorAddress2 = "v1_address2";
v.VendorCity = "v1_city";
v.VendorName = "v1_vendorname";
v.VendorPhone = "v1_vendorphone";
v.VendorState = "v1_st";
v.VendorType = "v1_type";
v.VendorZip = "v1_zip";

resultList[0] = v;

v = nye Leverandør();

v.VendorAddress1 = "v2_address1";
v.VendorAddress2 = "v2_address2";
v.VendorCity = "v2_city";
v.VendorName = "v2_vendorname";
v.VendorPhone = "v2_vendorphone";
v.VendorState = "v2_st";
v.VendorType = "v2_type";
v.VendorZip = "v2_zip";

resultList[1] = v;

v = nye Leverandør();
v.VendorAddress1 = "v3_address1";
v.VendorAddress2 = "v3_address2";
v.VendorCity = "v3_city";
v.VendorName = "v3_vendorname";
v.VendorPhone = "v3_vendorphone";
v.VendorState = "v3_st";
v.VendorType = "v3_type";
v.VendorZip = "v3_zip";

resultList[2] = v;

avkastning resultList;

}

[WebMethod]
offentlig Leverandør GetSpecificVendorById(Int vendorId)
{
streng SpVendorSiteName; // Navnet på selve MOSS området som inneholder egendefinerte leverandøroversikten.
streng SpVendorListName; // Navnet på den faktiske MOSS listen inneholder leverandører.

SpVendorSiteName = ConfigurationSettings.AppSettings["VendorListHostingSite"].ToString();
SpVendorListName = ConfigurationSettings.AppSettings["VendorList"].ToString();

ved hjelp av (SPSite Site = nye SPSite(SpVendorSiteName))
{

ved hjelp av (SPWeb Web = området. OpenWeb())
{

SPList currentList = web. Lister[SpVendorListName];

SPItem specificItem = currentList.Items[vendorId];

avkastning nye Leverandør(specificItem);

} // bruke spweb web = site.openweb()
} // bruke spsite siden = nye spsite("http://localhost/mizuho")

}

[WebMethod]
// Forutsetter at leverandørnavnet er unik, fra en bedriftsperspektiv
offentlig Leverandør GetSpecificVendorByVendorName(streng være)
{
streng SpVendorSiteName; // Navnet på selve MOSS området som inneholder egendefinerte leverandøroversikten.
streng SpVendorListName; // Navnet på den faktiske MOSS listen inneholder leverandører.

SpVendorSiteName = ConfigurationSettings.AppSettings["VendorListHostingSite"].ToString();
SpVendorListName = ConfigurationSettings.AppSettings["VendorList"].ToString();

ved hjelp av (SPSite Site = nye SPSite(SpVendorSiteName))
{
ved hjelp av (SPWeb Web = området. OpenWeb())
{

SPList currentList = web. Lister[SpVendorListName];

foreach (SPItem vendorItem i currentList.Items)
{
Hvis (vendorItem["Leverandørnavn"] == null) «««;

Hvis (vendorItem["Leverandørnavn"].ToString().Er lik(være))
avkastning nye Leverandør(vendorItem);
}

Leverandør v = nye Leverandør();
v.VendorPhone = "ikke funnet: " + være;

avkastning v;

avkastning null;

} // bruke spweb web = site.openweb()
} // bruke spsite siden = nye spsite("http://localhost/mizuho")

} // metoden

[WebMethod]
offentlig Leverandør[] GetVendorsOfType (streng filterType)
{

streng SpVendorSiteName; // Navnet på det faktiske MOSS nettstedet som er vert t
Han leverandør egendefinert liste.
streng SpVendorListName; // Navnet på den faktiske MOSS listen inneholder leverandører.

SpVendorSiteName = ConfigurationSettings.AppSettings["VendorListHostingSite"].ToString();
SpVendorListName = ConfigurationSettings.AppSettings["VendorList"].ToString();

Leverandør[] resultList;
Int vendorIndex = 0;
resultList = nye Leverandør[1000];

// Initialisere listen med en standard vennlig melding.
Leverandør v = nye Leverandør();
v.VendorName = "Velg en leverandør til å fylle listen.";
resultList[0] = v;

// Konvertere filteret til små bokstaver for enklere strengsammenligning senere.
filterType = filterType.ToLower();

// Hvis filtertypen gått er "test", generere noen enkle data.
#regionen Filtertype = "test"
Hvis (filterType. lik("test"))
avkastning GenerateTestVendors();
#endregion

Hvis (sann)
{
ved hjelp av (SPSite Site = nye SPSite(SpVendorSiteName))
{
ved hjelp av (SPWeb Web = området. OpenWeb())
{

v = null;

SPList currentList = web. Lister[SpVendorListName];

// Gå gjennom alle elementene i leverandørlisten.
foreach (SPItem vendorItem i currentList.Items)
{

streng lowerVendorType;

lowerVendorType = vendorItem["PurchaseType"].ToString().ToLower();
lowerVendorType = lowerVendorType.Substring(3);

Hvis (lowerVendorType. er lik(filterType))
{
resultList[vendorIndex ] = nye Leverandør(vendorItem);
}
} // iterating gjennom alle leverandører i listen


avkastning TrimVendorArray(vendorIndex, resultList);
// returnere resultList;

} // bruke spweb web = site.openweb()
} // bruke spsite siden = nye spsite("http://localhost/mizuho")

} // Hvis sann

avkastning null;
}

privat Leverandør[] TrimVendorArray(Int newsize, Leverandør[] originalVendorArray)
{
Leverandør[] trimmedArray;

Hvis (newsize == 0) newsize = 1;
trimmedArray = nye Leverandør[newsize];

Int currentCounter = 0;

for (currentCounter = 0; currentCounter < newsize; currentCounter )
{
trimmedArray[currentCounter] = originalVendorArray[currentCounter];
}

avkastning trimmedArray;

}
}