Архиви на категоријата: Мос

Мос напредно пребарување прилагодување — Случај не е важно во напредно пребарување XSLT

Јас не ја менувате напредно пребарување XSLT многу често, па се чини како да сум качување мали ридови во секое време.

Моите најнови лекција е ова: Случај е важно кога референцирање колона. Во мојот напредно пребарување, Имам колумни дефинира како оваа:

<Коренот xmlns:Xsi="HTTP://www.w3.org/2001/XMLSchema-instance">
<
Колумни>
<
Колона Името="GafTrainingInvoiceNumber" />
<
Колона Името="GafTrainingInvoiceLocation" />
<
Колона Името="WorkId"/>
<
Колона Името="Рангира"/>
<
Колона Името="Наслов"/>
<
Колона Името="Автор"/>
<
Колона Името="Големина"/>
<
Колона Името="Пат"/>
<
Колона Името="Опис"/>
<
Колона Името="Напиши"/>
<
Колона Името="Мапа на име"/>
<
Колона Името="CollapsingStatus"/>
<
Колона Името="HitHighlightedSummary"/>
<
Колона Името="HitHighlightedProperties"/>
<
Колона Името="ContentClass"/>
<
Колона Името="IsDocument"/>
<
Колона Името="PictureThumbnailURL"/>
</
Колумни>
</
Коренот>

На XLST кој го прикажува на фактурата број и фактура локација биле:

<стр>
Training Invoice Number: <XSL:вредност на изберете="GafTrainingInvoiceNumber"/>
<
BR></BR>
Training Invoice Location: <XSL:вредност на изберете="GafTrainingInvoiceLocation"/>
</
стр>

Сепак, изберете мора да повикување на имотот во сите мали букви, како и во:

<стр>
Training Invoice Number: <XSL:вредност на изберете="gaftraininginvoicenumber"/>
<
BR></BR>
Training Invoice Location: <XSL:вредност на изберете="gaftraininginvoicelocation"/>
</
стр>


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

Мос / InfoPath формуларите Сервер (InfoPath 2007) паѓачката листа перформанси

Дополнителни категорија: InfoPath

Резиме: На InfoPath 2007 формираат распоредени на сервер Мос обезбедува паѓачката листа на продавачите врзани за сопствени Мос листа. По изборот на продавачот, правила додели полето вредности на неколку текст полиња, како што се трговски претставник име, адреса, градот, држава, zip и телефон. Перформанси е грозно. Ќе забележиме дека перформансите се влошува (во не-линеарен начин) за секоја дополнителна поле ние ажурирање на овој начин. Односно, ако ние само се ажурира на трговски претставник име, што е потребно [x] износ на времето. Ако ние ажурирање трговски претставник, address1, address2, градот, држава, zip, што е потребно 10 пати подолго.

Решение: Напиши веб сервис (примерок код може да се најде тука) кој е донесен во името на продавачот и се враќа назад на продавачот детали. Потоа, додели на полиња овој начин. Иако тоа исто така чини бавен, немало видлива разлика во перформанси кога ние доделен 1 поле наспроти 8 полиња. Како дополнителен бонус, users get a cool "contacting the server" Cylon ефект додека тие чекаат за формата да се повика и консумираат услугата резултати.

Мос: Исклучок се случи. (Исклучок од HRESULT: 0x80020009 (DISP_E_EXCEPTION))

Ажурирање: Ние никогаш не се утврди коренот на овој проблем и тоа никогаш површината повторно.

Ќе забележиме за време на спроведувањето на развој сајт дека одеднаш, две корисниците се во можност да имаат пристап до сајт за собирање. Тие сметки може да се идентификувате на главната страница, но кога се обидуваат да пристапите одреден сајт збирка, тие само се добие празен екран. Нема грешки прикажани, само бело празна страница.

Ние се најавите како сајт за собирање админ и да се обидат да го додадете една од оние корисници, како место администраторот и овој пат, upon pressing "OK", ние се добие оваа порака:

Исклучок се случи. (Исклучок од HRESULT: 0x80020009 (DISP_E_EXCEPTION))

Ние поминав некое време проучувајќи ова и за жал, не излезе со нешто корисно. Имаше некои пораки во дијагностички најавите, но тоа е тешко да се точно да ги поврзе со ова прашање.

На крајот, ние бришење на сајт за собирање и тоа повторно креиран и тоа е тоа решено.

Ако јас дознаам што го предизвика ова во иднина, Јас ќе се ажурира овој пост.

