Kategorija Arhiva: MOSS

MOSS napredno pretraživanje prilagodbu — Slučaj važno po napredno pretraživanje XSLT

Ne mijenjati napredno pretraživanje XSLT vrlo često, pa se čini kao da sam penjanje brežuljaka svaki put.

Moj najnoviji pouka je ovo: Slučaj pitanjima kada pozivom stupca. U mom napredno pretraživanje, Ja sam stupce definira kao ovo:

<korijen xmlns:Rebel="http://www.w3.org/2001/XMLSchema-instance">
<
Kolumne>
<
Kolona Ime="GafTrainingInvoiceNumber" />
<
Kolona Ime="GafTrainingInvoiceLocation" />
<
Kolona Ime="WorkId"/>
<
Kolona Ime="Poredak"/>
<
Kolona Ime="Naslov"/>
<
Kolona Ime="Autor"/>
<
Kolona Ime="Veličina"/>
<
Kolona Ime="Put"/>
<
Kolona Ime="Opis"/>
<
Kolona Ime="Pisati"/>
<
Kolona Ime="Sitename"/>
<
Kolona Ime="CollapsingStatus"/>
<
Kolona Ime="HitHighlightedSummary"/>
<
Kolona Ime="HitHighlightedProperties"/>
<
Kolona Ime="ContentClass"/>
<
Kolona Ime="IsDocument"/>
<
Kolona Ime="PictureThumbnailURL"/>
</
Kolumne>
</
korijen>

XLST koji prikazuje broj računa i računa položaj bio:

<p>
Training Invoice Number: <XSL:vrijednost od odabrati="GafTrainingInvoiceNumber"/>
<
br></br>
Training Invoice Location: <XSL:vrijednost od odabrati="GafTrainingInvoiceLocation"/>
</
p>

Međutim, the select has to reference the property in all lower case, kao u:

<p>
Training Invoice Number: <XSL:vrijednost od odabrati="gaftraininginvoicenumber"/>
<
br></br>
Training Invoice Location: <XSL:vrijednost od odabrati="gaftraininginvoicelocation"/>
</
p>


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

MOSS / InfoPath Forms Server (InfoPath 2007) Padajući popis performanse

Dodatna kategorija: InfoPath

Rezime: InfoPath 2007 formirati raspoređeni na poslužitelju Moss pruža padajući popis distributera vezanog za prilagođeni popis Moss. Nakon odabira dobavljača, pravila dodijeliti vrijednosti polja na nekoliko tekstualnih polja, kao što su prodajni predst ime, adresa, grad, država, zip i telefon. Predstava je strašno. Primjećujemo da se pogoršava performanse (u ne-linearno) za svaki dodatni području smo ažurirati na ovaj način. Odnosno,, ako mi samo ažurirati naziv prodajnog predstavnika, je potrebno [x] iznos od vrijeme. Ako ažurirati prodajnog predstavnika, address1, Adresa2, grad, država, zip, je potrebno 10 puta dulje.

Otopina: Napišite uslugu web (uzorak kod možete naći ovdje) koji je donesen u ime prodavatelja i vraća natrag dobavljača pojedinosti. Tada, dodijeliti polja na ovaj način. Iako je ovo previše izgleda sporo, nije bilo razaznati razlika u performansama kada dodjeljuje 1 polje u odnosu na 8 Polja. Kao bonus, users get a cool "contacting the server" Cylonski učinak, dok oni čekaju obliku pozvati i konzumirati usluge rezultate.

MOSS: Iznimka se dogodila. (Iznimka od HRESULT: 0x80020009 (DISP_E_EXCEPTION))

UPDATE: Mi nikada ne određuje uzrok ovog problema i nikada na površinu opet.

Uočavamo tijekom provedbe razvojne site koji iznenada, Dva su korisnici u mogućnosti pristupiti zbirke web-mjesta. Ti računi mogu ovjeriti na glavnu stranicu, ali kada pokušava pristupiti određenu zbirke web-mjesta, oni samo dobiti prazan ekran. Nema pogreške prikazane, samo bijela prazna stranica.

Mi se prijaviti kao administrator zbirke web-mjesta i pokušati dodati jedan od onih korisnika kao web-admin i ovaj put, upon pressing "OK", smo dobili ovu poruku:

