კატეგორია არქივი: Moss

MOSS გაფართოებული ძიება დაკონფიგურირება — საქმეს არ საკითხის გაფართოებული ძიება XSLT

მე არ შეცვალოს გაფართოებული ძიება XSLT ძალიან ხშირად, ასე რომ, როგორც ჩანს, როგორიც მე ვარ ასვლა მცირე მთებში ყოველ ჯერზე.

ჩემი უახლესი გაკვეთილი არის ამ: საქმე მნიშვნელოვანია, როდესაც მითითება სვეტი. ჩემი გაფართოებული ძიება, მე სვეტების განისაზღვრება, როგორც ეს:

<root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<
Columns>
<
სვეტი სახელი="GafTrainingInvoiceNumber" />
<
სვეტი სახელი="GafTrainingInvoiceLocation" />
<
სვეტი სახელი="WorkId"/>
<
სვეტი სახელი="რანგის"/>
<
სვეტი სახელი="სათაური"/>
<
სვეტი სახელი="ავტორი"/>
<
სვეტი სახელი="ზომა"/>
<
სვეტი სახელი="გზა"/>
<
სვეტი სახელი="აღწერა"/>
<
სვეტი სახელი="დაწერეთ"/>
<
სვეტი სახელი="SiteName"/>
<
სვეტი სახელი="CollapsingStatus"/>
<
სვეტი სახელი="HitHighlightedSummary"/>
<
სვეტი სახელი="HitHighlightedProperties"/>
<
სვეტი სახელი="Contentclass"/>
<
სვეტი სახელი="IsDocument"/>
<
სვეტი სახელი="PictureThumbnailURL"/>
</
Columns>
</
root>

XLST რომ აჩვენებს ფაქტურის ნომერი და ფაქტურის საიდან იყო:

<P>
Training Invoice Number: <XSL:ღირებულების შესახებ შერჩევა="GafTrainingInvoiceNumber"/>
<
br></br>
Training Invoice Location: <XSL:ღირებულების შესახებ შერჩევა="GafTrainingInvoiceLocation"/>
</
P>

თუმცა, აირჩიეთ გააჩნია მითითებას ქონება ყველა ქვედა შემთხვევაში, , როგორც in:

<P>
Training Invoice Number: <XSL:ღირებულების შესახებ შერჩევა="gaftraininginvoicenumber"/>
<
br></br>
Training Invoice Location: <XSL:ღირებულების შესახებ შერჩევა="gaftraininginvoicelocation"/>
</
P>


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

Moss / InfoPath ფორმები სერვერი (InfoPath 2007) ჩამოსაშლელი სია შესრულება

დამატებითი გარეშე: InfoPath

რეზიუმე: InfoPath 2007 შექმნან შეიყვანეს MOSS სერვერზე უზრუნველყოფს ჩამოშლადი სია, მოვაჭრეებს უკავშირდება საბაჟო MOSS სია. საფუძველზე შერჩევის მოვაჭრე, წესები დაავალოს სფეროში ღირებულებების მუჭა ტექსტი სფეროებში გაყიდვების rep სახელი, მისამართი, ქალაქის, სახელმწიფო, zip და ტელეფონის. სპექტაკლი საშინელებაა. ჩვენ შეამჩნია, რომ შესრულების იღებს უარესი (in a non-linear fashion) თითოეული დამატებითი სფეროში ჩვენ განახლება ამ გზით. ანუ, თუ ჩვენ მხოლოდ განაახლებს გაყიდვების rep სახელი, სჭირდება [x] დროის. თუ ჩვენ განახლება გაყიდვების rep, address1, address2, ქალაქის, სახელმწიფო, zip, სჭირდება 10 ჯერ აღარ.

Solution: დაწერეთ ვებ სერვისი (ნიმუში კოდი შეიძლება ი აქ) რომ ჩაიარა სახელი გამყიდველი და ის დააბრუნებს უკან გამყიდველი ვრცლად. მაშინ, დაავალოს სფეროებში ამ გზით. მიუხედავად იმისა, რომ ეს ძალიან, როგორც ჩანს, ნელი, იყო შესამჩნევ განსხვავებას შესრულება, როდესაც ჩვენ დაავალა 1 საველე წინააღმდეგ 8 სფეროები. როგორც დამატებითი ბონუსი, users get a cool "contacting the server" Cylon ეფექტი, როდესაც ისინი დაელოდებიან ფორმა ახსენებდნენ და მოიხმარენ მომსახურება შედეგები.

