Archifau Categori: MOSS

MOSS uwch customization chwilio — Achos yn fater o flaen llaw chwilio XSLT

Nid wyf yn addasu chwilio manwl XSLT yn aml iawn, felly mae'n ymddangos fel mod i'n dringo bryniau bach bob tro.

Fy ngwers diweddaraf yw hyn: Achos materion wrth gyfeirio colofn. Yn fy chwiliad uwch, Rwyf wedi colofnau diffinio fel hyn:

<gwraidd xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<
Colofnau>
<
Colofn Enw="GafTrainingInvoiceNumber" />
<
Colofn Enw="GafTrainingInvoiceLocation" />
<
Colofn Enw="WorkId"/>
<
Colofn Enw="Rank"/>
<
Colofn Enw="Teitl"/>
<
Colofn Enw="Awdur"/>
<
Colofn Enw="Maint"/>
<
Colofn Enw="Llwybr"/>
<
Colofn Enw="Disgrifiad"/>
<
Colofn Enw="Ysgrifennu"/>
<
Colofn Enw="Sitename"/>
<
Colofn Enw="CollapsingStatus"/>
<
Colofn Enw="HitHighlightedSummary"/>
<
Colofn Enw="HitHighlightedProperties"/>
<
Colofn Enw="Contentclass"/>
<
Colofn Enw="IsDocument"/>
<
Colofn Enw="PictureThumbnailURL"/>
</
Colofnau>
</
gwraidd>

Mae'r XLST sy'n dangos y rhif anfoneb a lleoliad anfoneb wedi bod yn:

<p>
Rhif anfoneb hyfforddi: <XSL:gwerth o dewis="GafTrainingInvoiceNumber"/>
<
br></br>
Lleoliad anfoneb hyfforddiant: <XSL:gwerth o dewis="GafTrainingInvoiceLocation"/>
</
p>

Fodd bynnag,, y dewis wedi cyfeirio at yr eiddo ym mhob achos is, fel yn:

<p>
Rhif anfoneb hyfforddi: <XSL:gwerth o dewis="gaftraininginvoicenumber"/>
<
br></br>
Lleoliad anfoneb hyfforddiant: <XSL:gwerth o dewis="gaftraininginvoicelocation"/>
</
p>


Hyd nes y cywirais y, canlyniadau chwilio yn dangos y labeli (h.y. "Hyfforddiant anfoneb rhif") ond nid oes data.

MOSS / InfoPath Ffurflenni Gweinydd (InfoPath 2007) perfformiad gwymplen

Categori ychwanegol: InfoPath

