Categoria Arkistot: MOSS

MOSS, Etsi lisämukauttaminen — Asia does aihe haku XSLT

Älä muuta haku XSLT usein, niin se tuntuu Olen kiipeilyä pieniä mäkiä aina.

Uusin opetus on tämä: Tapauksessa asiat sarakkeeseen viittaaminen. Tarkennettu haku, Olen otsakkeissa määritelty tämä:

<root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<
Sarakkeet>
<
Sarake Nimi="GafTrainingInvoiceNumber" />
<
Sarake Nimi="GafTrainingInvoiceLocation" />
<
Sarake Nimi="Työtunnus"/>
<
Sarake Nimi="Sijoitus"/>
<
Sarake Nimi="Otsikko"/>
<
Sarake Nimi="Tekijä"/>
<
Sarake Nimi="Kokoa"/>
<
Sarake Nimi="Polku"/>
<
Sarake Nimi="Kuvaus"/>
<
Sarake Nimi="Kirjoitus"/>
<
Sarake Nimi="Sivuston nimi"/>
<
Sarake Nimi="CollapsingStatus"/>
<
Sarake Nimi="HitHighlightedSummary"/>
<
Sarake Nimi="HitHighlightedProperties"/>
<
Sarake Nimi="ContentClass"/>
<
Sarake Nimi="IsDocument"/>
<
Sarake Nimi="PictureThumbnailURL"/>
</
Sarakkeet>
</
root>

XSLT, joka näyttää laskun numero ja laskun paikalla ollut:

<p>
Koulutus laskunumero: <XSL:arvo Valitse="GafTrainingInvoiceNumber"/>
<
br></br>
Laskun opiskelupaikka: <XSL:arvo Valitse="GafTrainingInvoiceLocation"/>
</
p>

Kuitenkin, Valitse on viitattava kaikki pienellä, kuten:

<p>
Koulutus laskunumero: <XSL:arvo Valitse="gaftraininginvoicenumber"/>
<
br></br>
Laskun opiskelupaikka: <XSL:arvo Valitse="gaftraininginvoicelocation"/>
</
p>


Kunnes korjasin että, Hakutulokset osoitti tarrat (ts. "Koulutus laskunumero") mutta ei tietoja.

MOSS / InfoPath Forms Server (InfoPath 2007) avattavasta luettelosta suorituskyky

Lisää luokka: InfoPath

Yhteenveto: InfoPath 2007 MOSS-palvelimen käyttöön lomakkeen sisältää mukautetun MOSS-luetteloon sidottua toimittajien avattavasta. Kun valitset Toimittaja, sääntöjen määrittäminen kenttien arvot kourallinen tekstikentät, kuten myyjä nimi, osoite, Kaupunki, valtio, zip- ja puhelin. Suorituskyky on hirvittävä. Me huomaamme, että suorituskyky huononee (luettavaksi jΣrjestyksessΣ) Lisää kenttien päivitämme tällä tavoin. Eli, Jos olemme juuri päivittää myyjä-nimi, se kestää [x] aika. Jos päivitämme myyjä, osoite1, Osoite2, Kaupunki, valtio, zip, se kestää 10 kertaa pidempään.

Ratkaisu: Kirjoita web-palveluun (mallikoodia löydät Täällä) jotka on välitetty nimissä toimittaja ja se palauttaa takaisin toimittajan tiedot. Sitten, Määritä kentät tällä tavalla. Vaikka tämä vaikuttaa liian hidas, ei ollut discernable eroa suorituskyvyn, kun olemme määritetty 1 kentän funktiona 8 kentät. Tallennusvälineinä, käyttäjät saavat jäähdytetään "yhteyttä palvelimeen" Cylon vaikutus odottaessaan kutsua ja kuluttaa palvelun lomakkeen tulokset.

MOSS: Poikkeus. (HRESULT poikkeus: 0x 80020009 (DISP_E_EXCEPTION))

PÄIVITYS: Emme koskaan päättänyt perussyy ongelman ja se koskaan pinta jälleen.