Iznimka se dogodila. (Iznimka od HRESULT: 0x80020009 (DISP_E_EXCEPTION))

Proveli smo neko vrijeme istraživanja to i nažalost, nije došao gore sa ništa korisno. Postojale su neke poruke u log dijagnostičke, ali to je teško točno ih povezati s ovom problematikom.

Na kraju, smo brisanje zbirke web-mjesta i ponovno stvorio i to je riješeno.

Ako sam shvatiti što je uzrokovalo to u budućnosti, Ja ću ažurirati ovaj post.

MOSS: Ponavljanje kroz prilagođene popise i povratka filtriranih podataka u programu InfoPath

Poslovni Scenarij:

Navedite metodu koja omogućuje korisnicima da unesete točne kupnju obespravljivanja brzo.

Poslovni problem:

Klijent posluje s više stotina distributera.

Vendors are "type" specifičan. To znači da prodavatelj prodaje računalnu opremu (e.g. Šumovita dolina) ili uredski materijal (e.g. Staples).

Kako omogućiti krajnjim korisnicima koji stvaraju kupnju obespravljivanja odaberite valjanu dobavljaču?

Poslovno rješenje:

Differentiate vendors in the system via "type".

Enable users to select the "type" proizvoda, a zatim dati filtrirani skup odgovarajućih dobavljačima.

Tehničko rješenje:

InfoPath obrazac je osmišljen koji omogućava korisnicima da unesete online kupnju obespravljivanja.

Dva InfoPath popise kontrole dobavljača odabir. Prvi, the user selects a "purchase type". This limits a second selection list to contain only vendors that sell for that purchase type. This is a classic cascading drop-down.

Dobavljači su pohranjene na popisu Moss običaj s prilagođenim stupaca za dobavljača atributa kao što su ime, address and especially "type".

Provesti web servis za jedan InfoPath klijentom konzumirati da ponovi kroz prilagođeni dobavljaču popis, returning only vendors matching a supplied "type".

Pozvati na uslugu putem web obrasca InfoPath.

Lekcije naučene:

  • Prvi, čini se da je potrebno ići ovaj put. Ja bi radije učiniti filtriranje u cijelosti unutar programa InfoPath, a ne stvaraju nikakvu funkcionalnost web usluga ovdje. Međutim, oblici poslužitelj ne dati tražene mogućnost filtriranja. We can put a rule onto a the "type" izborna lista u obliku vrsta ponovno otvoriti prodavatelja upit, ali ne možemo dobiti Internet to funkcionirati ispravno. Stoga, bilo je potrebno provesti web servis.
  • This is a classic "cascading selection list" problem u server InfoPath obrazaca svijetu i postoji mnogo dobrih primjera vani da objašnjavaju kako riješiti ovaj.
  • Prazna vrijednost za stupac u popisu prodavatelja ne vrati prazan niz, kada spominje ovako: initItem["Vendor Name"]. Umjesto toga, se vraća null.

Neke druge napomene:

  • Vraćam se niz[] od prodavača jer sam imao neke poteškoće vraća se ArrayList. InfoPath je gunđanje o tome i nisam imao vremena ili volje za borbu protiv preko njega. To, naravno, stavlja umjetno ograničenje ukupnog broja dobavljača. Također mi je prisiljen provoditi trim() method on the array because I hate the idea of returning back 100’s of null vendors. InfoPath ne mari, ali nagged na mene. (Opet, to je lakše nego tijekom borbe InfoPath ArrayLists).
  • Sam provodi GetSpecificVendorByName() funkcija, kao i, što može biti poučna.

Kod:

pomoću Sustav;
pomoću System.Web;
pomoću System.Web.Services;
pomoću System.Web.Services.Protocols;
pomoću Microsoft.SharePoint;
pomoću System.Configuration;

