Kategorija Arhīvs: SŪNA

Papildu meklēšanas pielāgojumus MOSS — Gadījumā jautājums Izvērstā meklēšana XSLT

Es ļoti bieži Nemodificējiet Izvērstā meklēšana XSLT, Tāpēc šķiet, ka esmu kāpšanas nelielu pakalnu ikreiz, kad.

Tas ir mans jaunākais mācība: Lietu jautājumos, norādot atsauci uz kolonnas. Papildu meklēšanas, Tajā ir definēta kā šo kolonnu:

<saknes xmlns:XSi="http://www.w3.org/2001/XMLSchema-instance">
<
Kolonnas>
<
Kolonnu vārds="GafTrainingInvoiceNumber" />
<
Kolonnu vārds="GafTrainingInvoiceLocation" />
<
Kolonnu vārds="Darba ID"/>
<
Kolonnu vārds="Rangs"/>
<
Kolonnu vārds="Nosaukums"/>
<
Kolonnu vārds="Autors"/>
<
Kolonnu vārds="Lielums"/>
<
Kolonnu vārds="Ceļš"/>
<
Kolonnu vārds="Apraksts"/>
<
Kolonnu vārds="Rakstīt"/>
<
Kolonnu vārds="SiteName"/>
<
Kolonnu vārds="CollapsingStatus"/>
<
Kolonnu vārds="HitHighlightedSummary"/>
<
Kolonnu vārds="HitHighlightedProperties"/>
<
Kolonnu vārds="ContentClass"/>
<
Kolonnu vārds="IsDocument"/>
<
Kolonnu vārds="PictureThumbnailURL"/>
</
Kolonnas>
</
saknes>

XLST, kas parāda rēķina numurs un rēķina vietā bija:

<p>
Izglītības rēķina numurs: <XSL:vērtību no atlasiet="GafTrainingInvoiceNumber"/>
<
br></br>
Izglītības rēķina atrašanās vieta: <XSL:vērtību no atlasiet="GafTrainingInvoiceLocation"/>
</
p>

Tomēr, atlase ir atsauce īpašums ir visi mazie burti, kā:

<p>
Izglītības rēķina numurs: <XSL:vērtību no atlasiet="gaftraininginvoicenumber"/>
<
br></br>
Izglītības rēķina atrašanās vieta: <XSL:vērtību no atlasiet="gaftraininginvoicelocation"/>
</
p>


Kamēr es izlaboju, kas, meklēšanas rezultāti parādīja uzlīmes (ti. "Apmācības rēķina numurs") bet nav datu.

SŪNA / InfoPath Forms Server (InfoPath 2007) nolaižamajā sarakstā darbība

Papildu kategorijas: InfoPath

Kopsavilkums: InfoPath 2007 MOSS servera izvietot veidlapas nodrošina nolaižamo sarakstu kreditoru, kas saistīts ar pielāgotu sarakstu MOSS. Pēc kreditora atlases, noteikumiem piešķirt sauju teksta laukus, piemēram, pārdošanas rep vārdu lauka vērtības, adrese, pilsēta, valsts, ZIP un tālruņa. Veiktspēja ir briesmīgs. Mēs pamanām, ka darbība pasliktinās (nelineāru modē) katram papildu laukam šādā veidā mēs update. T.i., Ja mēs vienkārši atjaunināt pārdošanas rep nosaukumu, Tas aizņem [x] laiks. Ja mēs atjaunina pārdošanas rep, Address1, Address2, pilsēta, valsts, zip, Tas aizņem 10 reizes ilgāk.

Šķīdums: Rakstīt web pakalpojumu (parauga kods ir atrodams šeit) kas tiek nodota kreditora nosaukumu un tā atgriežas atpakaļ piegādātājam detaļas. Pēc tam, piešķirt laukus šādā veidā. Lai gan tas šķiet pārāk lēns, nebija jūtamas atšķirības sniegumu, kad mēs piešķirts 1 salīdzinot lauku 8 lauki. Kā pievienota prēmija, lietotājiem saņemt foršs "sazināšanās ar serveri" Cylon efektu, kamēr viņi gaida formu izsaukt un patērē pakalpojumu rezultātus.

SŪNA: Radās izņēmums. (Izņēmums no HRESULT: 0x 80020009 (DISP_E_EXCEPTION))