Huomaamme täytäntöönpanon edistyminen asema aikana että yhtäkkiä, kaksi käyttäjät eivät voi käyttää sivustokokoelman. Nämä tilit voi tarkistaa sivuston tärkeimmät, mutta kun yrität käyttää tietyn sivustokokoelman, he kohtuullinen panna ilmeetön irtoseinä. Virheitä ei näy, valkoinen tyhjä sivu.

Kirjaudu sisään sivustokokoelman järjestelmänvalvoja ja yrittää lisätä yksi niistä Siteadmin ja tällä kertaa, Kun painat "OK", Tämä sanoma:

Poikkeus. (HRESULT poikkeus: 0x 80020009 (DISP_E_EXCEPTION))

Vietimme jonkin aikaa tutkia tätä ja valitettavasti, ei keksiä mitään hyötyä. Tarkasteltava oli joitakin viestejä, mutta se oli vaikea tarkalleen korreloivan asiaa.

Lopulta, sivustokokoelman poistamista ja luodaan uudelleen ja että ratkaisimme sen.

Jos voin selvittää, mikä aiheutti tämän tulevaisuudessa, I päivittää tämän postitse.

MOSS: Läpikäyminen mukautettuja luetteloita ja InfoPath suodatetun tiedon palauttaminen

Business skenaario:

Tarjoavat tapa, jonka avulla käyttäjät voivat antaa tarkkoja ostoehdotuksia nopeasti.

Liiketoimintaan liittyvästä ongelmasta:

Asiakas toimii useita satoja myyjien.

Myyjät ovat "tyyppi" erityisiä. Tämä tarkoittaa sitä, että toimittaja myy atk-laitteet (virrankatkaisu. Dell) tai toimistotarvikkeet (virrankatkaisu. Staples).

Miten annamme häntäpää käyttäjä joka luo Ostotilauksen pakkolunastuksia Valitse kelvollinen toimittaja?

Yritysratkaisujen:

Erottaa toimittajien järjestelmän kautta "tyyppi".

Käyttäjät voivat valita "tyyppi" tuotteen ja anna suodatettavien sopiva toimittajat.

Tekninen ratkaisu:

InfoPath-lomake on suunniteltu avulla käyttäjät voivat syöttää verkossa ostoehdotukset.

InfoPath valinta luettelot hallita toimittajan valinta. Ensimmäinen, käyttäjä valitsee "oston tyyppi". Tämä rajoittaa toisen valintaluettelo sisältää vain toimittajat, jotka myyvät Ostotilaustyyppi. Tämä on klassinen CSS alentaa-heittää.

Toimittajien tallennetaan MOSS mukautetun luettelon mukautettuja sarakkeita toimittajan määritteet nimi, osoite ja erityisesti "tyyppi".

Toteuttaa web-palveluun, InfoPath-asiakkaan kuluttaa että iteroidaan mukautetun toimittajien luettelo, Palaa vain toimittajat vastaavat mukana "tyyppi".

Vedota InfoPath-lomakkeen web-palveluun.

Kokemukset:

  • Ensimmäinen, tarpeen tämän reitin. Olisin halunnut tehdä suodatus täysin InfoPathissa ja luo web palvelu toiminnot täällä. Kuitenkin, Lomakkeet-palvelin ei ilmoita suodatus tarvittavien voimavarojen. Voimme yleensä päälle "tyyppi" valintaluettelossa tavallaan uudelleen Avaa toimittajan kysely-lomakkeessa, mutta emme saa sitä toimimaan kunnolla. Siksi, se oli tarpeen toteuttaa web-palveluun.
  • Tämä on klassinen "CSS valintaluettelosta" ongelma InfoPath muodostaa palvelimen maailmassa ja on olemassa useita hyviä esimerkkejä siellä, että selittää miten ratkaista tämän.
  • Toimittajan luettelon sarake on tyhjä arvo ei palauta tyhjä merkkijono, kun näin: initItem["Toimittajan nimi"]. Sen sijaan, palauttaa null-arvon.

Jotkin muut huomautukset:

  • Palauttaa matriisin[] myyjät koska minulla oli vaikeuksia palata ArrayList. InfoPath valitti ja minulla ei ollut aikaa tai haluja tapella siitä. Tämä, Tietysti, keinotekoinen raja asetetaan toimittajien lukumäärä. Se pakotti minut toteuttaa leikata() array-menetelmä koska vihaan ajatuksesta palata takaisin 100: n null toimittajat. InfoPath ei välitä, mutta se nagged minua. (Uudelleen, Tämä oli helpompaa kuin InfoPath taistelevat ArrayLists).
  • Täytäntöön GetSpecificVendorByName() toimii hyvin, joka voi olla opettavainen.

