Flokkaskjalasafn: Moss

MOSS Ítarlegri leit customization — Case skiptir máli í ítarlegri leit XSLT

Ég breyti ekki ítarlegri leit XSLT mjög oft, svo virðist það eins og ég er klifra litlum HILLS hvert skipti.

Nýjustu lexíu mína er þetta: Case máli þegar tilvísanir dálk. Í ítarlegri leit mína, Ég hef dálka skilgreind sem þetta:

<rót xmlns:Xsi="HTTP://www.w3.org/2001/XMLSchema-instance">
<
Dálkar>
<
Dálki Nafn="GafTrainingInvoiceNumber" />
<
Dálki Nafn="GafTrainingInvoiceLocation" />
<
Dálki Nafn="WorkId"/>
<
Dálki Nafn="Staða"/>
<
Dálki Nafn="Titill"/>
<
Dálki Nafn="Höfundur"/>
<
Dálki Nafn="Stærð"/>
<
Dálki Nafn="Path"/>
<
Dálki Nafn="Lýsing"/>
<
Dálki Nafn="Skrifa"/>
<
Dálki Nafn="SITENAME"/>
<
Dálki Nafn="CollapsingStatus"/>
<
Dálki Nafn="HitHighlightedSummary"/>
<
Dálki Nafn="HitHighlightedProperties"/>
<
Dálki Nafn="ContentClass"/>
<
Dálki Nafn="IsDocument"/>
<
Dálki Nafn="PictureThumbnailURL"/>
</
Dálkar>
</
rót>

The XLST sem birtir reikningsnúmer og reikningi staðsetning hafði verið:

<p>
Training Invoice Number: <XSL:gildi-af velja="GafTrainingInvoiceNumber"/>
<
br></br>
Training Invoice Location: <XSL:gildi-af velja="GafTrainingInvoiceLocation"/>
</
p>

Hins, the select has to reference the property in all lower case, eins og í:

<p>
Training Invoice Number: <XSL:gildi-af velja="gaftraininginvoicenumber"/>
<
br></br>
Training Invoice Location: <XSL:gildi-af velja="gaftraininginvoicelocation"/>
</
p>


Until I corrected that, search results showed the labels (i.e. "Training Invoice Number") but no data.

Moss / InfoPath Eyðublöð Server (InfoPath 2007) falla niður listann árangur

Viðbótarupplýsingar flokki: InfoPath

Yfirlit: An InfoPath 2007 mynda sent til Moss miðlara veitir fellilistanum af söluaðilum bundinn við sérsniðnum mosa lista. Við val á seljanda, reglur úthluta sviði gildi að handfylli af reiti texta, svo sem Sölufulltrúi nafn, netfang, City, ástand, zip og sími. Árangur er hræðilegt. Við eftir því að árangur versnar (í a non-línulega) fyrir hvern reit sem við uppfæra þessa leið. Þ.e., ef við uppfærum bara Sölufulltrúi nafn, það tekur [x] tíma. Ef við uppfærum sölufulltrúa, address1, address2, City, ástand, Zip, það tekur 10 sinnum lengur.

Lausn: Skrifa vefur þjónusta (dæmi um kóða má finna hér) sem berst í nafni seljanda og það skilar aftur seljandi upplýsingar. Þá, framselja sviðum með þessum hætti. Þó að þetta virðist of hægur, Það var engin discernable munur á frammistöðu þegar við úthlutað 1 sviði á móti 8 sviðum. Í ofanálag, users get a cool "contacting the server" Cylon áhrif á meðan þeir bíða eftir formi til að beita og neyta þjónusta niðurstöður.

Moss: Undantekning átti sér stað. (Undantekning frá HRESULT: 0x80020009 (DISP_E_EXCEPTION))

UPDATE: Við ákveðin aldrei rót orsök þessa vanda og það er aldrei yfirborðið aftur.

Við taka á framkvæmd þróun staður sem skyndilega, tveir notendur eru ekki að fá aðgang að vefsvæði safn. Þeir reikninga geta auðkennt til the aðalæð staður, en þegar reynt var að opna tiltekin svæði safn, þeir fá bara tóman skjáinn. Engar villur birtist, bara hvítt autt síðu.

Við þig í eins og a safn site admin og reyna að bæta einn af þeim notendum sem síða admin og að þessu sinni, upon pressing "OK", fáum við þessi skilaboð:

Undantekning átti sér stað. (Undantekning frá HRESULT: 0x80020009 (DISP_E_EXCEPTION))

Við eyddum nokkrum tíma að rannsaka þetta og því miður, kom ekki upp með neitt gagnlegt. Það voru nokkur skilaboð í greiningu þig inn, en það var erfitt að nákvæmlega samhengi þá með þetta mál.

