Kategorija Archives: SAMANŲ

Išplėstinės paieškos customization MOSS — Atveju svarbu Išplėstinė paieška XSLT

I don't pakeisti išplėstinės paieškos XSLT labai dažnai, Todėl atrodo, kaip aš laipioti nedidelių kalvų kiekvieną kartą.

Mano naujausias pamoka yra tai: Teismų bylose, kai nuorodos stulpelis. Mano Išplėstinė paieška, Turiu stulpelių apibrėžiamas kaip tai:

<šaknis xmlns:XSi="http://www.w3.org/2001/XMLSchema-instance">
<
Stulpeliai>
<
Stulpelio vardas, pavadinimas="GafTrainingInvoiceNumber" />
<
Stulpelio vardas, pavadinimas="GafTrainingInvoiceLocation" />
<
Stulpelio vardas, pavadinimas="WorkId"/>
<
Stulpelio vardas, pavadinimas="Rangas"/>
<
Stulpelio vardas, pavadinimas="Antraštinė dalis"/>
<
Stulpelio vardas, pavadinimas="Autorius"/>
<
Stulpelio vardas, pavadinimas="Dydis"/>
<
Stulpelio vardas, pavadinimas="Maršrutas"/>
<
Stulpelio vardas, pavadinimas="Aprašymas"/>
<
Stulpelio vardas, pavadinimas="Rašyti"/>
<
Stulpelio vardas, pavadinimas="SiteName"/>
<
Stulpelio vardas, pavadinimas="CollapsingStatus"/>
<
Stulpelio vardas, pavadinimas="HitHighlightedSummary"/>
<
Stulpelio vardas, pavadinimas="HitHighlightedProperties"/>
<
Stulpelio vardas, pavadinimas="ContentClass"/>
<
Stulpelio vardas, pavadinimas="IsDocument"/>
<
Stulpelio vardas, pavadinimas="PictureThumbnailURL"/>
</
Stulpeliai>
</
šaknis>

XLST, kuris parodo sąskaitos-faktūros numeris ir SF vietoje buvo:

<p>
Mokymo sąskaitos-faktūros numeris: <XSL:vertė Pasirinkite="GafTrainingInvoiceNumber"/>
<
br></br>
Mokymo SF vietą: <XSL:vertė Pasirinkite="GafTrainingInvoiceLocation"/>
</
p>

Tačiau, Pasirinkite turi nurodyti ypatybę visi mažosiomis raidėmis, kaip ir:

<p>
Mokymo sąskaitos-faktūros numeris: <XSL:vertė Pasirinkite="gaftraininginvoicenumber"/>
<
br></br>
Mokymo SF vietą: <XSL:vertė Pasirinkite="gaftraininginvoicelocation"/>
</
p>


Kol aš pataisyta, paieškos rezultatai parodė etiketes (ty. "Mokymo sąskaitos-faktūros numeris") Tačiau nėra duomenų.

SAMANŲ / InfoPath formų serveris (Programa InfoPath 2007) Išplečiamajame sąraše veiklos

Papildoma kategorija: Programa InfoPath

Santrauka: Programos InfoPath 2007 formos į MOSS serverio suteikia išplečiamajame sąraše tiekėjų susieta su pasirinktinį MOSS sąrašą. Pasirenkant tiekėjas, taisykles laukų reikšmės priskirti sauja teksto srityse pvz., pardavimo atstovo vardas, Adresas, miesto, valstybės, pašto ir telefono. Efektyvumas yra siaubinga. Pastebime, kad rezultatus bus dar blogiau (ne linijiniu būdu) už kiekvieną papildomą lauką mes atnaujiname tokiu būdu. T. y., Jei mes tik atnaujinti pardavimo atstovo vardas, reikia [x] kiek laiko. Jei mes atnaujinti pardavimo atstovas, address1, Adresas2, miesto, valstybės, zip, reikia 10 kartus ilgiau.

Tirpalas: Rašyti interneto paslauga (mėginio kodą gali būti nustatyta čia) kad perduodama vardu tiekėjas ir jis grįžta atgal tiekėjo informacija. Tada, priskirti laukus tokiu būdu. Nors tai atrodo, pernelyg lėtai, ten buvo ne visuomet būdavo pastebimas skirtumo charakteristikų, kai mes priskirtas 1 srityje palyginti su 8 laukai. Kaip papildoma priemoka, vartotojams gauti cool "susisiekti su serverio" Cylon o jie laukia formą remtis ir vartoti paslaugų rezultatų poveikis.