Koodi:

käyttäminen Järjestelmän;
käyttäminen System.Web;
käyttäminen System.Web.Services;
käyttäminen System.Web.Services.Protocols;
käyttäminen Microsoft.SharePoint;
käyttäminen System.Configuration;

/// <Yhteenveto>
///
Myyntipalvelun: Sisältää toimittajan liittyvät palvelut, jotka nykyään ovat kuluttamaan infopath-asiakasohjelma.
///
/// Historia:
/// ——–
/// 07/24/07: Ensimmäinen koodaus, Paul J. Gavin Conchango.
///
/// </Yhteenveto>
[WebService(Namespace = "http://www.conchango.com/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
yleiset luokan VendorService : System.Web.Services.WebService
{

/// <Yhteenveto>
/// Vastaa toimittajan mukautettu sharepoint-luettelosta ylläpitämä MSUSA.
/// </Yhteenveto>
yleiset luokan Toimittajan
{
yleiset Toimittajan() { }

yleiset Toimittajan(SPItem initItem)
{
Jos (! (initItem["Toimittajan nimi"] == Null)) Toimittajan_nimi = initItem["Toimittajan nimi"].Ominaisuuden ToString();
Jos (! (initItem["Osoite 1"] == Null)) VendorAddress1 = initItem["Osoite 1"].Ominaisuuden ToString();
Jos (! (initItem["Osoite 2"] == Null)) VendorAddress2 = initItem["Osoite 2"].Ominaisuuden ToString();
Jos (! (initItem["City"] == Null)) VendorCity = initItem["City"].Ominaisuuden ToString();
Jos (! (initItem["VendorPhone"] == Null)) VendorPhone = initItem["VendorPhone"].Ominaisuuden ToString();
Jos (! (initItem["PurchaseType"] == Null)) VendorType = initItem["PurchaseType"].Ominaisuuden ToString();
Jos (! (initItem["Valtio"] == Null)) VendorState = initItem["Valtio"].Ominaisuuden ToString();
Jos (! (initItem["Zip"] == Null)) VendorZip = initItem["Zip"].Ominaisuuden ToString();
Jos (!(initItem["Faksi"] == Null)) VendorFax = initItem["Faksi"].Ominaisuuden ToString();
Jos (!(initItem["SalesRepName"] == Null)) VendorSalesRepName = initItem["SalesRepName"].Ominaisuuden ToString();

VendorItemId = initItem.ID; // Yksilöllinen tunnus säilytetään kautta MOSS.
}

yleiset int VendorItemId;
yleiset merkkijono Toimittajan_nimi;
yleiset merkkijono VendorAddress1;
yleiset merkkijono VendorAddress2;
yleiset merkkijono VendorCity;
yleiset merkkijono VendorState;
yleiset merkkijono VendorZip;
yleiset merkkijono VendorPhone;
yleiset merkkijono VendorType;
yleiset merkkijono VendorSalesRepName;
yleiset merkkijono VendorFax;
}

yleiset VendorService () {

//Kommentti, seuraava rivi, jos suunnitellut komponentit
//InitializeComponent();
}

Yksityinen Toimittajan[] GenerateTestVendors()
{
Toimittajan[] resultList;
resultList = Uusi Toimittajan[100];

Toimittajan v;
v = Uusi Toimittajan();
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 = Uusi Toimittajan();

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 = Uusi Toimittajan();
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;

paluu resultList;

}

[WebMethod]
yleiset Toimittajan GetSpecificVendorById(int soveltamista vendorId)
{
merkkijono SpVendorSiteName; // Todellinen MOSS-sivuston, joka isännöi toimittajan mukautetun luettelon nimi.
merkkijono SpVendorListName; // Nimi että todellinen MOSS luettelo myyjät.

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

käyttäminen (SPSite sivusto = Uusi SPSite(SpVendorSiteName))
{

käyttäminen (SPWeb Web = sivusto. OpenWeb())
{

SPList currentList = web. Luettelot[SpVendorListName];

SPItem specificItem = currentList.Items[soveltamista vendorId];

paluu Uusi Toimittajan(specificItem);

} // käyttämällä spweb web = site.openweb()
} // spsite-sivuston = uusi spsite("http://localhost/mizuho")

}

[WebMethod]
// Oletetaan, että toimittajan nimi on ainutlaatuinen, liiketoiminnan näkökulmasta
yleiset Toimittajan GetSpecificVendorByVendorName(merkkijono olla)
{
merkkijono SpVendorSiteName; // Todellinen MOSS-sivuston, joka isännöi toimittajan mukautetun luettelon nimi.
merkkijono SpVendorListName; // Nimi että todellinen MOSS luettelo myyjät.

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

käyttäminen (SPSite sivusto = Uusi SPSite(SpVendorSiteName))
{
käyttäminen (SPWeb Web = sivusto. OpenWeb())
{

SPList currentList = web. Luettelot[SpVendorListName];

foreach (SPItem vendorItem Tässä currentList.Items)
{
Jos (vendorItem["Toimittajan nimi"] == Null) Jatka;

Jos (vendorItem["Toimittajan nimi"].Ominaisuuden ToString().Vastaa(olla))
paluu Uusi Toimittajan(vendorItem);
}

Toimittajan v = Uusi Toimittajan();
v.VendorPhone = "ei löydy: " + olla;

paluu v;

paluu Null;

} // käyttämällä spweb web = site.openweb()
} // spsite-sivuston = uusi spsite("http://localhost/mizuho")

} // menetelmä

[WebMethod]
yleiset Toimittajan[] GetVendorsOfType (merkkijono kohteen FilterType-arvoa)
{

merkkijono SpVendorSiteName; // Todellinen MOSS-sivuston, joka isännöi t nimi
Hän toimittajan mukautettu luettelo.
merkkijono SpVendorListName; // Nimi että todellinen MOSS luettelo myyjät.

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

Toimittajan[] resultList;
int vendorIndex = 0;
resultList = Uusi Toimittajan[1000];

// Alustaa luettelon oletus ystävällisen viestin.
Toimittajan v = Uusi Toimittajan();
v.VendorName = "Kirjoita toimittajan asuttamaan tämän luettelon.";
resultList[0] = v;

// Suodatin muuntaa merkkijonon vertailu helpottuu myöhemmin isoja.
kohteen FilterType-arvoa = filterType.ToLower();

// Jos suodattimen tyyppi on "test", Luo yksinkertaisia tietoja.
#alueen Suodattimen tyyppi = "test"
Jos (Yhtä kohteen FilterType-arvoa.("test"))
paluu GenerateTestVendors();
#endregion

Jos (tosi)
{
käyttäminen (SPSite sivusto = Uusi SPSite(SpVendorSiteName))
{
käyttäminen (SPWeb Web = sivusto. OpenWeb())
{

v = Null;

SPList currentList = web. Luettelot[SpVendorListName];

// Avaimettoman toimittajan luettelon kohteet.
foreach (SPItem vendorItem Tässä currentList.Items)
{

merkkijono lowerVendorType;

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

Jos (sama kuin lowerVendorType.(kohteen FilterType-arvoa))
{
resultList[vendorIndex ] = Uusi Toimittajan(vendorItem);
}
} // iteroimalla läpi kaikkien toimittajien luettelosta


paluu TrimVendorArray(vendorIndex, resultList);
// Paluu resultList;

} // käyttämällä spweb web = site.openweb()
} // spsite-sivuston = uusi spsite("http://localhost/mizuho")

} // Jos arvo on tosi

paluu Null;
}

Yksityinen Toimittajan[] TrimVendorArray(int asua kuulumiset, Toimittajan[] originalVendorArray)
{
Toimittajan[] trimmedArray;

Jos (asua kuulumiset == 0) asua kuulumiset = 1;
trimmedArray = Uusi Toimittajan[asua kuulumiset];

int currentCounter = 0;

varten (currentCounter = 0; currentCounter < asua kuulumiset; currentCounter )
{
trimmedArray[currentCounter] = originalVendorArray[currentCounter];
}

paluu trimmedArray;

}
}