Kategorija Arhiv: MOSS

MAH, napredno iskanje customization — Primeru važno v napredno iskanje XSLT

Ne prilagajajte napredno iskanje XSLT zelo pogosto, tako se zdi, kot sem plezanje manjših hribih vsakič.

Moj najnovejši nauk je to: Primeru zadeve pri sklicevanju na stolpec. V mojem napredno iskanje, Imam stolpci opredeljeni kot to:

<koren xmlns:XSi="http://www.w3.org/ 2001/XMLSchema-primer">
<
Stolpci>
<
Stolpec ime="GafTrainingInvoiceNumber" />
<
Stolpec ime="GafTrainingInvoiceLocation" />
<
Stolpec ime="WorkId"/>
<
Stolpec ime="Rank"/>
<
Stolpec ime="Naslov"/>
<
Stolpec ime="Avtor"/>
<
Stolpec ime="Velikost"/>
<
Stolpec ime="Pot"/>
<
Stolpec ime="Opis"/>
<
Stolpec ime="Napisati"/>
<
Stolpec ime="Imemesta"/>
<
Stolpec ime="CollapsingStatus"/>
<
Stolpec ime="HitHighlightedSummary"/>
<
Stolpec ime="HitHighlightedProperties"/>
<
Stolpec ime="ContentClass"/>
<
Stolpec ime="IsDocument"/>
<
Stolpec ime="PictureThumbnailURL"/>
</
Stolpci>
</
koren>

XLST, ki prikazuje lokacijo številko in račun račun je bil:

<p>
Številka računa za usposabljanje: <XSL:vrednost za Izberite="GafTrainingInvoiceNumber"/>
<
br></br>
Mesto izobraževanja računa: <XSL:vrednost za Izberite="GafTrainingInvoiceLocation"/>
</
p>

Vendar, Izberi je sklicevanje lastnost v vse male črke, kot v:

<p>
Številka računa za usposabljanje: <XSL:vrednost za Izberite="gaftraininginvoicenumber"/>
<
br></br>
Mesto izobraževanja računa: <XSL:vrednost za Izberite="gaftraininginvoicelocation"/>
</
p>


Dokler sem popravil, ki, Rezultati iskanja, je pokazala, nalepke (i.e. "Usposabljanje račun števnik") vendar ni podatkov.

MOSS / InfoPath Forms Server (InfoPath 2007) spustni seznam uspešnosti

Dodatno kategorijo: InfoPath

Povzetek: InfoPathov 2007 obliki razporejeno MOSS strežnik zagotavlja spustni seznam prodajalcev, ki so vezane na seznam po meri MOSS. Ob izbiri dobavitelja, pravila dodelite vrednosti polja peščica polj z besedilom kot prodajni zastopnik ime, naslov, mesto, država, zip in telefon. Predstava je grozno. Opazimo, da se poslabša učinkovitost (v ne-linearno) za posamezno dodatno polje posodobimo tako. Tj, Če smo samo posodobiti ime rep prodaje, je potrebno [x] čas. Če smo posodobili prodajni zastopnik, address1, Naslov2, mesto, država, zip, je potrebno 10 krat dlje.

Raztopina: Pisanje spletne storitve (vzorčno kodo najdete tukaj) ki je opravil v imenu prodajalca in vrne nazaj podrobnosti o prodajalcu. Nato, dodelite polja ta način. Čeprav se zdi preveč počasi, ni bilo opaznimi razlike v uspešnosti, ko smo 1 področju v primerjavi z 8 polja. Kot doda bonus, Uporabniki dobili kul "vzpostavljanje povezave s strežnikom" Cylon učinek, medtem ko so čakati za obrazec sklicevala in uživajo rezultate storitev.

MOSS: Prišlo je do izjeme. (Izjema od HRESULT: 0x 80020009 (DISP_E_EXCEPTION))

POSODOBITEV: Smo nikoli ugotovili vzrok za težavo in jo nikoli površinske spet.