SAMANŲ: Įvyko išimtis. (Išimtis iš HRESULT: 0x 80020009 (DISP_E_EXCEPTION))

NAUJINIMAS: Mes niekada nustatomas pagrindinλ problema ir ji niekada paviršiaus dar kartą.

Mes pranešimas įgyvendinant vystymosi svetainę, kad staiga, du vartotojai negalite prieiti prie svetainių rinkinio. Tų sąskaitų gali autentifikuoti į pagrindinę svetainę, Tačiau kai bandote prieiti ypač svetainių rinkinio, jie tiesiog tuščias ekranas. Rodomas klaidų, tik baltojo tuščią puslapį.

Mes prisijungti kaip svetainių rinkinio administratorius ir bandykite pridėti vienas iš šių vartotojų svetainės administratoriaus ir šiuo metu, po paspaudus "OK", mes gauti šį pranešimą:

Įvyko išimtis. (Išimtis iš HRESULT: 0x 80020009 (DISP_E_EXCEPTION))

Mes praleido šiek tiek laiko tai tiria ir Deja, ne sugalvoti nieko naudingo. Ten buvo keletas pranešimų diagnostikos žurnale, bet tai buvo sunku tiksliai koreliuoja su šia problema.

Galiausiai, Mes naikinti svetainių rinkinio ir sukuriamas iš naujo ir kad išspręsti.

Jeigu aš suprasti, ką padarė tai ateityje, I atnaujinti šį pranešimą.

SAMANŲ: Iterating per pasirinktinius sąrašus ir grįžta filtruotus duomenis į InfoPath

Verslo scenarijus:

Pateikti metodą, kuris leidžia vartotojams greitai įvesti tikslią pirkimo paraiškas.

Verslo problemas:

Klientas turi verslo ryšių su keli šimtai pardavėjai.

Pardavėjai yra "tipo" konkrečių. Tai reiškia, kad tiekėjas parduoda kompiuterinę įrangą (pvz.. Dell) ar raštinės reikmenys (pvz.. Kabės).

Kaip mes leisti galutiniams vartotojams, kurie sukurti pirkimo paraiškas pasirinkti galiojantį tiekėją?

Pervežimų:

Atskirti pardavėjai sistemoje per "tipo".

Leisti vartotojams pasirinkti "" produkto ir tada – nustatyti filtruoto tinkamų tiekėjų.

Techninis sprendimas:

Programos InfoPath forma buvo suprojektuotas taip, kad leidžia vartotojams įvesti internete pirkimo paraiškos.

Du InfoPath pasirinkimo sąrašuose kontroliuoti tiekėjų atrankos. Pirmosios, kad vartotojas galėtų pasirinkti "pirkimų tipo". Tai riboja antrąjį atrankos sąrašą turi būti tik pirkimo tipo pardavusių tiekėjų. Tai yra klasikinis pakopinių išskleid.

Pardavėjai yra saugomi MOSS pasirinktinį sąrašą su pasirinktinius stulpelius tiekėjo požymiai, kaip antai pavadinimas, Adresas ir ypač "tipo".

Įgyvendinti tinklo tarnybos, programa InfoPath kliento vartoti kad kartojasi per pasirinktinio tiekėjų sąrašas, grįžta tik tiekėjų atitikimo per teikiamoms "tipo".

Remtis tinklo tarnybos per "InfoPath" forma.

Pamokas:

  • Pirmosios, atrodo, kad reikia eiti šiuo keliu. Aš būtų norėjusi daryti filtravimo visiškai programą InfoPath ir negali sukurti jokių žiniatinklio tarnybos funkcines galimybes čia. Tačiau, formų serveris nepateikia reikalinga filtravimo galimybes. Mes galime įdėti į paprastai a tipo"" pasirinkimų sąrašo forma tarsi iš naujo atidaryti tiekėjo užklausa, bet mes negalime gauti ji tinkamai veiktų. Todėl, reikėjo įgyvendinti tinklo tarnybos.
  • Tai klasikinis "pakopinių pasirinkimo sąrašas" problema su InfoPath formų serveris pasaulyje ir yra daug gerų pavyzdžių iš ten, kuriose aiškinama, kaip išspręsti šią.
  • Tuščią stulpelį tiekėjo sąrašo reikšmę negrąžina tuščia eilutė kai nuorodos panašaus: initItem["Tiekėjo pavadinimas"]. Vietoj, jis grįžta į nulinę.