Crynodeb: Mae InfoPath 2007 ffurfio defnyddio i weinydd MOSS darparu rhestr a ollyngir i lawr o werthwyr glymu i restr MOSS arfer. Ar ôl dewis gwerthwr, rheolau aseinio gwerthoedd cae i lond llaw o feysydd testun fel gwerthiant enw cynrychiolydd, cyfeiriad, dinas, cyflwr, zip a ffôn. Mae perfformiad yn ofnadwy. Rydym yn sylwi bod perfformiad yn gwaethygu (mewn modd nad yw'n llinol) ar gyfer pob cae ychwanegol rydym yn diweddaru'r ffordd hon. H.y., Os yn unig yn diweddaru enw cynrychiolydd gwerthu, Mae'n cymryd [x] faint o amser. Os ydym yn diweddaru'r cynrychiolydd gwerthu, address1, address2, dinas, cyflwr, Zip, Mae'n cymryd 10 gwaith yn hwy.

Ateb: Ysgrifennu gwasanaeth gwe (Gellir dod o hyd i cod sampl yma) y caiff ei basio enw gwerthwr a bydd yn dychwelyd yn ôl manylion y gwerthwr. Yna, neilltuo caeau y ffordd hon. Er bod hyn yn ymddangos yn rhy araf, Nid oedd unrhyw wahaniaeth amlwg mewn perfformiad pan ydym yn neilltuo 1 maes erbyn 8 meysydd. Yn fonws ychwanegol, Mae defnyddwyr yn cael oer "cysylltu â gweinydd" Cylon canlyniadau effaith tra maent yn aros am y ffurflen i alw a ddefnyddiwn y gwasanaeth.

MOSS: Eithriad digwydd. (Eithriad rhag HRESULT: 0x80020009 (DISP_E_EXCEPTION))

Y NEWYDDION DIWEDDARAF: Rydym byth yn benderfynol wrth wraidd y broblem hon ac nid yw byth yn wyneb eto.

Rydym yn sylwi wrth weithredu'r safle datblygu yn sydyn, dau ddefnyddiwr yn gallu cael mynediad i gasgliad safle. Gall y rhai cyfrifon dilysu â'r prif safle, ond wrth geisio cael mynediad i gasgliad safle penodol, maent ond yn cael sgrin wag. Dim arddangos gwallau, dim ond dudalen wag gwyn.

Rydym yn logio i mewn fel casgliad safle gweinyddol ac yn ceisio ychwanegu un o'r rhai defnyddwyr fel gweinyddol safle a'r tro hwn, ar bwyso "OK", rydym yn cael y neges hon:

Eithriad digwydd. (Eithriad rhag HRESULT: 0x80020009 (DISP_E_EXCEPTION))

Rydym yn treulio peth amser yn ymchwilio ac yn anffodus hwn, nid oedd yn dod o hyd i unrhyw beth defnyddiol. Roedd rhai negeseuon yn y log diagnostig, ond yr oedd yn anodd eu cyfateb yn union â'r mater hwn.

Yn y diwedd, rydym yn dileu'r casgliad safle ac ail-greu a'i bod ei datrys.

Os byddaf yn chyfrif i maes beth achosodd hyn yn y dyfodol, 'N annhymerus' diweddaru y swydd hon.

MOSS: Ailadrodd drwy restrau arfer a dychwelyd data hidlo i InfoPath

Senario Busnes:

Darparu dull sy'n galluogi defnyddwyr i fynd i mewn archebion prynu cywir yn gyflym.

Problem Busnes:

Mae'r cleient yn gwneud busnes gyda rhai cannoedd o gwerthwyr.

Gwerthwyr yn cael eu "math" penodol. Mae hyn yn golygu y bydd gwerthwr yn gwerthu offer cyfrifiadurol (e.e.. Dell) neu gyflenwadau swyddfa (e.e.. Staples).

Sut allwn ni hwyluso defnyddwyr sydd wedi creu dethol archebion prynu gwerthwr ddilys?

Ateb Busnes:

Gwahaniaethu gwerthwyr yn y system drwy "math".

Galluogi defnyddwyr i ddewis "math" cynnyrch ac yna darparu set wedi'u hidlo o werthwyr priodol.

Ateb technegol:

Lluniwyd ffurflen InfoPath bod archebion prynu yn galluogi defnyddwyr i fynd ar-lein i.

Mae dwy restr ddethol InfoPath rheoli dethol gwerthwr. Cyntaf, Mae'r defnyddiwr yn dewis "math prynu". Mae hyn yn cyfyngu ar restr ddethol ail i gynnwys dim ond gwerthwyr sy'n gwerthu ar gyfer y math o brynu. Dyma estynnol clasurol i'r rhaeadru.

Cedwir gwerthwyr yn rhestr bersonol MOSS gyda cholofnau personol ar gyfer nodweddion gwerthwr megis enw, cyfeiriad a enwedig "math".

Gweithredu gwasanaeth ar y we ar gyfer cleient InfoPath i fwyta sy'n ailadrodd drwy'r rhestr gwerthwr arfer, dychwelyd dim ond gwerthwyr paru a gyflenwir "math".

Weithredu'r gwasanaeth ar y we drwy gyfrwng y ffurflen InfoPath.

Gwersi a Ddysgwyd:

  • Cyntaf, mae'n ymddangos yn angenrheidiol i fynd y llwybr hwn. Byddwn wedi bod yn well i wneud y hidlo gyfan gwbl o fewn InfoPath a pheidio â chreu unrhyw swyddogaeth gwasanaeth ar y we yma. Fodd bynnag,, Nid yw ffurflenni gweinydd yn darparu'r gallu hidlo gofynnol. Gallwn roi rheol ar y "math" rhestr dewis yn y ffurflen er mwyn datrys o ail-agor y gwerthwr ymholiad, ond ni allwn ei gael i weithio'n iawn. Felly,, roedd angen i weithredu'r gwasanaeth ar y we.
  • Mae hon yn glasur "rhaeadru dethol rhestr" problem yn y ffurflenni InfoPath gweinydd byd ac mae llawer o enghreifftiau da allan yna sy'n egluro sut i ddatrys y.
  • Nid yw gwerth gwag ar gyfer colofn yn y rhestr gwerthwr yn dychwelyd llinyn gwag pan cyfeirio fel hyn: initItem["Gwerthwr enw"]. Yn lle hynny, mae'n dychwelyd yn null.

Rhai Nodiadau eraill:

  • Byddaf yn dychwelyd arae[] gwerthwyr oherwydd fy mod wedi cael rhywfaint o anhawster dychwelyd i ArrayList. Roedd InfoPath cwyno am y peth a doeddwn i ddim yn cael yr amser na'r awydd i ymladd drosto. Mae hyn yn, wrth gwrs, rhoi terfyn artiffisial ar gyfanswm nifer y gwerthwyr. Mae hefyd yn gorfodi i mi i weithredu trim() dull ar y casgliad oherwydd mae'n gas gennyf y syniad o ddychwelyd yn ôl 100 o'r gwerthwyr NWL. Nid InfoPath yn poeni, ond mae'n nagged arnaf. (Unwaith eto,, roedd hyn yn haws nag ymladd InfoPath dros ArrayLists).
  • Rwy'n gweithredu GetSpecificVendorByName() swyddogaeth yn ogystal, a allai fod yn addysgiadol.

Mae'r cod:

gan ddefnyddio System;
gan ddefnyddio System.Web;
gan ddefnyddio System.Web.Services;
gan ddefnyddio System.Web.Services.Protocols;
gan ddefnyddio Microsoft.SharePoint;
gan ddefnyddio System.Configuration;

/// <crynodeb>
///
Gwasanaeth gwerthwr: Darparu gwasanaethau Mae'r gwerthwr yn gysylltiedig â yfir heddiw gan ffurflen cleient infopath.
///
/// Hanes:
/// ——–
/// 07/24/07: Cychwynnol codio, Paul J. Gavin Conchango.
///
/// </crynodeb>
[Webservice(Bwlchenw = "http://www.conchango.com/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
cyhoeddus dosbarth VendorService : System.Web.Services.Webservice
{

/// <crynodeb>
/// Cynrychioli gwerthwr o restr sharepoint personol a gynhelir gan MSUSA.
/// </crynodeb>
cyhoeddus dosbarth Gwerthwr
{
cyhoeddus Gwerthwr() { }

cyhoeddus Gwerthwr(Poeri initItem)
{
os (! (initItem["Gwerthwr enw"] == sero)) VendorName = initItem["Gwerthwr enw"].ToString();
os (! (initItem["Cyfeiriad 1"] == sero)) VendorAddress1 = initItem["Cyfeiriad 1"].ToString();
os (! (initItem["Yn ymdrin â 2"] == sero)) VendorAddress2 = initItem["Yn ymdrin â 2"].ToString();
os (! (initItem["Dinas"] == sero)) VendorCity = initItem["Dinas"].ToString();
os (! (initItem["VendorPhone"] == sero)) VendorPhone = initItem["VendorPhone"].ToString();
os (! (initItem["PurchaseType"] == sero)) VendorType = initItem["PurchaseType"].ToString();
os (! (initItem["State"] == sero)) VendorState = initItem["State"].ToString();
os (! (initItem["Zip"] == sero)) VendorZip = initItem["Zip"].ToString();
os (!(initItem["Ffacs"] == sero)) VendorFax = initItem["Ffacs"].ToString();
os (!(initItem["SalesRepName"] == sero)) VendorSalesRepName = initItem["SalesRepName"].ToString();

VendorItemId = initItem.ID; // ID unigryw a gynhelir drwy MOSS.
}

cyhoeddus int VendorItemId;
cyhoeddus llinyn VendorName;
cyhoeddus llinyn VendorAddress1;
cyhoeddus llinyn VendorAddress2;
cyhoeddus llinyn VendorCity;
cyhoeddus llinyn VendorState;
cyhoeddus llinyn VendorZip;
cyhoeddus llinyn VendorPhone;
cyhoeddus llinyn VendorType;
cyhoeddus llinyn VendorSalesRepName;
cyhoeddus llinyn VendorFax;
}

cyhoeddus VendorService () {

//Uncomment Cynlluniodd y llinell ganlynol os ydych yn defnyddio cydrannau
//InitializeComponent();
}

preifat Gwerthwr[] GenerateTestVendors()
{
Gwerthwr[] resultList;
resultList = newydd Gwerthwr[100];

Gwerthwr v;
v = newydd Gwerthwr();
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 = newydd Gwerthwr();

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 = newydd Gwerthwr();
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;

dychwelyd resultList;

}

[WebMethod]
cyhoeddus Gwerthwr GetSpecificVendorById(int vendorId)
{
llinyn SpVendorSiteName; // Enw'r safle MOSS gwirioneddol sy'n lletya'r rhestr bersonol y gwerthwr.
llinyn SpVendorListName; // Enw o'r rhestr MOSS gwirioneddol sy'n cynnwys gwerthwyr.

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

gan ddefnyddio (SPSite safle = newydd SPSite(SpVendorSiteName))
{

gan ddefnyddio (SPWeb we = safle. OpenWeb())
{

SPList currentList = we. Rhestrau[SpVendorListName];

Poeri specificItem = currentList.Items[vendorId];

dychwelyd newydd Gwerthwr(specificItem);

} // ddefnyddio'r we spweb = site.openweb()
} // defnyddio'r safle spsite = spsite newydd("http://localhost/mizuho")

}

[WebMethod]
// Tybio bod enw'r gwerthwr yn unigryw, o safbwynt busnes
cyhoeddus Gwerthwr GetSpecificVendorByVendorName(llinyn vendorName)
{
llinyn SpVendorSiteName; // Enw'r safle MOSS gwirioneddol sy'n lletya'r rhestr bersonol y gwerthwr.
llinyn SpVendorListName; // Enw o'r rhestr MOSS gwirioneddol sy'n cynnwys gwerthwyr.

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

gan ddefnyddio (SPSite safle = newydd SPSite(SpVendorSiteName))
{
gan ddefnyddio (SPWeb we = safle. OpenWeb())
{

SPList currentList = we. Rhestrau[SpVendorListName];

foreach (Poeri vendorItem yn currentList.Items)
{
os (vendorItem["Gwerthwr enw"] == sero) parhau;

os (vendorItem["Gwerthwr enw"].ToString().Equals(vendorName))
dychwelyd newydd Gwerthwr(vendorItem);
}

Gwerthwr v = newydd Gwerthwr();
v.VendorPhone = "nid dod o hyd: " + vendorName;

dychwelyd v;

dychwelyd sero;

} // ddefnyddio'r we spweb = site.openweb()
} // defnyddio'r safle spsite = spsite newydd("http://localhost/mizuho")

} // dull

[WebMethod]
cyhoeddus Gwerthwr[] GetVendorsOfType (llinyn math hidlo)
{

llinyn SpVendorSiteName; // Enw'r safle MOSS gwirioneddol sy'n lletya'r t
rhestr bersonol gwerthwr au.
llinyn SpVendorListName; // Enw o'r rhestr MOSS gwirioneddol sy'n cynnwys gwerthwyr.

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

Gwerthwr[] resultList;
int vendorIndex = 0;
resultList = newydd Gwerthwr[1000];

// Ymgychwyn y rhestr gyda neges gyfeillgar diofyn.
Gwerthwr v = newydd Gwerthwr();
v.VendorName = "Dewiswch math o gwerthwr i lenwi'r rhestr hon.";
resultList[0] = v;

// Troi'n yr Hidlydd achos is ar gyfer haws cymharu llinyn yn ddiweddarach.
filterType = filterType.ToLower();

// Os oedd y math hidlydd ei basio yn 'brofi', cynhyrchu rhai data syml.
#rhanbarth Hidlo math = 'brofi"
os (filterType.Equals('brofi"))
dychwelyd GenerateTestVendors();
#endregion

os (wir)
{
gan ddefnyddio (SPSite safle = newydd SPSite(SpVendorSiteName))
{
gan ddefnyddio (SPWeb we = safle. OpenWeb())
{

v = sero;

SPList currentList = we. Rhestrau[SpVendorListName];

// Ailadrodd drwy holl eitemau yn y rhestr gwerthwr.
foreach (Poeri vendorItem yn currentList.Items)
{

llinyn lowerVendorType;

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

os (lowerVendorType.Equals(math hidlo))
{
resultList[vendorIndex ] = newydd Gwerthwr(vendorItem);
}
} // buddiol drwy'r holl gwerthwyr yn y rhestr


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

} // ddefnyddio'r we spweb = site.openweb()
} // defnyddio'r safle spsite = spsite newydd("http://localhost/mizuho")

} // Os yw'n wir

dychwelyd sero;
}

preifat Gwerthwr[] TrimVendorArray(int newsize, Gwerthwr[] originalVendorArray)
{
Gwerthwr[] trimmedArray;

os (newsize == 0) newsize = 1;
trimmedArray = newydd Gwerthwr[newsize];

int currentCounter = 0;

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

dychwelyd trimmedArray;

}
}