Smo opazili med izvajanjem razvoj mesta, kar nenadoma, dve uporabniki ne morejo dostopati do zbirke mest. Te račune lahko prijavljajo v glavno mesto, vendar pri poskusu dostopa do posebno spletno stran zbirka, šele zaslužiti obrazec zaslon. Brez napak, prikazana, samo belo prazno stran.

Smo se prijavite kot skrbnik zbirke mest in poskusite dodati enega od teh uporabnikov kot mesto admin in tokrat, ko pritisnete "OK", smo dobili to sporočilo:

Prišlo je do izjeme. (Izjema od HRESULT: 0x 80020009 (DISP_E_EXCEPTION))

Smo preživeli nekaj časa raziskujejo to in na žalost, nisem prišel z nič uporabnega. Bilo je nekaj sporočil v diagnostični dnevnik, vendar je bilo težko povezati točno jih s težavo.

Na koncu, Brisanje zbirke mest in ponovno ustvarjena in da rešili to.

Če sem ugotoviti, kaj je povzročilo to v prihodnosti, Bom posodobiti to post.

MOSS: Iterating skozi seznamih po meri in filtrirane podatke vrnete InfoPath

Poslovni scenarij:

Priskrbeti se metoda, ki omogoča uporabnikom, da vnesejo točne nakup Zasegi hitro.

Business problem:

Stranka posluje z več sto prodajalci.

Prodajalci so "tip" posebne. To pomeni, da prodajalec prodaja računalniške opreme (npr.. Dell) ali pisarniškega materiala (npr.. Sponke).

Kako smo omogočijo končnim uporabnikom, ki ustvarjajo nakup Zasegi Izberite veljavno dobavitelja?

Poslovnih rešitev:

Razlikovanje med prodajalci v sistemu preko "tip".

Omogoči uporabnikom, da izberete vrsto"" izdelka, in nato nabor filtrirane ustrezne dobavitelje.

Tehnično rešitev:

InfoPathov obrazec je bil oblikovan, da omogoča uporabnikom, da vnesejo online nakup zasegi.

Dva seznama za izbor InfoPath nadzor izbor dobavitelja. Prvi, uporabnik izbere "nakup tip". To omejuje drugi izbirni seznam vsebuje le prodajalci, ki prodajajo za to vrsto nabave. To je klasična kaskadne spustnem.

Prodajalci so shranjene v seznam po meri MOSS s stolpci po meri za dobavitelja atribute, kot so ime, naslov in še posebej "tip".

Izvaja spletna storitev za InfoPath stranko uživati ki poudarjeno po seznamu po meri dobavitelja, vračajo samo prodajalci ujemanje podane "vrste".

Priklicati spletne storitve preko InfoPathov obrazec.

Spoznanja:

  • Prvi, zdi potrebno iti to pot. Jaz raje ne filtriranje povsem InfoPatha in ne povzročajo vse funkcionalnosti spletnih storitev tukaj. Vendar, oblike strežnik ne zagotavljajo zahtevane zmogljivosti filtriranja. Lahko postavimo pravilo na a "tip" seznam za izbiro v obliki neke vrste ponovno odpreti poizvedbo dobavitelja, vendar smo vekanje zaslužiti to obdelovati primerno. Zato, je bilo treba izvajati spletne storitve.
  • To je klasična "kaskadne izbor seznam" problem v InfoPatha tvori server svetu in obstaja veliko dobrih primerov tam zunaj to razložiti, kako rešiti to.
  • Prazna vrednost za stolpec v seznamu dobaviteljev ne vrne prazen niz dodeljuje takole: initItem["Ime dobavitelja"]. Namesto tega, Vrne ničelno vrednost.