Moss: გამონაკლისი მოხდა. (გამონაკლისი საწყისი HRESULT: 0x80020009 (DISP_E_EXCEPTION))

განახლების: ჩვენ არასდროს განისაზღვრება ძირეული მიზეზი ამ პრობლემის კი არასდროს ზედაპირზე ერთხელ.

ჩვენ შეამჩნია განხორციელებისას განვითარების საიტი, რომელიც მოულოდნელად, ორი წევრებს ვერ შედიხართ საიტზე კოლექციაში. იმ ანგარიშების ნახვა შეიძლება შესასვლელად საიტის მთავარი, მაგრამ, როდესაც ცდილობს წვდომის კონკრეტული საიტი კოლექციაში, ისინი უბრალოდ ცარიელი ეკრანის. არ შეცდომები ნაჩვენები, მხოლოდ თეთრი ცარიელი გვერდი.

ჩვენ დარეგისტრირდეთ, როგორც საიტი კოლექციის admin და ცდილობენ დავამატებთ ერთ იმ წევრებს, როგორც მაწანწალა და ამ დროს, upon pressing "OK", მივიღებთ ამ გაგზავნა:

გამონაკლისი მოხდა. (გამონაკლისი საწყისი HRESULT: 0x80020009 (DISP_E_EXCEPTION))

გავატარეთ გარკვეული დროის იკვლევს ამ და სამწუხაროდ, არ ამუშავება არაფერი სასარგებლო. იყო გარკვეული შეტყობინებები სადიაგნოსტიკო ჟურნალი, მაგრამ რთული იყო ზუსტად შეესაბამება მათ ამ საკითხის.

და ბოლოს, ჩვენ წაშლის საიტი შეგროვება და ხელახლა შექმნილი და რომ მოგვარდეს ეს.

თუ მე გაერკვნენ, თუ რა გამოიწვია ამ მომავალში, მე განაახლებს ჩანაწერი.

Moss: Iterating მეშვეობით საბაჟო სიები და დაბრუნების გაფილტრული მონაცემების to InfoPath

ბიზნეს სცენარი:

უზრუნველყოფა მეთოდი, რომელიც საშუალებას იძლევა სტუმრების შემოსვლა ზუსტი შეძენა requisitions სწრაფად.

ბიზნესის პრობლემა:

კლიენტს არ ბიზნეს რამდენიმე ასეული მოვაჭრეებს.

Vendors are "type" კონკრეტული. ეს ნიშნავს, რომ გამყიდველი ყიდის კომპიუტერული ტექნიკის (e.g. Dell) ან საკანცელარიო აქსესუარები (e.g. Staples).

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

ბიზნეს გადაწყვეტილება:

Differentiate vendors in the system via "type".

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

ტექნიკური გადაწყვეტა:

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

Two InfoPath selection lists control vendor selection. პირველი, 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.

Lessons Learned:

  • პირველი, 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. თუმცა, 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. ამიტომ, 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"]. ამის ნაცვლად, 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. ეს, რა თქმა უნდა, 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. (ისევ, this was easier than fighting InfoPath over ArrayLists).
  • I implemented a GetSpecificVendorByName() function as well, which may be instructive.

The code:

გამოყენებით სისტემები;
გამოყენებით System.Web;
გამოყენებით System.Web.Services;
გამოყენებით System.Web.Services.Protocols;
გამოყენებით Microsoft.SharePoint;
გამოყენებით System.Configuration;

