Categorie Archieven: MOSS

MOSS Geavanceerd zoeken aanpassen — Geval toe doet in Geavanceerd zoeken XSLT

Ik wijzigen Geavanceerd zoeken XSLT heel vaak niet, zodat het lijkt alsof ik ben klein heuvels telkens klimmen.

Mijn nieuwste les is dit: Geval van belang wanneer wordt verwezen naar een kolom. In mijn Geavanceerd zoeken, Ik heb kolommen gedefinieerd als dit:

<wortel xmlns:XSi="http://www.w3.org/2001/XMLSchema-instance">
<
Kolommen>
<
Kolom Naam="GafTrainingInvoiceNumber" />
<
Kolom Naam="GafTrainingInvoiceLocation" />
<
Kolom Naam="WorkId"/>
<
Kolom Naam="Rang"/>
<
Kolom Naam="Titel"/>
<
Kolom Naam="Auteur"/>
<
Kolom Naam="Grootte"/>
<
Kolom Naam="Pad"/>
<
Kolom Naam="Beschrijving"/>
<
Kolom Naam="Schrijven"/>
<
Kolom Naam="SiteName"/>
<
Kolom Naam="CollapsingStatus"/>
<
Kolom Naam="HitHighlightedSummary"/>
<
Kolom Naam="HitHighlightedProperties"/>
<
Kolom Naam="ContentClass"/>
<
Kolom Naam="IsDocument"/>
<
Kolom Naam="PictureThumbnailURL"/>
</
Kolommen>
</
wortel>

De XSLT die wordt weergegeven de locatie van de factuur nummer en factuur geweest:

<p>
Opleiding factuurnummer: <XSL:waarde-van Selecteer="GafTrainingInvoiceNumber"/>
<
BR></BR>
Opleiding factuur locatie: <XSL:waarde-van Selecteer="GafTrainingInvoiceLocation"/>
</
p>

Echter, het selecteren heeft om te verwijzen naar de eigenschap in alle kleine letters, Als in:

<p>
Opleiding factuurnummer: <XSL:waarde-van Selecteer="gaftraininginvoicenumber"/>
<
BR></BR>
Opleiding factuur locatie: <XSL:waarde-van Selecteer="gaftraininginvoicelocation"/>
</
p>


Totdat ik gecorrigeerd die, Zoekresultaten toonden de etiketten (dwz. "Opleiding factuurnummer") maar geen gegevens.

MOSS / InfoPath Forms Server (InfoPath 2007) prestaties van de drop-down lijst

Aanvullende categorie: InfoPath

Samenvatting: Een InfoPath 2007 formulier geïmplementeerd op een server MOSS biedt een drop-down lijst van leveranciers die zijn gekoppeld aan een aangepaste lijst MOSS. Bij het selecteren van een leverancier, regels toewijzen veldwaarden aan een handvol tekstvelden zoals de naam van de verkoper, adres, stad, staat, zip en telefoon. Prestaties is verschrikkelijk. We merken dat de prestaties slechter (in een niet-lineaire mode) voor elk extra veld bijwerken we op deze manier. H.D., Als we gewoon de naam verkoper bijwerken, het duurt [x] hoeveelheid tijd. Als we sales rep updaten, adres1, Adres2, stad, staat, zip, het duurt 10 keer langer.

Oplossing: Schrijven van een webservice (code van de steekproef kan worden gevonden Hier) dat wordt doorgegeven in de naam van een leverancier en is het resultaat terug de leverancier details. Vervolgens, de velden op deze manier toewijzen. Hoewel dit te lijkt vertragen, Er was geen waarneembaar verschil in prestaties wanneer wij toegewezen 1 veld versus 8 velden. Als een toegevoegde bonus, gebruikers krijgen een koele "contact opnemen met de server" Cylon effect terwijl ze wachten voor het formulier beroepen en consumeren de service resultaten.

MOSS: Uitzondering is opgetreden. (Uitzondering op HRESULT: 0x 80020009 (DISP_E_EXCEPTION))

