jamii Archives: Moss

MOSS utafutaji customization — Kesi gani jambo katika utafutaji XSLT

Mimi si kurekebisha utafutaji XSLT mara nyingi sana, hivyo inaonekana kama mimi nina kupanda ndogo milima kila wakati.

Somo wangu newest ni hii: Uchunguzi mambo wakati referencing safu. Katika tafuta yangu juu, Mimi nguzo hufafanuliwa kama hii:

<mizizi xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<
Nguzo>
<
Safu Jina="GafTrainingInvoiceNumber" />
<
Safu Jina="GafTrainingInvoiceLocation" />
<
Safu Jina="WorkId"/>
<
Safu Jina="Cheo"/>
<
Safu Jina="Title"/>
<
Safu Jina="Mwandishi"/>
<
Safu Jina="Ukubwa"/>
<
Safu Jina="Njia"/>
<
Safu Jina="Description"/>
<
Safu Jina="Kuandika"/>
<
Safu Jina="SiteName"/>
<
Safu Jina="CollapsingStatus"/>
<
Safu Jina="HitHighlightedSummary"/>
<
Safu Jina="HitHighlightedProperties"/>
<
Safu Jina="Contentclass"/>
<
Safu Jina="IsDocument"/>
<
Safu Jina="PictureThumbnailURL"/>
</
Nguzo>
</
mizizi>

XLST kwamba maonyesho ya simu ankara na mahali ankara alikuwa:

<p>
Training Invoice Number: <xsl:thamani ya kuchagua="GafTrainingInvoiceNumber"/>
<
br></br>
Training Invoice Location: <xsl:thamani ya kuchagua="GafTrainingInvoiceLocation"/>
</
p>

Hata hivyo, kuchagua ina rejea mali katika kesi zote za chini, kama katika:

<p>
Training Invoice Number: <xsl:thamani ya kuchagua="gaftraininginvoicenumber"/>
<
br></br>
Training Invoice Location: <xsl:thamani ya kuchagua="gaftraininginvoicelocation"/>
</
p>


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

Moss / InfoPath Fomu Server (InfoPath 2007) kushuka chini orodha ya utendaji

Ziada jamii: InfoPath

Muhtasari: InfoPath 2007 kuunda uliotumika kwa server MOSS hutoa orodha kushuka chini ya wachuuzi amefungwa kwa orodha desturi MOSS. Baada ya kuchagua muuzaji, sheria hawawajui maadili ya shamba na wachache wa mashamba ya maandishi kama vile mauzo jina rep, anuani, mji, hali, zip na simu. Utendaji ni ya kutisha. Tunaona kwamba utendaji inakuwa mbaya zaidi (in a non-linear fashion) kwa kila shamba ya ziada sisi update kwa njia hii. Yaani, kama sisi tu update mauzo jina rep, inachukua [x] kiasi cha muda. Kama sisi update mauzo rep, address1, address2, mji, hali, zip, inachukua 10 mara tena.

Ufumbuzi: Kuandika huduma ya mtandao (kanuni sampuli yanaweza kupatikana hapa) kwamba ni kupita katika jina la muuzaji na kuirudisha nyuma maelezo muuzaji. Kisha, hawawajui mashamba kwa njia hii. Ingawa hii pia inaonekana polepole, kulikuwa hakuna tofauti discernable katika utendaji wakati sisi kupewa 1 shamba dhidi ya 8 mashamba ya. Kama ziada ya aliongeza, users get a cool "contacting the server" Cylon athari wakati wao kusubiri kwa ajili ya waomba na hutumia matokeo ya huduma.

Moss: Ubaguzi ilitokea. (Isipokuwa kutoka HRESULT: 0x80020009 (DISP_E_EXCEPTION))

UPDATE: Sisi kamwe kuamua sababu mizizi ya tatizo hili na kamwe uso tena.