ATJAUNINĀJUMS: Mēs nekad noteikt cēloni šo problēmu, un tā nekad virsmas atkal.

Mēs pamanām, īstenojot attīstības vietā tas pēkšņi, divi lietotāji nevar piekļūt vietņu kolekcijas. Šos kontus var autentificēt uz galveno vietu, bet, mēģinot piekļūt vietņu kolekcijai, viņi saņem tikai tukšs ekrāns. Parādīt kļūdas, tikai balto tukšu lappusi.

Mēs pieteikties kā vietņu kolekcijas administrators un mēģiniet pievienot vienu no šiem lietotājiem site admin un šoreiz, pēc nospiežot "OK", mēs šo ziņojumu:

Radās izņēmums. (Izņēmums no HRESULT: 0x 80020009 (DISP_E_EXCEPTION))

Mēs pavadīju kādu laiku, pētot šo un diemžēl, nav jānāk klajā ar kaut ko noderīgu. Diagnostikas žurnālā, kas bija daži ziņojumi, bet tas bija grūti tos tieši korelē ar šo jautājumu.

Beigās, vietņu kolekcijas dzēšanas un izveidota atkārtoti, un tas mums atrisināt.

Ja es izrēķināt, ko izraisīja tas nākotnē, I'll update šo amatu.

SŪNA: Atkārtojot ar pielāgotiem sarakstiem un atgriežas filtrētus datus, InfoPath

Biznesa scenāriju:

Metode, kas ļauj lietotājiem ātri ievadīt precīzu pirkuma pieprasījumu sniegt.

Biznesa problēmas:

Klients veic komercdarbību ar vairāki simti pārdevēji.

Pārdevēji ir "tips" īpašas. Tas nozīmē, ka pārdevējs pārdod datoru iekārtas (piem.. Dell) vai kancelejas preces (piem.. Skavas).

Kā mēs ļautu gala lietotājiem, kuri veido pirkuma pieprasījumus atlasiet derīgu piegādātāju?

Biznesa risinājumu:

Atšķirt kreditori sistēmā caur "tips".

Iespējot lietotājus atlasīt tipu"" produktu un pēc tam nodrošina filtrēto atbilstošajiem piegādātājiem.

Tehniskais risinājums:

Ir izstrādāta InfoPath veidlapa ļauj lietotājiem ievadīt tiešsaistes pirkuma pieprasījumus.

Divi InfoPath atlases sarakstus kontrolē piegādātāja izvēli. Pirmais, lietotājs atlasa "pirkšanas tips". Tas ierobežo otro izvēles sarakstu satur tikai pārdevēji, kas pārdod pirkšanas tipu. Tas ir klasisks kaskādes Nolaižamajā.

Kreditoriem tiek glabātas MOSS pielāgotu sarakstu ar pielāgotu kolonnu piegādātāja atribūtiem, piemēram, nosaukums, adresi un it īpaši "tips".

Ieviest web pakalpojums, InfoPath klientu patērēt, ka atkārtojas pa pasūtījuma piegādātāju sarakstu, atgriežas tikai kreditoriem, saskaņojot norādīto "tipa".

Lietot web pakalpojumu, izmantojot InfoPath veidlapas.

Gūtās mācības:

  • Pirmais, tas šķiet vajadzīgs, lai iet šo ceļu. Es vēlētos, lai veiktu filtrēšanu tikai programmā InfoPath un nevar izveidot jebkuru web pakalpojuma funkcionalitāti. Tomēr, veidlapu serveris nenodrošina nepieciešamo filtrēšanas iespējas. Mēs varam nodot uz kārtulu "tips" izvēles saraksta veidā kārtot vēlreiz atvērt kreditora vaicājumu, bet mēs nevaram iegūt darbu pareizi. Tādēļ, tas bija nepieciešams ieviest web pakalpojums.
  • Tas ir klasisks "kaskādes atlases sarakstā" problēmas InfoPath veidlapu servera pasaulē, un tur ir daudzi labi piemēri, kas tur, kas paskaidro, kā atrisināt šo.
  • Kreditoru saraksta kolonnā tukša vērtība nevar atgriezt tukšu virkni, ja norādes, kā šī: initItem["Pārdevēja nosaukums"]. Tā vietā, tiek atgriezta vērtība null.