UPDATE: Wij vastbesloten nooit de oorzaak van dit probleem en het nooit oppervlakte weer.

We merken dat plotseling tijdens de uitvoering van een site ontwikkeling, twee gebruikers hebben geen toegang tot een siteverzameling. Deze accounts kunnen worden geverifieerd naar de belangrijkste site, maar wanneer het proberen om toegang tot een bepaalde site-collectie, ze krijgen gewoon een leeg scherm. Geen fouten weergegeven, gewoon een witte lege pagina.

Wij als een site collectie admin inloggen en probeert toe te voegen een van die gebruikers als een site admin en deze keer, op op "OK" te drukken, We krijgen deze boodschap:

Uitzondering is opgetreden. (Uitzondering op HRESULT: 0x 80020009 (DISP_E_EXCEPTION))

We enige tijd dit onderzoeken en helaas, niet komen met iets nuttigs. Er waren sommige berichten in diagnoselogboek van het, maar het was moeilijk om precies het correleren van hen met dit probleem.

In het einde, wij de siteverzameling wordt verwijderd en opnieuw gemaakt en dat het opgelost.

Als ik erachter te komen veroorzaakt wat dit in de toekomst, Ik zal deze post bijwerken.

MOSS: Aangepaste lijsten doorlopen en gefilterde gegevens terug te keren naar InfoPath

Bedrijfsscenario:

Bieden een methode waarmee gebruikers snel invoeren van nauwkeurige aankoop vorderingen.

Bedrijfsprobleem:

De cliënt doet zaken met meerdere honderden leveranciers.

Leveranciers zijn "type" specifieke. Dit betekent dat een leverancier computerapparatuur verkoopt (bijvoorbeeld. Dell) of kantoorbenodigdheden (bijvoorbeeld. Nietjes).

Hoe we eindgebruikers die aankoop vorderingen Selecteer een geldige leverancier maken inschakelen?

Zakelijke oplossing:

Onderscheiden van leveranciers in het systeem via "type".

Gebruikers om te selecteren van het type"in staat stellen" van product en geef vervolgens een gefilterde set van passende leveranciers.

Technische oplossing:

Een InfoPath-formulier is ontworpen dat stelt gebruikers in staat om online vorderingen kopen.

Twee InfoPath selectie lijsten beheren leverancier selectie. Eerste, de gebruiker selecteert een type"inkoop". Dit houdt in dat een tweede selectielijst bevatten alleen leveranciers die voor dat type Inkoop verkopen. Dit is een klassieke trapsgewijze keuzelijst.

Leveranciers worden opgeslagen in een aangepaste lijst van MOSS met aangepaste kolommen voor leverancier kenmerken zoals naam, adres en vooral "type".

Uitvoering van een webservice voor een InfoPath-client om te consumeren die een iteratie uitgevoerd via de aangepaste leveranciersoverzicht, alleen leveranciers overeenkomt met een meegeleverde "type" terug te keren.

Aanroepen van de webservice via het InfoPath-formulier.

Geleerde lessen:

  • Eerste, het lijkt noodzakelijk om deze route te gaan. Ik zou liever om te doen de filtering volledig binnen InfoPath en niet het maken van een web service functionaliteit hier. Echter, formulieren server voorziet niet in de vereiste filterfunctie. Kunnen we een regel op een het type"" keuzelijst in het formulier in om de soort van de leverancier query opnieuw te openen, maar we kan niet krijgen om goed te werken. Daarom, het was nodig voor de uitvoering van de webservice.
  • Dit is een klassieke "trapsgewijze keuzelijst" probleem in de InfoPath forms server wereld en er zijn vele goede voorbeelden die er waarin wordt uitgelegd hoe dit op te lossen.
  • Een lege waarde voor een kolom in het leveranciersoverzicht geeft geen resultaat een lege tekenreeks wanneer verwezen als dit: initItem["De naam van de verkoper"]. In plaats daarvan, het geeft als resultaat een null.