Tunaona wakati wa utekelezaji wa tovuti ya maendeleo kwamba ghafla, mbili watumiaji hawawezi kupata ukusanyaji tovuti. Wale akaunti anaweza kuthibitisha kwa tovuti kuu, lakini wakati akijaribu kupata fulani tovuti ukusanyaji, kupata tu screen tupu. Hakuna makosa kuonyeshwa, tu nyeupe tupu ukurasa.

Sisi kuingia kwenye tovuti kama admin ukusanyaji na na kujaribu kuongeza moja ya watumiaji hao kama admin tovuti hii wakati, upon pressing "OK", sisi kupata ujumbe huu:

Ubaguzi ilitokea. (Isipokuwa kutoka HRESULT: 0x80020009 (DISP_E_EXCEPTION))

Sisi alitumia muda kutafiti hili na kwa bahati mbaya, hakuwa na kuja na kitu chochote muhimu. Kulikuwa na baadhi ya ujumbe katika logi uchunguzi, lakini ilikuwa vigumu hasa correlate yao na suala hili.

Katika mwisho, sisi kufuta ukusanyaji tovuti na re-umba yake na kwamba ni kutatuliwa.

Kama mimi kufikiri nini hii unasababishwa katika siku zijazo, Mimi itabidi update hii post.

Moss: Iterating kupitia orodha ya desturi na kurudi data kuchujwa kwenye InfoPath

Biashara Igizo:

Kutoa njia ambayo itawezesha watumiaji kuingia Maombi ya ununuzi sahihi haraka.

Biashara tatizo:

mteja anafanya biashara na wachuuzi mia kadhaa.

Vendors are "type" maalum. Hii ina maana kwamba muuzaji anauza vifaa vya kompyuta (e.g. Dell) au vifaa vya ofisi (e.g. Mazao ya chakula).

How do we enable end users who create purchase requisitions select a valid vendor?

Business Solution:

Differentiate vendors in the system via "type".

Enable users to select the "type" of product and then provide a filtered set of appropriate vendors.

Kiufundi Solution:

An InfoPath form has been designed that enables users to enter online purchase requisitions.

Two InfoPath selection lists control vendor selection. Kwanza, 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.

Vendors are stored in a MOSS custom list with custom columns for vendor attributes such as name, address and especially "type".

Implement a web service for an InfoPath client to consume that iterates through the custom vendor list, returning only vendors matching a supplied "type".

Invoke the web service via the InfoPath form.

Yaliyojitokeza:

  • Kwanza, it seems necessary to go this route. I would have preferred to do the filtering entirely within InfoPath and not create any web service functionality here. Hata hivyo, forms server does not provide the required filtering capability. We can put a rule onto a the "type" selection list in the form to sort of re-open the vendor query, but we can’t get it to work properly. Kwa hiyo, it was necessary to implement the web service.
  • This is a classic "cascading selection list" problem in the InfoPath forms server world and there are many good examples out there that explain how to solve this.
  • A blank value for a column in the vendor list does not return an empty string when referenced like this: initItem["Vendor Name"]. Badala yake, it returns a null.

Some other Notes:

  • I return an array[] of vendors because I had some difficulty returning an ArrayList. InfoPath was complaining about it and I didn’t have the time or the inclination to fight over it. Hii, bila shaka, puts an artificial limit on the total number of vendors. It also compelled me to implement a trim() method on the array because I hate the idea of returning back 100’s of null vendors. InfoPath doesn’t care, but it nagged at me. (Tena, this was easier than fighting InfoPath over ArrayLists).
  • I implemented a GetSpecificVendorByName() function as well, which may be instructive.

kanuni:

kutumia Mfumo;
kutumia System.Web;
kutumia System.Web.Services;
kutumia System.Web.Services.Protocols;
kutumia Microsoft.SharePoint;
kutumia System.Configuration;