Kai kurios kitos pastabos:

  • Aš sugrįšiu masyvas[] tiekėjų nes aš turėjo tam tikrų sunkumų grįžimas į ArrayList, skirto. Programa InfoPath buvo skundą apie tai ir aš neturėjo laiko ar noro kovoti per jį. Tai, žinoma, dirbtinis riba užsideda tiekėjų skaičius. Ji taip pat priversta man įgyvendinti apdaila() metodas masyvą nes aš nekenčiu idėja grįžti atgal 100 yra neapibrėžtas tiekėjų. InfoPath nerūpi, bet tai nagged man. (Dar kartą, tai buvo lengviau nei kovos su InfoPath per ArrayLists).
  • Aš įgyvendinti, GetSpecificVendorByName() funkcija taip pat, kuri gali būti naudinga.

Kodas:

naudojant Sistemos;
naudojant System.Web;
naudojant System.Web.Services;
naudojant System.Web.Services.Protocols;
naudojant Microsoft.SharePoint;
naudojant System.Configuration;

/// <santrauka>
///
Tiekėjo paslaugos: Numatyta tiekėjo susijusių paslaugų kuri šiandien suvartoja infopath kliento formos.
///
/// Istorija:
/// ——–
/// 07/24/07: Pradinio kodavimo, Paul J. Gavin, Conchango.
///
/// </santrauka>
[WebService(Namespace = "http://www.conchango.com/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
visuomenės klasės VendorService : System.Web.Services.WebService
{

/// <santrauka>
/// Yra palaikoma MSUSA pasirinktines sharepoint sąraše tiekėjui.
/// </santrauka>
visuomenės klasės Tiekėjo
{
visuomenės Tiekėjo() { }

visuomenės Tiekėjo(SPItem initItem)
{
Jei (! (initItem["Tiekėjo pavadinimas"] == neapibrėžtas)) VendorName = initItem["Tiekėjo pavadinimas"].ToString();
Jei (! (initItem["Adresas 1"] == neapibrėžtas)) VendorAddress1 = initItem["Adresas 1"].ToString();
Jei (! (initItem["Adresas 2"] == neapibrėžtas)) VendorAddress2 = initItem["Adresas 2"].ToString();
Jei (! (initItem["City"] == neapibrėžtas)) VendorCity = initItem["City"].ToString();
Jei (! (initItem["VendorPhone"] == neapibrėžtas)) VendorPhone = initItem["VendorPhone"].ToString();
Jei (! (initItem["PurchaseType"] == neapibrėžtas)) VendorType = initItem["PurchaseType"].ToString();
Jei (! (initItem["Valstybė"] == neapibrėžtas)) VendorState = initItem["Valstybė"].ToString();
Jei (! (initItem["Zip"] == neapibrėžtas)) VendorZip = initItem["Zip"].ToString();
Jei (!(initItem["Fakso"] == neapibrėžtas)) VendorFax = initItem["Fakso"].ToString();
Jei (!(initItem["SalesRepName"] == neapibrėžtas)) VendorSalesRepName = initItem["SalesRepName"].ToString();

VendorItemId = initItem.ID; // Unikalus ID numeris išlaikomas per MOSS.
}

visuomenės LC VendorItemId;
visuomenės eilutė VendorName;
visuomenės eilutė VendorAddress1;
visuomenės eilutė VendorAddress2;
visuomenės eilutė VendorCity;
visuomenės eilutė VendorState;
visuomenės eilutė VendorZip;
visuomenės eilutė VendorPhone;
visuomenės eilutė VendorType;
visuomenės eilutė VendorSalesRepName;
visuomenės eilutė VendorFax;
}

visuomenės VendorService () {

//Anuliuoti šią eilutę jei naudojant suprojektuoti
//InitializeComponent();
}

privačių Tiekėjo[] GenerateTestVendors()
{
Tiekėjo[] resultList;
resultList = naujas Tiekėjo[100];

Tiekėjo v;
v = naujas Tiekėjo();
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 = naujas Tiekėjo();

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 = naujas Tiekėjo();
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;

grįžti resultList;

}

[WebMethod]
visuomenės Tiekėjo GetSpecificVendorById(LC teikėjo ID)
{
eilutė SpVendorSiteName; // Faktinį MOSS svetainėje, kurioje yra tiekėjo pasirinktinį sąrašą, pavadinimas.
eilutė SpVendorListName; // Tikrasis MOSS sąrašą, kuriame yra pardavėjai pavadinimas.

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

naudojant (SPSite svetainės = naujas SPSite(SpVendorSiteName))
{

naudojant (SPWeb interneto = svetainėje. OpenWeb())
{

SPList currentList = interneto. Sąrašai[SpVendorListName];

SPItem specificItem = currentList.Items[teikėjo ID];

grįžti naujas Tiekėjo(specificItem);

} // naudojant spweb interneto = site.openweb()
} // naudojant spsite svetainės = naujas spsite("http://localhost/mizuho")

}

[WebMethod]
// Daroma prielaida, kad tiekėjo pavadinimas yra unikalus, Žvelgiant iš verslo perspektyvos
visuomenės Tiekėjo GetSpecificVendorByVendorName(eilutė būti)
{
eilutė SpVendorSiteName; // Faktinį MOSS svetainėje, kurioje yra tiekėjo pasirinktinį sąrašą, pavadinimas.
eilutė SpVendorListName; // Tikrasis MOSS sąrašą, kuriame yra pardavėjai pavadinimas.

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

naudojant (SPSite svetainės = naujas SPSite(SpVendorSiteName))
{
naudojant (SPWeb interneto = svetainėje. OpenWeb())
{

SPList currentList = interneto. Sąrašai[SpVendorListName];

foreach (SPItem vendorItem į currentList.Items)
{
Jei (vendorItem["Tiekėjo pavadinimas"] == neapibrėžtas) toliau;

Jei (vendorItem["Tiekėjo pavadinimas"].ToString().Yra lygi(būti))
grįžti naujas Tiekėjo(vendorItem);
}

Tiekėjo v = naujas Tiekėjo();
v.VendorPhone = "not found: " + būti;

grįžti v;

grįžti neapibrėžtas;

} // naudojant spweb interneto = site.openweb()
} // naudojant spsite svetainės = naujas spsite("http://localhost/mizuho")

} // metodas

[WebMethod]
visuomenės Tiekėjo[] GetVendorsOfType (eilutė filterType)
{

eilutė SpVendorSiteName; // Tikrasis MOSS svetainės, kurioje yra t pavadinimas
jis tiekėjo pasirinktinį sąrašą.
eilutė SpVendorListName; // Tikrasis MOSS sąrašą, kuriame yra pardavėjai pavadinimas.

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

Tiekėjo[] resultList;
LC vendorIndex = 0;
resultList = naujas Tiekėjo[1000];

// Inicijuoti sąrašą su numatytuoju pranešimu, draugiškas.
Tiekėjo v = naujas Tiekėjo();
v.VendorName = "Pasirinkite tiekėjo tipo užpildyti šį sąrašą.";
resultList[0] = v;

// Konvertuoti filtrą į mažąją lengviau vėliau palyginimui eilutė.
filterType = filterType.ToLower();

// Jei filtro tipas yra "testas", kai paprastas duomenų.
#regionas Filtras, filtro tipas = "testas"
Jei (filterType. lygu("bandymas"))
grįžti GenerateTestVendors();
#endregion

Jei (tiesa)
{
naudojant (SPSite svetainės = naujas SPSite(SpVendorSiteName))
{
naudojant (SPWeb interneto = svetainėje. OpenWeb())
{

v = neapibrėžtas;

SPList currentList = interneto. Sąrašai[SpVendorListName];

// Kartoti per visų prekių tiekėjų sąrašas.
foreach (SPItem vendorItem į currentList.Items)
{

eilutė lowerVendorType;

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

Jei (lowerVendorType. sudaro(filterType))
{
resultList[vendorIndex ] = naujas Tiekėjo(vendorItem);
}
} // Iteracja per visų tiekėjų sąraše


grįžti TrimVendorArray(vendorIndex, resultList);
// grįžti resultList;

} // naudojant spweb interneto = site.openweb()
} // naudojant spsite svetainės = naujas spsite("http://localhost/mizuho")

} // Jei tai tiesa

grįžti neapibrėžtas;
}

privačių Tiekėjo[] TrimVendorArray(LC newsize, Tiekėjo[] originalVendorArray)
{
Tiekėjo[] trimmedArray;

Jei (newsize == 0) newsize = 1;
trimmedArray = naujas Tiekėjo[newsize];

LC currentCounter = 0;

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

grįžti trimmedArray;

}
}