Í lok, við að eyða síðuna safn og aftur skapaði það og það leyst það.

Ef ég reikna út hvað olli þessu í framtíðinni, Ég uppfæri þessa færslu.

Moss: Iterating gegnum sérsniðnum lista og aftur sía gögn til InfoPath

Viðskipti Atburðarás:

Koma fram með aðferð sem gerir notendum að slá inn nákvæmar requisitions kaupa fljótt.

Viðskipti vandamál:

Viðskiptavinurinn tekur fyrirtæki með nokkur hundruð smásali.

Vendors are "type" sérstakur. Þetta þýðir að seljandi selur tölvubúnað (e.g. Dell) eða skrifstofuvörur (e.g. Staples).

Hvernig kveiki við notendur sem búa kaupa requisitions velja gilt seljanda?

Business Solution:

Differentiate vendors in the system via "type".

Enable users to select the "type" vöru og þá veita síað setja viðeigandi smásali.

Tæknilegar Lausn:

An InfoPath mynd hefur verið hannað sem gerir notendum kleift að slá á netinu requisitions kaupa.

Tveir InfoPath val listar stjórna seljanda val. Fyrsta, the user selects a "purchase type". This limits a second selection list to contain only vendors that sell for that purchase type. This is a classic cascading drop-down.

Seljendur eru geymdar í mosa sérsniðnum lista með sérsniðnum dálka fyrir eiginleika seljanda svo sem nafn, address and especially "type".

Innleiða a vefur þjónusta fyrir Infopath viðskiptavinur að neyta sem iterates gegnum sérsniðnum seljanda lista, returning only vendors matching a supplied "type".

Ákalla vefnum þjónustu í gegnum Infopath formi.

Reynslu sem fengist:

  • Fyrsta, það virðist nauðsynlegt að fara þessa leið. Ég hefði kosið að gera sía alfarið innan InfoPath og ekki skapist þjónustu vefur virkni hér. Hins, eyðublöð miðlara veitir ekki nauðsynlegar sía getu. We can put a rule onto a the "type" val lista í formi til að raða í opna aftur seljandi fyrirspurn, en við getum ekki fengið það til að vinna almennilega. Því, það var nauðsynlegt til að framkvæma vefur þjónusta.
  • This is a classic "cascading selection list" vandamál í InfoPath eyðublöð miðlara heim og það eru mörg góð dæmi þarna úti sem skýra hvernig á að leysa þetta.
  • Autt gildi fyrir dálk í söluaðili listi ekki verið tómt band þegar vísað svona: initItem["Vendor Name"]. Staðinn, það skilar null.

Sumir annar Skýringar:

  • Ég skila fylki[] smásali vegna þess að ég hafði nokkrum erfiðleikum koma aftur til ArrayList. InfoPath var að kvarta um það og ég hafði ekki tíma eða halla til að berjast yfir það. Þetta, auðvitað, setur tilbúna takmörk á heildarfjölda birgja. Það knúinn mér líka að innleiða snyrta() method on the array because I hate the idea of returning back 100’s of null vendors. InfoPath er ekki sama, en það nagged á mig. (Aftur, þetta var auðveldara en að berjast Infopath yfir ArrayLists).
  • Ég innleitt GetSpecificVendorByName() virka eins vel, sem kann að vera lærdómsríkt.

The númer:

með System;
með System.Web;
með System.Web.Services;
með System.Web.Services.Protocols;
með Microsoft.SharePoint;
með System.Configuration;