Nekatere druge opombe:

  • Sem vrneta matriko[] prodajalcev, ker sem imel nekaj težav, ki se vračajo na predmeta ArrayList. InfoPath je bil pritožuje o tem in nisem imel časa ali volje za boj nad njim. To, seveda, postavlja umetnih omejitev na skupno število dobaviteljev. To tudi me prisiliti, da izvajanje trim() metoda na matriki, ker sovražim idejo o vrnitvi nazaj 100 nič prodajalcev. InfoPath ne skrbi, ampak to nagged vame. (Znova, To je lažje kot InfoPath prepirala ArrayLists).
  • Sem izvajal v GetSpecificVendorByName() funkcije, kot tudi, ki je lahko poučen.

Šifra:

z uporabo Sistem;
z uporabo System.Web;
z uporabo System.Web.Services;
z uporabo System.Web.Services.Protocols;
z uporabo Microsoft.SharePoint;
z uporabo System.Configuration;

/// <povzetek>
///
Dobavitelj storitev: Zagotavlja dobavitelja, povezanih storitev, ki je danes použijeta odjemalca InfoPathov obrazec.
///
/// Zgodovina:
/// ——–
/// 07/24/07: Začetno kodiranje, Paul J. Gavin Conchango.
///
/// </povzetek>
[Spletna storitev(Namespace = "http://www.conchango.com/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
javnih razred VendorService : System.Web.Services.Spletna storitev
{

/// <povzetek>
/// Predstavlja prodajalec s po meri SharePointovega seznama vzdržuje MSUSA.
/// </povzetek>
javnih razred Dobavitelja
{
javnih Dobavitelja() { }

javnih Dobavitelja(SPItem initItem)
{
Če (! (initItem["Ime dobavitelja"] == NULL)) Ime_prodajalca = initItem["Ime dobavitelja"].ToString();
Če (! (initItem["Naslov 1"] == NULL)) VendorAddress1 = initItem["Naslov 1"].ToString();
Če (! (initItem["Naslov 2"] == NULL)) VendorAddress2 = initItem["Naslov 2"].ToString();
Če (! (initItem["Mesto"] == NULL)) VendorCity = initItem["Mesto"].ToString();
Če (! (initItem["VendorPhone"] == NULL)) VendorPhone = initItem["VendorPhone"].ToString();
Če (! (initItem["PurchaseType"] == NULL)) VendorType = initItem["PurchaseType"].ToString();
Če (! (initItem["Država"] == NULL)) VendorState = initItem["Država"].ToString();
Če (! (initItem["Zip"] == NULL)) VendorZip = initItem["Zip"].ToString();
Če (!(initItem["Faks"] == NULL)) VendorFax = initItem["Faks"].ToString();
Če (!(initItem["SalesRepName"] == NULL)) VendorSalesRepName = initItem["SalesRepName"].ToString();

VendorItemId = initItem.ID; // Enolični ID, vzdrževati prek MOSS.
}

javnih int VendorItemId;
javnih niz Ime_prodajalca;
javnih niz VendorAddress1;
javnih niz VendorAddress2;
javnih niz VendorCity;
javnih niz VendorState;
javnih niz VendorZip;
javnih niz VendorPhone;
javnih niz VendorType;
javnih niz VendorSalesRepName;
javnih niz VendorFax;
}

javnih VendorService () {

//Odkomentirate vrstico če using izdelane komponente
//InitializeComponent();
}

zasebno Dobavitelja[] GenerateTestVendors()
{
Dobavitelja[] resultList;
resultList = nove Dobavitelja[100];

Dobavitelja v;
v = nove Dobavitelja();
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 = nove Dobavitelja();

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 = nove Dobavitelja();
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;

vrnitev resultList;

}

[WebMethod]
javnih Dobavitelja GetSpecificVendorById(int ID prodajalca)
{
niz SpVendorSiteName; // Ime dejansko MOSS mesto, ki gosti seznam po meri dobavitelja.
niz SpVendorListName; // Ime dejansko MOSS seznam, ki vsebuje prodajalci.

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

z uporabo (»SPSite « stran = nove »SPSite «(SpVendorSiteName))
{

z uporabo (SPWeb Spletna stran =. OpenWeb())
{

SPList.Update() currentList = spletni. Seznami[SpVendorListName];

SPItem specificItem = currentList.Items[ID prodajalca];

vrnitev nove Dobavitelja(specificItem);

} // z uporabo spweb web = site.openweb()
} // z uporabo strani »SPSite« = nov spsite("http://localhost/mizuho")

}

[WebMethod]
// Domneva, da ime dobavitelja je edinstveno, s poslovnega vidika
javnih Dobavitelja GetSpecificVendorByVendorName(niz biti)
{
niz SpVendorSiteName; // Ime dejansko MOSS mesto, ki gosti seznam po meri dobavitelja.
niz SpVendorListName; // Ime dejansko MOSS seznam, ki vsebuje prodajalci.

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

z uporabo (»SPSite « stran = nove »SPSite «(SpVendorSiteName))
{
z uporabo (SPWeb Spletna stran =. OpenWeb())
{

SPList.Update() currentList = spletni. Seznami[SpVendorListName];

foreach (SPItem vendorItem v currentList.Items)
{
Če (vendorItem["Ime dobavitelja"] == NULL) «««;

Če (vendorItem["Ime dobavitelja"].ToString().Je enako(biti))
vrnitev nove Dobavitelja(vendorItem);
}

Dobavitelja v = nove Dobavitelja();
v.VendorPhone = "ni mogoče najti: " + biti;

vrnitev v;

vrnitev NULL;

} // z uporabo spweb web = site.openweb()
} // z uporabo strani »SPSite« = nov spsite("http://localhost/mizuho")

} // metoda

[WebMethod]
javnih Dobavitelja[] GetVendorsOfType (niz filterType)
{

niz SpVendorSiteName; // Ime dejansko MOSS mesto, ki gosti t
je prodajalec seznam po meri.
niz SpVendorListName; // Ime dejansko MOSS seznam, ki vsebuje prodajalci.

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

Dobavitelja[] resultList;
int vendorIndex = 0;
resultList = nove Dobavitelja[1000];

// Inicializacija seznama s privzetim sporočilom, prijazno.
Dobavitelja v = nove Dobavitelja();
v.VendorName = "Izberite vrsto dobavitelja izpolnite ta seznam.";
resultList[0] = v;

// Pretvori filter v spodnji primer za lažje primerjava nizov kasneje.
filterType = filterType.ToLower();

// Če vrsta filtra je "test", ustvariti nekaj preprostih podatkov.
#regija Vrsta filtra = "preskus"
Če (Enako filterType.("test"))
vrnitev GenerateTestVendors();
#endregion

Če (True)
{
z uporabo (»SPSite « stran = nove »SPSite «(SpVendorSiteName))
{
z uporabo (SPWeb Spletna stran =. OpenWeb())
{

v = NULL;

SPList.Update() currentList = spletni. Seznami[SpVendorListName];

// Ponovi vse elemente v seznamu dobaviteljev.
foreach (SPItem vendorItem v currentList.Items)
{

niz lowerVendorType;

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

Če (Enako lowerVendorType.(filterType))
{
resultList[vendorIndex ] = nove Dobavitelja(vendorItem);
}
} // iterating skozi vse dobavitelje v seznamu


vrnitev TrimVendorArray(vendorIndex, resultList);
// vrnitev resultList;

} // z uporabo spweb web = site.openweb()
} // z uporabo strani »SPSite« = nov spsite("http://localhost/mizuho")

} // Če je to res

vrnitev NULL;
}

zasebno Dobavitelja[] TrimVendorArray(int newsize, Dobavitelja[] originalVendorArray)
{
Dobavitelja[] trimmedArray;

Če (newsize == 0) newsize = 1;
trimmedArray = nove Dobavitelja[newsize];

int currentCounter = 0;

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

vrnitev trimmedArray;

}
}