kategorie Argief: MOSS

MOSS gevorderde soektog aanpassing — Geval nie saak in gevorderde soek XSLT

Ek verander nie gevorderde soektog XSLT dikwels, sodat dit lyk asof ek klim klein heuwels elke keer.

My nuutste les is dit: Saak saak by die verwysing van 'n kolom. In my gevorderde soektog, Ek het kolomme gedefinieer as:

<wortel xmlns:XSi="http://www.w3.org/2001/XMLSchema-instance">
<
Kolomme>
<
Kolom Naam="GafTrainingInvoiceNumber" />
<
Kolom Naam="GafTrainingInvoiceLocation" />
<
Kolom Naam="WorkId"/>
<
Kolom Naam="Rangskik"/>
<
Kolom Naam="Titel"/>
<
Kolom Naam="Skrywer"/>
<
Kolom Naam="Grootte"/>
<
Kolom Naam="Pad"/>
<
Kolom Naam="Description"/>
<
Kolom Naam="Skryf"/>
<
Kolom Naam="Site Naam"/>
<
Kolom Naam="CollapsingStatus"/>
<
Kolom Naam="HitHighlightedSummary"/>
<
Kolom Naam="HitHighlightedProperties"/>
<
Kolom Naam="ContentClass"/>
<
Kolom Naam="IsDocument"/>
<
Kolom Naam="PictureThumbnailURL"/>
</
Kolomme>
</
wortel>

Die XLST dat u die faktuur en faktuur plek was:

<p>
Training Invoice Number: <xsl:waarde van kies="GafTrainingInvoiceNumber"/>
<
br></br>
Training Invoice Location: <xsl:waarde van kies="GafTrainingInvoiceLocation"/>
</
p>

Egter, die kies het om die eiendom te verwysing in alle kleinletters, soos in:

<p>
Training Invoice Number: <xsl:waarde van kies="gaftraininginvoicenumber"/>
<
br></br>
Training Invoice Location: <xsl:waarde van kies="gaftraininginvoicelocation"/>
</
p>


Until I corrected that, search results showed the labels (d.w.z. "Training Invoice Number") but no data.

MOSS / Path Vorms Server (Path 2007) drop-down list prestasie

Bykomende kategorie: Path