/// <rezime>
///
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.
///
/// </rezime>
[WebService(Namespace = "http://www.conchango.com/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
javni klasa VendorService : System.Web.Services.WebService
{

/// <rezime>
/// Represents a vendor from a custom sharepoint list maintained by MSUSA.
/// </rezime>
javni klasa Prodavač
{
javni Prodavač() { }

javni Prodavač(SPItem initItem)
{
ako (! (initItem["Vendor Name"] == nula)) VendorName = initItem["Vendor Name"].ToString();
ako (! (initItem["Address 1"] == nula)) VendorAddress1 = initItem["Address 1"].ToString();
ako (! (initItem["Address 2"] == nula)) VendorAddress2 = initItem["Address 2"].ToString();
ako (! (initItem["City"] == nula)) VendorCity = initItem["City"].ToString();
ako (! (initItem["VendorPhone"] == nula)) VendorPhone = initItem["VendorPhone"].ToString();
ako (! (initItem["PurchaseType"] == nula)) VendorType = initItem["PurchaseType"].ToString();
ako (! (initItem["State"] == nula)) VendorState = initItem["State"].ToString();
ako (! (initItem["Zip"] == nula)) VendorZip = initItem["Zip"].ToString();
ako (!(initItem["Fax"] == nula)) VendorFax = initItem["Fax"].ToString();
ako (!(initItem["SalesRepName"] == nula)) VendorSalesRepName = initItem["SalesRepName"].ToString();

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

javni int VendorItemId;
javni niz VendorName;
javni niz VendorAddress1;
javni niz VendorAddress2;
javni niz VendorCity;
javni niz VendorState;
javni niz VendorZip;
javni niz VendorPhone;
javni niz VendorType;
javni niz VendorSalesRepName;
javni niz VendorFax;
}

javni VendorService () {

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

privatni Prodavač[] GenerateTestVendors()
{
Prodavač[] resultList;
resultList = novi Prodavač[100];

Prodavač v;
v = novi Prodavač();
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 = novi Prodavač();

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 = novi Prodavač();
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;

povratak resultList;

}

[WebMethod]
javni Prodavač GetSpecificVendorById(int vendorId)
{
niz SpVendorSiteName; // Name of the actual MOSS site that hosts the vendor custom list.
niz SpVendorListName; // Name of the actual MOSS list containing vendors.

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

pomoću (SPSite site = novi SPSite(SpVendorSiteName))
{

pomoću (SPWeb web = site.OpenWeb())
{

SPList currentList = web.Lists[SpVendorListName];

SPItem specificItem = currentList.Items[vendorId];

povratak novi Prodavač(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
javni Prodavač GetSpecificVendorByVendorName(niz VendorName)
{
niz SpVendorSiteName; // Name of the actual MOSS site that hosts the vendor custom list.
niz SpVendorListName; // Name of the actual MOSS list containing vendors.

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

pomoću (SPSite site = novi SPSite(SpVendorSiteName))
{
pomoću (SPWeb web = site.OpenWeb())
{

SPList currentList = web.Lists[SpVendorListName];

foreach (SPItem vendorItem u currentList.Items)
{
ako (vendorItem["Vendor Name"] == nula) nastaviti;

ako (vendorItem["Vendor Name"].ToString().Jednako(VendorName))
povratak novi Prodavač(vendorItem);
}

Prodavač v = novi Prodavač();
v.VendorPhone = "not found: " + VendorName;

povratak v;

povratak nula;

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

} // način

[WebMethod]
javni Prodavač[] GetVendorsOfType (niz filterType)
{

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

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

Prodavač[] resultList;
int vendorIndex = 0;
resultList = novi Prodavač[1000];

// Initialize the list with a default friendly message.
Prodavač v = novi Prodavač();
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.
#regija Filter type = "test"
ako (filterType.Equals("test"))
povratak GenerateTestVendors();
#endregion

ako (pravi)
{
pomoću (SPSite site = novi SPSite(SpVendorSiteName))
{
pomoću (SPWeb web = site.OpenWeb())
{

v = nula;

SPList currentList = web.Lists[SpVendorListName];

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

niz lowerVendorType;

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

ako (lowerVendorType.Equals(filterType))
{
resultList[vendorIndex ] = novi Prodavač(vendorItem);
}
} // iterating thru all the vendors in the list


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

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

} // if true

povratak nula;
}

privatni Prodavač[] TrimVendorArray(int newsize, Prodavač[] originalVendorArray)
{
Prodavač[] trimmedArray;

ako (newsize == 0) newsize = 1;
trimmedArray = novi Prodavač[newsize];

int currentCounter = 0;

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

povratak trimmedArray;

}
}