Sommige andere notities:

  • Ik retourneren een matrix[] van leveranciers omdat ik had grote moeite terug te keren een ArrayList. InfoPath was klagen over het en ik heb niet de tijd of de neiging om te vechten over het. Dit, Natuurlijk, Zet een kunstmatige limiet op het totale aantal leveranciers. Het ook gedwongen mij te voeren een trim() methode op de array omdat ik haat het idee van terugkeer terug 100's van null leveranciers. InfoPath schelen niet, maar het gezeurd op mij. (Weer, Dit was makkelijker dan InfoPath vechten over ArrayLists).
  • Ik heb een GetSpecificVendorByName geïmplementeerd() functie, die kan worden leerzaam.

De code:

met behulp van Systeem;
met behulp van System.Web;
met behulp van System.Web.Services;
met behulp van System.Web.Services.Protocols;
met behulp van Microsoft.SharePoint;
met behulp van System.Configuration;

/// <Samenvatting>
///
Service leverancier: Biedt leverancier gerelateerde services die vandaag de dag worden verbruikt door een infopath-formulier voor client.
///
/// Geschiedenis:
/// ——–
/// 07/24/07: Eerste codering, Paul J. Gavin van Conchango.
///
/// </Samenvatting>
[WebService(Namespace = 'http://www.conchango.com/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
openbare klasse VendorService : System.Web.Services.WebService
{

/// <Samenvatting>
/// Hiermee geeft u een leverancier uit een aangepaste sharepoint-lijst onderhouden door MSUSA.
/// </Samenvatting>
openbare klasse Leverancier
{
openbare Leverancier() { }

openbare Leverancier(SPItem initItem)
{
Als (! (initItem["De naam van de verkoper"] == Null)) Leveranciersnaam = initItem["De naam van de verkoper"].ToString();
Als (! (initItem["Adres 1"] == Null)) VendorAddress1 = initItem["Adres 1"].ToString();
Als (! (initItem["Adres 2"] == Null)) VendorAddress2 = initItem["Adres 2"].ToString();
Als (! (initItem["City"] == Null)) VendorCity = initItem["City"].ToString();
Als (! (initItem["VendorPhone"] == Null)) VendorPhone = initItem["VendorPhone"].ToString();
Als (! (initItem["PurchaseType"] == Null)) VendorType = initItem["PurchaseType"].ToString();
Als (! (initItem["State"] == Null)) VendorState = initItem["State"].ToString();
Als (! (initItem["Zip"] == Null)) VendorZip = initItem["Zip"].ToString();
Als (!(initItem["Fax"] == Null)) VendorFax = initItem["Fax"].ToString();
Als (!(initItem["SalesRepName"] == Null)) VendorSalesRepName = initItem["SalesRepName"].ToString();

VendorItemId = initItem.ID; // Unieke ID onderhouden via MOSS.
}

openbare int VendorItemId;
openbare tekenreeks Leveranciersnaam;
openbare tekenreeks VendorAddress1;
openbare tekenreeks VendorAddress2;
openbare tekenreeks VendorCity;
openbare tekenreeks VendorState;
openbare tekenreeks VendorZip;
openbare tekenreeks VendorPhone;
openbare tekenreeks VendorType;
openbare tekenreeks VendorSalesRepName;
openbare tekenreeks VendorFax;
}

openbare VendorService () {

//Uncomment de volgende regel als gebruikt ontworpen onderdelen
//InitializeComponent();
}

privé Leverancier[] GenerateTestVendors()
{
Leverancier[] Resultaten;
Resultaten = Nieuw Leverancier[100];

Leverancier v;
v = Nieuw Leverancier();
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";

Resultaten[0] = v;

v = Nieuw Leverancier();

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";

Resultaten[1] = v;

v = Nieuw Leverancier();
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";

Resultaten[2] = v;

terugkeer Resultaten;

}

[WebMethod]
openbare Leverancier GetSpecificVendorById(int vendorId)
{
tekenreeks SpVendorSiteName; // Naam van de werkelijke MOSS-site die als host optreedt van de aangepaste lijst van de leverancier.
tekenreeks SpVendorListName; // Naam van de werkelijke MOSS lijst met leveranciers.

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

met behulp van (SPSite site = Nieuw SPSite(SpVendorSiteName))
{

met behulp van (SPWeb Web = site. OpenWeb())
{

SPList currentList = web. Lijsten[SpVendorListName];

SPItem specificItem = currentList.Items[vendorId];

terugkeer Nieuw Leverancier(specificItem);

} // met behulp van spweb web = site.openweb()
} // gebruik van spsite site = nieuwe spsite('http://localhost/mizuho")

}

[WebMethod]
// Wordt ervan uitgegaan dat de naam van de verkoper uniek is, vanuit een zakelijk perspectief
openbare Leverancier GetSpecificVendorByVendorName(tekenreeks worden)
{
tekenreeks SpVendorSiteName; // Naam van de werkelijke MOSS-site die als host optreedt van de aangepaste lijst van de leverancier.
tekenreeks SpVendorListName; // Naam van de werkelijke MOSS lijst met leveranciers.

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

met behulp van (SPSite site = Nieuw SPSite(SpVendorSiteName))
{
met behulp van (SPWeb Web = site. OpenWeb())
{

SPList currentList = web. Lijsten[SpVendorListName];

foreach (SPItem vendorItem in currentList.Items)
{
Als (vendorItem["De naam van de verkoper"] == Null) «««;

Als (vendorItem["De naam van de verkoper"].ToString().Is gelijk aan(worden))
terugkeer Nieuw Leverancier(vendorItem);
}

Leverancier v = Nieuw Leverancier();
v.VendorPhone = 'niet gevonden: " + worden;

terugkeer v;

terugkeer Null;

} // met behulp van spweb web = site.openweb()
} // gebruik van spsite site = nieuwe spsite('http://localhost/mizuho")

} // methode

[WebMethod]
openbare Leverancier[] GetVendorsOfType (tekenreeks filterType)
{

tekenreeks SpVendorSiteName; // Naam van de werkelijke MOSS-site die als host optreedt van t
Hij leverancier aangepaste lijst.
tekenreeks SpVendorListName; // Naam van de werkelijke MOSS lijst met leveranciers.

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

Leverancier[] Resultaten;
int vendorIndex = 0;
Resultaten = Nieuw Leverancier[1000];

// De lijst met een vriendelijke standaardbericht initialiseren.
Leverancier v = Nieuw Leverancier();
v.VendorName = "Selecteer een leveranciertype om deze lijst te vullen.";
Resultaten[0] = v;

// Het filter converteren naar kleine letters voor later gemakkelijker tekenreeksvergelijking.
filterType = filterType.ToLower();

// Als u het filtertype doorgegeven is "test", sommige eenvoudige gegevens genereren.
#regio Filtertype = "test"
Als (filterType. is gelijk aan("test"))
terugkeer GenerateTestVendors();
#endregion

Als (True)
{
met behulp van (SPSite site = Nieuw SPSite(SpVendorSiteName))
{
met behulp van (SPWeb Web = site. OpenWeb())
{

v = Null;

SPList currentList = web. Lijsten[SpVendorListName];

// Alle items in het leveranciersoverzicht doorlopen.
foreach (SPItem vendorItem in currentList.Items)
{

tekenreeks lowerVendorType;

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

Als (lowerVendorType. is gelijk aan(filterType))
{
Resultaten[vendorIndex ] = Nieuw Leverancier(vendorItem);
}
} // doorlopen door alle leveranciers in de lijst


terugkeer TrimVendorArray(vendorIndex, Resultaten);
// retourneren van de resultaten;

} // met behulp van spweb web = site.openweb()
} // gebruik van spsite site = nieuwe spsite('http://localhost/mizuho")

} // Als de waarde true

terugkeer Null;
}

privé Leverancier[] TrimVendorArray(int newsize, Leverancier[] originalVendorArray)
{
Leverancier[] trimmedArray;

Als (newsize == 0) newsize = 1;
trimmedArray = Nieuw Leverancier[newsize];

int currentCounter = 0;

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

terugkeer trimmedArray;

}
}