Мос: Процесирањето преку сопствени листи и враќање филтрирани податоци за InfoPath

Бизнис сценарио:

Обезбеди метод кој им овозможува на корисниците да влезат точни купување требувањата брзо.

Бизнис проблем:

На клиентот прави бизнис со неколку стотици продавачи.

Vendors are "type" специфични. Ова значи дека продавачот продава компјутерска опрема (e.g. Dell) или канцелариски материјали (e.g. Стејплс).

Како ние да им овозможи на крајните корисници кои создаваат купување требувањата изберете валидна продавач?

Бизнис решенија:

Differentiate vendors in the system via "type".

Enable users to select the "type" на производот, а потоа се обезбеди филтрирана сет на соодветни добавувачи.

Техничко решение:

На InfoPath формулар е дизајниран која им овозможува на корисниците да влезат во онлајн купување требувањата.

Две InfoPath селекција листи за контрола продавач избор. Прва, 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.

Продавачите се чуваат во Мос обичај листа со сопствени колони за продавачот атрибути како што се името, address and especially "type".

Имплементира веб сервис за InfoPath клиентот да консумираат дека iterates преку сопствени продавач листа, returning only vendors matching a supplied "type".

Повика на веб сервис преку InfoPath формулар.

Научени лекции:

  • Прва, се чини неопходно да одат овој пат. Јас би преферирал да го стори филтрирање целосно во рамките InfoPath и не се создаде било кој веб-сервис функционалност овде. Сепак, форми серверот не ги обезбеди потребните филтрирање способност. We can put a rule onto a the "type" избор листа во форма за сортирање на повторно отворање на продавачот пребарување, но не можеме да се добие тоа да работи правилно. Затоа, тоа беше неопходно за спроведување на веб сервис.
  • This is a classic "cascading selection list" проблем во InfoPath формуларите сервер светот и има многу добри примери од таму, кои се објасни како да се реши овој.
  • А празно вредност за колона во продавач на листата не се врати празен стринг, кога референцирани вака: initItem["Vendor Name"]. Наместо, го враќа е нулти.

Некои други белешки:

  • Јас се врати низа[] на продавачите, бидејќи имав некои потешкотии враќање на ArrayList. InfoPath беше жалат за тоа и јас не имаат време или склоност да се борат над неа. Овој, се разбира, става вештачка граница на вкупниот број на продавачи. Таа, исто така ме принуди да се спроведе трим() method on the array because I hate the idea of returning back 100’s of null vendors. InfoPath не се грижи, но тоа гушен во мене. (Повторно, ова беше полесно отколку борат InfoPath над ArrayLists).
  • Јас спроведува GetSpecificVendorByName() функција, како и, која може да биде поучно.

Го кодот:

користење на Систем;
користење на 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.
/// </резиме>
јавноста класа Продавач
{
јавноста Продавач() { }

јавноста Продавач(Плукаат 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();
}

приватни Продавач[] GenerateTestVendors()
{
Продавач[] resultList;
resultList = нови Продавач[100];

Продавач v;
v = нови Продавач();
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 = нови Продавач();

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 = нови Продавач();
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]
јавноста Продавач 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];

Плукаат specificItem = currentList.Items[vendorId];

се врати нови Продавач(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
јавноста Продавач 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 (Плукаат vendorItem во currentList.Items)
{
ако (vendorItem["Vendor Name"] == нула) продолжи;

ако (vendorItem["Vendor Name"].ToString().Еднакво(vendorName))
се врати нови Продавач(vendorItem);
}

Продавач v = нови Продавач();
v.VendorPhone = "not found: " + vendorName;

се врати v;

се врати нула;

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

} // метод

[WebMethod]
јавноста Продавач[] 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();

Продавач[] resultList;
int vendorIndex = 0;
resultList = нови Продавач[1000];

// Initialize the list with a default friendly message.
Продавач v = нови Продавач();
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 (Плукаат vendorItem во currentList.Items)
{

низа lowerVendorType;

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

ако (lowerVendorType.Equals(FilterType))
{
resultList[vendorIndex ] = нови Продавач(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

се врати нула;
}

приватни Продавач[] TrimVendorArray(int newsize, Продавач[] originalVendorArray)
{
Продавач[] trimmedArray;

ако (newsize == 0) newsize = 1;
trimmedArray = нови Продавач[newsize];

int currentCounter = 0;

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

се врати trimmedArray;

}
}