/// <Yfirlit>
///
Vendor Service: Provides vendor related services which today are consumed by an infopath client form.
///
/// History:
/// ——–
/// 07/24/07: Initial coding, Paul J. Gavin of Conchango.
///
/// </Yfirlit>
[VefÃ(Namespace = "http://www.conchango.com/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
almennings flokki VendorService : System.Web.Services.VefÃ
{

/// <Yfirlit>
/// Represents a vendor from a custom sharepoint list maintained by MSUSA.
/// </Yfirlit>
almennings flokki Vendor
{
almennings Vendor() { }

almennings Vendor(Spýta initItem)
{
ef (! (initItem["Vendor Name"] == núll)) VendorName = initItem["Vendor Name"].ToString();
ef (! (initItem["Address 1"] == núll)) VendorAddress1 = initItem["Address 1"].ToString();
ef (! (initItem["Address 2"] == núll)) VendorAddress2 = initItem["Address 2"].ToString();
ef (! (initItem["City"] == núll)) VendorCity = initItem["City"].ToString();
ef (! (initItem["VendorPhone"] == núll)) VendorPhone = initItem["VendorPhone"].ToString();
ef (! (initItem["PurchaseType"] == núll)) VendorType = initItem["PurchaseType"].ToString();
ef (! (initItem["State"] == núll)) VendorState = initItem["State"].ToString();
ef (! (initItem["Zip"] == núll)) VendorZip = initItem["Zip"].ToString();
ef (!(initItem["Fax"] == núll)) VendorFax = initItem["Fax"].ToString();
ef (!(initItem["SalesRepName"] == núll)) VendorSalesRepName = initItem["SalesRepName"].ToString();

VendorItemId = initItem.ID; // Unique ID maintained via MOSS.
}

almennings INT VendorItemId;
almennings band VendorName;
almennings band VendorAddress1;
almennings band VendorAddress2;
almennings band VendorCity;
almennings band VendorState;
almennings band VendorZip;
almennings band VendorPhone;
almennings band VendorType;
almennings band VendorSalesRepName;
almennings band VendorFax;
}

almennings VendorService () {

//Uncomment the following line if using designed components
//InitializeComponent();
}

einkaaðila Vendor[] GenerateTestVendors()
{
Vendor[] resultList;
resultList = Vendor[100];

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

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

aftur resultList;

}

[WebMethod]
almennings Vendor GetSpecificVendorById(INT vendorId)
{
band SpVendorSiteName; // Name of the actual MOSS site that hosts the vendor custom list.
band SpVendorListName; // Name of the actual MOSS list containing vendors.

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

með (SPSite site = SPSite(SpVendorSiteName))
{

með (SPWeb web = site.OpenWeb())
{

SPList currentList = web.Lists[SpVendorListName];

Spýta specificItem = currentList.Items[vendorId];

aftur Vendor(specificItem);

} // using spweb web = site.openweb()
} // using spsite site = new spsite("http://localhost/mizuho")

}

[WebMethod]
// Assumes that the vendor name is unique, from a business perspective
almennings Vendor GetSpecificVendorByVendorName(band vendorName)
{
band SpVendorSiteName; // Name of the actual MOSS site that hosts the vendor custom list.
band SpVendorListName; // Name of the actual MOSS list containing vendors.

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

með (SPSite site = SPSite(SpVendorSiteName))
{
með (SPWeb web = site.OpenWeb())
{

SPList currentList = web.Lists[SpVendorListName];

framhandleggur (Spýta vendorItem í currentList.Items)
{
ef (vendorItem["Vendor Name"] == núll) áfram;

ef (vendorItem["Vendor Name"].ToString().Jafngildir(vendorName))
aftur Vendor(vendorItem);
}

Vendor v = Vendor();
v.VendorPhone = "not found: " + vendorName;

aftur v;

aftur núll;

} // using spweb web = site.openweb()
} // using spsite site = new spsite("http://localhost/mizuho")

} // aðferð

[WebMethod]
almennings Vendor[] GetVendorsOfType (band síu)
{

band SpVendorSiteName; // Name of the actual MOSS site that hosts t
he vendor custom list.
band SpVendorListName; // Name of the actual MOSS list containing vendors.

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

Vendor[] resultList;
INT vendorIndex = 0;
resultList = Vendor[1000];

// Initialize the list with a default friendly message.
Vendor v = Vendor();
v.VendorName = "Select a vendor type to populate this list.";
resultList[0] = v;

// Convert the filter to lower case for easier string comparison later.
filterType = filterType.ToLower();

// If the filter type passed is "test", generate some simple data.
#region Filter type = "test"
ef (filterType.Equals("test"))
aftur GenerateTestVendors();
#endregion

ef (satt)
{
með (SPSite site = SPSite(SpVendorSiteName))
{
með (SPWeb web = site.OpenWeb())
{

v = núll;

SPList currentList = web.Lists[SpVendorListName];

// Iterate through all the items in the vendor list.
framhandleggur (Spýta vendorItem í currentList.Items)
{

band lowerVendorType;

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

ef (lowerVendorType.Equals(síu))
{
resultList[vendorIndex ] = Vendor(vendorItem);
}
} // iterating thru all the vendors in the list


aftur TrimVendorArray(vendorIndex, resultList);
// return resultList;

} // using spweb web = site.openweb()
} // using spsite site = new spsite("http://localhost/mizuho")

} // if true

aftur núll;
}

einkaaðila Vendor[] TrimVendorArray(INT newsize, Vendor[] originalVendorArray)
{
Vendor[] trimmedArray;

ef (newsize == 0) newsize = 1;
trimmedArray = Vendor[newsize];

INT currentCounter = 0;

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

aftur trimmedArray;

}
}