Opsomming: 'N Path 2007 vorm ontplooi om 'n mos-bediener bied 'n drop-down lys van verskaffers wat gekoppel is aan 'n persoonlike MOSS lys. By die keuse van 'n verskaffer, reëls toewys veld waardes aan 'n handvol van die teks velde, soos verkope rep naam, adres, stad, staat, rits en telefoonnommer. Prestasie is verskriklik. Ons sien dat prestasie erger (in 'n nie-lineêre mode) vir elke bykomende veld ons werk op hierdie manier. Dws, as ons net werk om die verkope rep naam, dit neem [x] bedrag van die tyd. As ons werk sales rep, Adres1, Adres2, stad, staat, ritssluiter, dit neem 10 keer langer.

Oplossing: Skryf 'n web-diens (voorbeeld kode kan gevind word hier) wat geslaag het in die naam van 'n ondernemer en dit gee terug die verkoper besonderhede. Toe, ken die velde op hierdie manier. Hoewel dit lyk te stadig, Daar was geen waarneembare verskil in prestasie wanneer ons opgedra 1 gebied versus 8 velde. As 'n ekstra bonus, users get a cool "contacting the server" Cylon effek, terwyl hulle wag vir die vorm te roep en verteer die diens resultate.

MOSS: Uitsondering het voorgekom. (Uitsondering van HRESULT: 0x80020009 (DISP_E_EXCEPTION))

UPDATE: Ons het nooit die oorsaak van die probleem bepaal, en dit nooit weer opduik.

Ons sien tydens die implementering van 'n ontwikkeling wat skielik, twee gebruikers is nie in staat om toegang te verkry tot 'n webwerf versameling. Hierdie rekeninge kan kontroleer na die hoof webwerf, maar wanneer ek probeer om 'n bepaalde werf-versameling om toegang te verkry tot, hulle het net 'n leë skerm. Geen foute word vertoon, net 'n wit leë bladsy.

Ons teken as 'n tuiste versameling admin en probeer om een ​​van die gebruikers by te voeg as 'n site admin en hierdie tyd, op druk "OK", ons kry hierdie boodskap:

Uitsondering het voorgekom. (Uitsondering van HRESULT: 0x80020009 (DISP_E_EXCEPTION))

Ons het geruime tyd ondersoek en ongelukkig, het nie kom met iets nuttigs. Daar was 'n paar boodskappe in die diagnostiese log, maar dit was moeilik om presies ooreen met hierdie kwessie.

Op die ou end, ons die verwydering van die werf versameling en weer geskep is en wat opgelos.

As ek uitvind wat dit veroorsaak in die toekoms, Ek sal hierdie pos werk.

MOSS: Iterating deur middel van persoonlike lyste en die terugkeer van gefilterde inligting te Path

Besigheid scenario:

Verskaf 'n metode wat in staat stel om gebruikers akkurate aankoop rekwisisies te vinnig gaan.

Besigheid probleem:

Die kliënt doen besigheid met 'n paar honderd verkopers.

Verskaffers is "tipe" spesifieke. Dit beteken dat 'n ondernemer verkoop rekenaartoerusting (bijv. Dell) of die kantoor verskaf (bijv. Staples).

Hoe kan ons eindgebruikers wat aankoop rekwisisies skep, kies 'n geldige ondernemer?

Business Solution:

Onderskei verkopers in die stelsel via "tipe".

Gebruikers in staat stel om die "tipe te kies" van die produk en dan 'n gefilterde stel van geskikte verskaffers.

Tegniese oplossing:

'N Path vorm ontwerp wat in staat stel om gebruikers aanlyn aankoop rekwisisies in te voer.

Twee die Path seleksie lyste beheer verskaffer seleksie. Eerste, die gebruiker kies 'n "aankoop tipe". This limits a second selection list to contain only vendors that sell for that purchase type. This is a classic cascading drop-down.

Ondernemers word gestoor in 'n Moss persoonlike lys met persoonlike kolomme vir die verkoper eienskappe soos naam, adres en veral "tipe".

Implementering van 'n web diens vir 'n Path kliënt te vernietig wat deur die persoonlike verkoper lys iterate, terugkeer enigste verskaffers wat ooreenstem met 'n gegewe "tipe".

Roep die web diens via die Path vorm.

Lesse wat geleer:

  • Eerste, blyk dit noodsaaklik om hierdie roete te gaan. Ek sou verkies het om die filter heeltemal binne Path te doen en nie 'n web diens funksionaliteit hier. Egter, vorms bediener het nie die vereiste filter vermoë. Ons kan 'n reël op 'n "tipe" seleksie lys in die vorm van heropen die verkoper navraag te sorteer, maar ons kan nie dit kry om behoorlik te werk. Daarom, was dit nodig om die web te implementeer.
  • Dit is 'n klassieke "cascade keuse lys" probleem in die Path vorms bediener wêreld en daar is baie goeie voorbeelde daar buite wat verduidelik hoe om dit op te los.
  • 'N leë waarde vir 'n kolom in die verkoper lys nie terug 'n leë string wanneer verwys soos hierdie: initItem["Vendor Name"]. In plaas daarvan, dit gee 'n leë.

Sommige ander notas:

  • Ek weer 'n skikking[] verskaffers, want ek het 'n paar probleme wat terugkeer 1 Array List. Path kla oor dit en ek het nie die tyd of die neiging om te veg oor. Dit, natuurlik, sit 'n kunsmatige beperking op die aantal verskaffers. Dit het my ook verplig om 'n trim te implementeer() method on the array because I hate the idea of returning back 100’s of null vendors. Path beteken nie omgee nie, maar dit neul by my. (Weer, Dit was makliker as om te baklei Path oor ArrayLists).
  • Ek 1 GetSpecificVendorByName geïmplementeer() funksie sowel, wat kan leersaam wees.

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;

/// <opsomming>
///
Vendor Service: Provides vendor related services which today are consumed by an infopath client form.
///
/// History:
/// ——–
/// 07/24/07: Initial coding, Paul J. Gavin of Conchango.
///
/// </opsomming>
[WebService(Namespace = "Http://www.conchango.com/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
openbare klas VendorService : System.Web.Services.WebService
{

/// <opsomming>
/// Represents a vendor from a custom sharepoint list maintained by MSUSA.
/// </opsomming>
openbare klas Vendor
{
openbare Vendor() { }

openbare Vendor(SPItem initItem)
{
indien (! (initItem["Vendor Name"] == nul)) VendorName = initItem["Vendor Name"].ToString();
indien (! (initItem["Address 1"] == nul)) VendorAddress1 = initItem["Address 1"].ToString();
indien (! (initItem["Address 2"] == nul)) VendorAddress2 = initItem["Address 2"].ToString();
indien (! (initItem["Stad"] == nul)) VendorCity = initItem["Stad"].ToString();
indien (! (initItem["VendorPhone"] == nul)) VendorPhone = initItem["VendorPhone"].ToString();
indien (! (initItem["PurchaseType"] == nul)) VendorType = initItem["PurchaseType"].ToString();
indien (! (initItem["Staat"] == nul)) VendorState = initItem["Staat"].ToString();
indien (! (initItem["Zip"] == nul)) VendorZip = initItem["Zip"].ToString();
indien (!(initItem["Faks"] == nul)) VendorFax = initItem["Faks"].ToString();
indien (!(initItem["SalesRepName"] == nul)) VendorSalesRepName = initItem["SalesRepName"].ToString();

VendorItemId = initItem.ID; // Unique ID maintained via MOSS.
}

openbare int VendorItemId;
openbare string VendorName;
openbare string VendorAddress1;
openbare string VendorAddress2;
openbare string VendorCity;
openbare string VendorState;
openbare string VendorZip;
openbare string VendorPhone;
openbare string VendorType;
openbare string VendorSalesRepName;
openbare string VendorFax;
}

openbare VendorService () {

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

private Vendor[] GenerateTestVendors()
{
Vendor[] resultList;
resultList = nuwe Vendor[100];

Vendor v;
v = nuwe Vendor();
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 = nuwe Vendor();

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 = nuwe Vendor();
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;

terugkeer resultList;

}

[WebMethod]
openbare Vendor GetSpecificVendorById(int vendorId)
{
string SpVendorSiteName; // Name of the actual MOSS site that hosts the vendor custom list.
string SpVendorListName; // Name of the actual MOSS list containing vendors.

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

die gebruik van (SPSite site = nuwe SPSite(SpVendorSiteName))
{

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

SPList currentList = web.Lists[SpVendorListName];

SPItem specificItem = currentList.Items[vendorId];

terugkeer nuwe Vendor('n 'specificItem);

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

}

[WebMethod]
// Assumes that the vendor name is unique, from a business perspective
openbare Vendor GetSpecificVendorByVendorName(string Vendor)
{
string SpVendorSiteName; // Name of the actual MOSS site that hosts the vendor custom list.
string SpVendorListName; // Name of the actual MOSS list containing vendors.

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

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

SPList currentList = web.Lists[SpVendorListName];

foreach (SPItem vendorItem in currentList.Items)
{
indien (vendorItem["Vendor Name"] == nul) voortgaan;

indien (vendorItem["Vendor Name"].ToString().Equals(Vendor))
terugkeer nuwe Vendor(vendorItem);
}

Vendor v = nuwe Vendor();
v.VendorPhone = "not found: " + Vendor;

terugkeer v;

terugkeer nul;

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

} // metode

[WebMethod]
openbare Vendor[] GetVendorsOfType (string filterType)
{

string SpVendorSiteName; // Name of the actual MOSS site that hosts t
he vendor custom list.
string SpVendorListName; // Name of the actual MOSS list containing vendors.

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

Vendor[] resultList;
int vendorIndex = 0;
resultList = nuwe Vendor[1000];

// Initialize the list with a default friendly message.
Vendor v = nuwe Vendor();
v.VendorName = "Select a vendor type to populate this list.";
resultList[0] = v;

// Convert the filter to lower case for easier string comparison later.
filterType = filterType.ToLower();

// If the filter type passed is "test", generate some simple data.
#streek Filter type = "test"
indien (filterType.Equals("Toets"))
terugkeer GenerateTestVendors();
#endregion

indien (waar)
{
die gebruik van (SPSite site = nuwe SPSite(SpVendorSiteName))
{
die gebruik van (SPWeb web = site.OpenWeb())
{

v = nul;

SPList currentList = web.Lists[SpVendorListName];

// Iterate through all the items in the vendor list.
foreach (SPItem vendorItem in currentList.Items)
{

string lowerVendorType;

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

indien (lowerVendorType.Equals(filterType))
{
resultList[vendorIndex ] = nuwe Vendor(vendorItem);
}
} // iterating thru all the vendors in the list


terugkeer TrimVendorArray(vendorIndex, resultList);
// return resultList;

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

} // if true

terugkeer nul;
}

private Vendor[] TrimVendorArray(int newsize, Vendor[] originalVendorArray)
{
Vendor[] trimmedArray;

indien (newsize == 0) newsize = 1;
trimmedArray = nuwe Vendor[newsize];

int currentCounter = 0;

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

terugkeer trimmedArray;

}
}