/// <შემაჯამებელი>
///
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.
///
/// </შემაჯამებელი>
[WebService(Namespace = "http://www.conchango.com/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
საჯარო კლასი VendorService : System.Web.Services.WebService
{

/// <შემაჯამებელი>
/// Represents a vendor from a custom sharepoint list maintained by MSUSA.
/// </შემაჯამებელი>
საჯარო კლასი Vendor
{
საჯარო Vendor() { }

საჯარო Vendor(Spit initItem)
{
თუ (! (initItem["Vendor Name"] == ნულოვანი)) VendorName = initItem["Vendor Name"].ToString();
თუ (! (initItem["Address 1"] == ნულოვანი)) VendorAddress1 = initItem["Address 1"].ToString();
თუ (! (initItem["Address 2"] == ნულოვანი)) VendorAddress2 = initItem["Address 2"].ToString();
თუ (! (initItem["City"] == ნულოვანი)) VendorCity = initItem["City"].ToString();
თუ (! (initItem["VendorPhone"] == ნულოვანი)) VendorPhone = initItem["VendorPhone"].ToString();
თუ (! (initItem["PurchaseType"] == ნულოვანი)) VendorType = initItem["PurchaseType"].ToString();
თუ (! (initItem["State"] == ნულოვანი)) VendorState = initItem["State"].ToString();
თუ (! (initItem["Zip"] == ნულოვანი)) VendorZip = initItem["Zip"].ToString();
თუ (!(initItem["Fax"] == ნულოვანი)) VendorFax = initItem["Fax"].ToString();
თუ (!(initItem["SalesRepName"] == ნულოვანი)) VendorSalesRepName = initItem["SalesRepName"].ToString();

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

საჯარო int VendorItemId;
საჯარო სიმებიანი VendorName;
საჯარო სიმებიანი VendorAddress1;
საჯარო სიმებიანი VendorAddress2;
საჯარო სიმებიანი VendorCity;
საჯარო სიმებიანი VendorState;
საჯარო სიმებიანი VendorZip;
საჯარო სიმებიანი VendorPhone;
საჯარო სიმებიანი VendorType;
საჯარო სიმებიანი VendorSalesRepName;
საჯარო სიმებიანი VendorFax;
}

საჯარო VendorService () {

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

შეტყობინების 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;

დაბრუნდნენ resultList;

}

[WebMethod]
საჯარო Vendor GetSpecificVendorById(int vendorId)
{
სიმებიანი SpVendorSiteName; // Name of the actual MOSS site that hosts the vendor custom list.
სიმებიანი SpVendorListName; // Name of the actual MOSS list containing vendors.

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

გამოყენებით (SPSite site = ახალი SPSite(SpVendorSiteName))
{

გამოყენებით (SPWeb web = site.OpenWeb())
{

SPList currentList = web.Lists[SpVendorListName];

Spit specificItem = currentList.Items[vendorId];

დაბრუნდნენ ახალი 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
საჯარო Vendor GetSpecificVendorByVendorName(სიმებიანი vendorName)
{
სიმებიანი SpVendorSiteName; // Name of the actual MOSS site that hosts the vendor custom list.
სიმებიანი SpVendorListName; // Name of the actual MOSS list containing vendors.

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

გამოყენებით (SPSite site = ახალი SPSite(SpVendorSiteName))
{
გამოყენებით (SPWeb web = site.OpenWeb())
{

SPList currentList = web.Lists[SpVendorListName];

foreach (Spit vendorItem in currentList.Items)
{
თუ (vendorItem["Vendor Name"] == ნულოვანი) გაგრძელდება;

თუ (vendorItem["Vendor Name"].ToString().შეადგენს(vendorName))
დაბრუნდნენ ახალი Vendor(vendorItem);
}

Vendor v = ახალი Vendor();
v.VendorPhone = "not found: " + vendorName;

დაბრუნდნენ v;

დაბრუნდნენ ნულოვანი;

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

} // მეთოდი

[WebMethod]
საჯარო Vendor[] GetVendorsOfType (სიმებიანი filterType)
{

სიმებიანი SpVendorSiteName; // Name of the actual MOSS site that hosts t
he vendor custom list.
სიმებიანი 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.
#რეგიონში Filter type = "test"
თუ (filterType.Equals("test"))
დაბრუნდნენ GenerateTestVendors();
#endregion

თუ (ნამდვილი)
{
გამოყენებით (SPSite site = ახალი SPSite(SpVendorSiteName))
{
გამოყენებით (SPWeb web = site.OpenWeb())
{

v = ნულოვანი;

SPList currentList = web.Lists[SpVendorListName];

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

სიმებიანი lowerVendorType;

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

თუ (lowerVendorType.Equals(filterType))
{
resultList[vendorIndex ] = ახალი Vendor(vendorItem);
}
} // iterating thru all the vendors in the list


დაბრუნდნენ TrimVendorArray(vendorIndex, resultList);
// return resultList;

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

} // if true

დაბრუნდნენ ნულოვანი;
}

შეტყობინების Vendor[] TrimVendorArray(int newsize, Vendor[] originalVendorArray)
{
Vendor[] trimmedArray;

თუ (newsize == 0) newsize = 1;
trimmedArray = ახალი Vendor[newsize];

int currentCounter = 0;

ამისთვის (currentCounter = 0; currentCounter < newsize; currentCounter )
{
trimmedArray[currentCounter] = originalVendorArray[currentCounter];
}

დაბრუნდნენ trimmedArray;

}
}