Dažas citas piezīmes:

  • Es atgriezties masīvs[] pārdevēji, jo man bija dažas grūtības atgriezties ArrayList. InfoPath bija sūdzas par to, un man nav laika vai vēlēšanās cīnīties tai pāri. Tas, protams, mākslīgu ierobežojumu uzvelk kreditoru kopskaits. Tas arī bija likusi man īstenot apdares() masīva metodi, jo man riebjas doma par atgriešanos atpakaļ 100 nulle kreditoriem. InfoPath nav vienalga, bet tas nagged pie manis. (Atkal, tas bija vieglāk nekā cīnās InfoPath ArrayLists).
  • Man jāīsteno GetSpecificVendorByName() funkcijas, kā arī, kas var būt pamācošs.

Kods:

izmantojot Sistēma;
izmantojot System. Web;
izmantojot System.Web.Services;
izmantojot System.Web.Services.Protocols;
izmantojot Microsoft.SharePoint;
izmantojot System.Configuration;

/// <kopsavilkums>
///
Piegādātāja pakalpojumi: Nodrošina piegādātāju saistīto pakalpojumus, kas šobrīd patērē klients infopath veidlapu.
///
/// Vēsture:
/// ——–
/// 07/24/07: Sākotnējo kodēšana, Paul J. Gavin Conchango.
///
/// </kopsavilkums>
[WebService(Namespace = "http://www.conchango.com/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
valsts klase VendorService : System.Web.Services.WebService
{

/// <kopsavilkums>
/// Pārstāv kreditoru no pielāgotas sharepoint sarakstu uztur MSUSA.
/// </kopsavilkums>
valsts klase Kreditoru
{
valsts Kreditoru() { }

valsts Kreditoru(SPItem initItem)
{
Ja (! (initItem["Pārdevēja nosaukums"] == nulle)) VendorName = initItem["Pārdevēja nosaukums"].ToString();
Ja (! (initItem["Adrese 1"] == nulle)) VendorAddress1 = initItem["Adrese 1"].ToString();
Ja (! (initItem["Adrese 2"] == nulle)) VendorAddress2 = initItem["Adrese 2"].ToString();
Ja (! (initItem["Pilsēta"] == nulle)) VendorCity = initItem["Pilsēta"].ToString();
Ja (! (initItem["VendorPhone"] == nulle)) VendorPhone = initItem["VendorPhone"].ToString();
Ja (! (initItem["PurchaseType"] == nulle)) VendorType = initItem["PurchaseType"].ToString();
Ja (! (initItem["Valsts"] == nulle)) VendorState = initItem["Valsts"].ToString();
Ja (! (initItem["Zip"] == nulle)) VendorZip = initItem["Zip"].ToString();
Ja (!(initItem["Fakss"] == nulle)) VendorFax = initItem["Fakss"].ToString();
Ja (!(initItem["SalesRepName"] == nulle)) VendorSalesRepName = initItem["SalesRepName"].ToString();

VendorItemId = initItem.ID; // Unikālo ID, uzturēti caur MOSS.
}

valsts Int VendorItemId;
valsts virkne VendorName;
valsts virkne VendorAddress1;
valsts virkne VendorAddress2;
valsts virkne VendorCity;
valsts virkne VendorState;
valsts virkne VendorZip;
valsts virkne VendorPhone;
valsts virkne VendorType;
valsts virkne VendorSalesRepName;
valsts virkne VendorFax;
}

valsts VendorService () {

//Uncomment ja izmantojot sekojošu rindu izstrādātas sastāvdaļas
//InitializeComponent();
}

privāts Kreditoru[] GenerateTestVendors()
{
Kreditoru[] resultList;
resultList = jaunā Kreditoru[100];

Kreditoru v;
v = jaunā Kreditoru();
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 = jaunā Kreditoru();

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 = jaunā Kreditoru();
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;

atgriešanās resultList;

}

[Web metodi]
valsts Kreditoru GetSpecificVendorById(Int vendorId)
{
virkne SpVendorSiteName; // Nosaukums faktiskais MOSS vietnes, kas vieso kreditoru pielāgotu sarakstu.
virkne SpVendorListName; // Nosaukums faktiskais MOSS sarakstu, kurā ietilpst pārdevēji.

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

izmantojot (SPSite vieta = jaunā SPSite(SpVendorSiteName))
{

izmantojot (SPWeb Web vietas =. OpenWeb())
{

SPList currentList = interneta. Saraksti[SpVendorListName];

SPItem specificItem = currentList.Items[vendorId];

atgriešanās jaunā Kreditoru(specificItem);

} // izmantojot spweb web = site.openweb()
} // izmantojot spsite site = jaunu spsite("http://localhost/Midzuho")

}

[Web metodi]
// Tiek pieņemts, ka kreditora nosaukums ir unikāls, no biznesa viedokļa
valsts Kreditoru GetSpecificVendorByVendorName(virkne būt)
{
virkne SpVendorSiteName; // Nosaukums faktiskais MOSS vietnes, kas vieso kreditoru pielāgotu sarakstu.
virkne SpVendorListName; // Nosaukums faktiskais MOSS sarakstu, kurā ietilpst pārdevēji.

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

izmantojot (SPSite vieta = jaunā SPSite(SpVendorSiteName))
{
izmantojot (SPWeb Web vietas =. OpenWeb())
{

SPList currentList = interneta. Saraksti[SpVendorListName];

foreach (SPItem vendorItem programmā currentList.Items)
{
Ja (vendorItem["Pārdevēja nosaukums"] == nulle) «««;

Ja (vendorItem["Pārdevēja nosaukums"].ToString().Ir vienāds ar(būt))
atgriešanās jaunā Kreditoru(vendorItem);
}

Kreditoru v = jaunā Kreditoru();
v.VendorPhone = "nav atrasts: " + būt;

atgriešanās v;

atgriešanās nulle;

} // izmantojot spweb web = site.openweb()
} // izmantojot spsite site = jaunu spsite("http://localhost/Midzuho")

} // metode

[Web metodi]
valsts Kreditoru[] GetVendorsOfType (virkne filterType)
{

virkne SpVendorSiteName; // Nosaukums faktiskais MOSS vietnes, kas vieso t
viņš kreditoru pielāgotu sarakstu.
virkne SpVendorListName; // Nosaukums faktiskais MOSS sarakstu, kurā ietilpst pārdevēji.

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

Kreditoru[] resultList;
Int vendorIndex = 0;
resultList = jaunā Kreditoru[1000];

// Inicializēt ar draudzīgu ziņojumu noklusējuma sarakstu.
Kreditoru v = jaunā Kreditoru();
v.VendorName = "Norādiet kreditora tipa, lai aizpildītu šo sarakstu.";
resultList[0] = v;

// Zemāku gadījumā vieglāk virknes salīdzinājums vēlāk pārvērst filtrs.
filterType = filterType.ToLower();

// Ja pagājis filtra tips ir "tests", dažas vienkāršas datu ģenerēšanai.
#reģions Filtra tips = "tests"
Ja (filterType. ir vienāda ar("test"))
atgriešanās GenerateTestVendors();
#endregion

Ja (patiess)
{
izmantojot (SPSite vieta = jaunā SPSite(SpVendorSiteName))
{
izmantojot (SPWeb Web vietas =. OpenWeb())
{

v = nulle;

SPList currentList = interneta. Saraksti[SpVendorListName];

// Atkārtot ar piegādātāju sarakstā esošos vienumus.
foreach (SPItem vendorItem programmā currentList.Items)
{

virkne lowerVendorType;

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

Ja (lowerVendorType. ir vienāda ar(filterType))
{
resultList[vendorIndex ] = jaunā Kreditoru(vendorItem);
}
} // karodziņš notiek caur visu kreditoru sarakstā


atgriešanās TrimVendorArray(vendorIndex, resultList);
// resultList atgriezt;

} // izmantojot spweb web = site.openweb()
} // izmantojot spsite site = jaunu spsite("http://localhost/Midzuho")

} // Ja tā ir true

atgriešanās nulle;
}

privāts Kreditoru[] TrimVendorArray(Int newsize, Kreditoru[] originalVendorArray)
{
Kreditoru[] trimmedArray;

Ja (newsize = = 0) newsize = 1;
trimmedArray = jaunā Kreditoru[newsize];

Int currentCounter = 0;

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

atgriešanās trimmedArray;

}
}