/// <muhtasari>
///
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.
///
/// </muhtasari>
[Webservice(Namespace = "http://www.conchango.com/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
umma darasani VendorService : System.Web.Services.Webservice
{

/// <muhtasari>
/// Represents a vendor from a custom sharepoint list maintained by MSUSA.
/// </muhtasari>
umma darasani Vendor
{
umma Vendor() { }

umma Vendor(SPItem initItem)
{
kama (! (initItem["Vendor Name"] == null)) VendorName = initItem["Vendor Name"].ToString();
kama (! (initItem["Address 1"] == null)) VendorAddress1 = initItem["Address 1"].ToString();
kama (! (initItem["Address 2"] == null)) VendorAddress2 = initItem["Address 2"].ToString();
kama (! (initItem["City"] == null)) VendorCity = initItem["City"].ToString();
kama (! (initItem["VendorPhone"] == null)) VendorPhone = initItem["VendorPhone"].ToString();
kama (! (initItem["PurchaseType"] == null)) VendorType = initItem["PurchaseType"].ToString();
kama (! (initItem["State"] == null)) VendorState = initItem["State"].ToString();
kama (! (initItem["Zip"] == null)) VendorZip = initItem["Zip"].ToString();
kama (!(initItem["Fax"] == null)) VendorFax = initItem["Fax"].ToString();
kama (!(initItem["SalesRepName"] == null)) VendorSalesRepName = initItem["SalesRepName"].ToString();

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

umma int VendorItemId;
umma string VendorName;
umma string VendorAddress1;
umma string VendorAddress2;
umma string VendorCity;
umma string VendorState;
umma string VendorZip;
umma string VendorPhone;
umma string VendorType;
umma string VendorSalesRepName;
umma string VendorFax;
}

umma VendorService () {

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

binafsi Vendor[] GenerateTestVendors()
{
Vendor[] resultList;
resultList = mpya Vendor[100];

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

kurudi resultList;

}

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

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

kutumia (SPSite site = mpya SPSite(SpVendorSiteName))
{

kutumia (SPWeb web = site.OpenWeb())
{

SPList currentList = web.Lists[SpVendorListName];

SPItem specificItem = currentList.Items[vendorId];

kurudi mpya 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
umma Vendor GetSpecificVendorByVendorName(string vendorName)
{
string SpVendorSiteName; // Name of the actual MOSS site that hosts the vendor custom list.
string SpVendorListName; // Name of the actual MOSS list containing vendors.

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

kutumia (SPSite site = mpya SPSite(SpVendorSiteName))
{
kutumia (SPWeb web = site.OpenWeb())
{

SPList currentList = web.Lists[SpVendorListName];

foreach (SPItem vendorItem katika currentList.Items)
{
kama (vendorItem["Vendor Name"] == null) kuendelea;

kama (vendorItem["Vendor Name"].ToString().Sawa na(vendorName))
kurudi mpya Vendor(vendorItem);
}

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

kurudi v;

kurudi null;

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

} // njia

[WebMethod]
umma Vendor[] GetVendorsOfType (string filterType)
{

string SpVendorSiteName; // Name of the actual MOSS site that hosts t
he vendor custom list.
string 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 = mpya Vendor[1000];

// Initialize the list with a default friendly message.
Vendor v = mpya 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.
#kanda Filter type = "test"
kama (filterType.Equals("test"))
kurudi GenerateTestVendors();
#endregion

kama (kweli)
{
kutumia (SPSite site = mpya SPSite(SpVendorSiteName))
{
kutumia (SPWeb web = site.OpenWeb())
{

v = null;

SPList currentList = web.Lists[SpVendorListName];

// Iterate through all the items in the vendor list.
foreach (SPItem vendorItem katika currentList.Items)
{

string lowerVendorType;

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

kama (lowerVendorType.Equals(filterType))
{
resultList[vendorIndex ] = mpya Vendor(vendorItem);
}
} // iterating thru all the vendors in the list


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

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

} // if true

kurudi null;
}

binafsi Vendor[] TrimVendorArray(int newsize, Vendor[] originalVendorArray)
{
Vendor[] trimmedArray;

kama (newsize == 0) newsize = 1;
trimmedArray = mpya Vendor[newsize];

int currentCounter = 0;

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

kurudi trimmedArray;

}
}