Category Archives: ЛИШАЙНИК

ЛИШАЙНИК, розширений пошук налаштування — Випадку має значення в розширений пошук XSLT

Я не зміню розширений пошук XSLT дуже часто, тому здається, що я сходження невеликі пагорби щоразу.

Моя новітня урок полягає в наступному: Випадку має значення, коли посилання на стовпець. У моєму розширений пошук, У мене є стовпці, визначені як це:

<корінь xmlns:XSi="http://www.w3.org/2001/XMLSchema-Instance">
<
Стовпці>
<
Стовпець Ім’я="GafTrainingInvoiceNumber" />
<
Стовпець Ім’я="GafTrainingInvoiceLocation" />
<
Стовпець Ім’я="Ідентифікатор завдання"/>
<
Стовпець Ім’я="Ранг"/>
<
Стовпець Ім’я="Назва"/>
<
Стовпець Ім’я="Автор"/>
<
Стовпець Ім’я="Розмір"/>
<
Стовпець Ім’я="Шлях"/>
<
Стовпець Ім’я="Опис"/>
<
Стовпець Ім’я="Писати"/>
<
Стовпець Ім’я="Ім'я сайту"/>
<
Стовпець Ім’я="CollapsingStatus"/>
<
Стовпець Ім’я="HitHighlightedSummary"/>
<
Стовпець Ім’я="HitHighlightedProperties"/>
<
Стовпець Ім’я="ContentClass"/>
<
Стовпець Ім’я="IsDocument"/>
<
Стовпець Ім’я="PictureThumbnailURL"/>
</
Стовпці>
</
корінь>

Було XLST, який показує розташування номера та рахунку-фактури рахунка-фактури:

<p>
Навчання номер рахунку-фактури: <перетворення XSL:значення з Виберіть="GafTrainingInvoiceNumber"/>
<
br></br>
Навчання розташування рахунка-фактури: <перетворення XSL:значення з Виберіть="GafTrainingInvoiceLocation"/>
</
p>

Однак, Виберіть має посилання на властивість у всіх нижній регістр, як і в:

<p>
Навчання номер рахунку-фактури: <перетворення XSL:значення з Виберіть="gaftraininginvoicenumber"/>
<
br></br>
Навчання розташування рахунка-фактури: <перетворення XSL:значення з Виберіть="gaftraininginvoicelocation"/>
</
p>


Поки я виправлена, що, результати пошуку показав етикетки (тобто. «Номер рахунку-фактури навчання») але немає даних.

ЛИШАЙНИК / InfoPath формах серверу (InfoPath 2007) розкривний список продуктивності

Додаткові категорії: InfoPath

Резюме: В InfoPath 2007 форми, розгорнуті на сервері, ЛИШАЙНИК забезпечує розкривний список постачальників, зв'язали за настроюваним списком МОСС. При виборі продавця, правила призначити значення полів кілька текстових полів, таких як продаж респ ім'я, адреса, місто, держава, ZIP і phone. Продуктивність є потрапило. Ми помітили, що погіршується продуктивність (в нелінійній моди) для кожного додаткового поля ми оновлюємо таким чином. Тобто, Якщо ми просто оновити ім'я торгових представників, Він приймає [x] кількість часу. Якщо ми оновлюємо торгових представників, address1, address2, місто, держава, ZIP, Він приймає 10 разів довше.

Рішення: Написати веб-служби (зразок коду можна знайти Тут) що передається в ім'я постачальника і повертається назад постачальників деталей. Потім, призначити поля таким чином. Хоча це здається занадто повільний, не було ніякої помітною різниці в продуктивності, коли ми призначені 1 поле проти 8 поля. В якості додаткового бонусу, користувачі отримують прохолодно "зв'язатися з сервером" Сайлони ефект, доки вони чекають для форми посилатися і споживати результатами послуг.

ЛИШАЙНИК: Стався виняток. (Виключення з HRESULT: 0x 80020009 (DISP_E_EXCEPTION))

ОНОВЛЕННЯ: Ми ніколи не визначено причиною цієї проблеми, і він ніколи не поверхні знову.

Ми помічаємо, що раптом під час виконання розробки сайту, два користувачі не в змозі отримати доступ до колекції сайтів. Ці облікові записи можуть автентифікувати головний сайт, але при спробі отримати доступ до певного сайту колекції, вони просто отримати порожній екран. Без помилок, відображається, всього білий пусту сторінку.

Ми увійти в систему як адміністратор сайту колекції і спробувати додати один з тих користувачів, як адміністратор сайту і на цей раз, після натискання "ОК", Ми отримуємо це повідомлення:

Стався виняток. (Виключення з HRESULT: 0x 80020009 (DISP_E_EXCEPTION))

Ми провели деякий час дослідження це і, на жаль, не придумати щось корисне. Там були деякі повідомлення у журналі діагностичні, але це було важко точно співвіднести їх з цього питання.

Врешті-решт, Ми видалення колекції сайтів та заново створити його і що вирішили.

Якщо мені зрозуміти, що причиною цього в майбутньому, Я буду оновлювати цей пост.

ЛИШАЙНИК: Ітерації через настроювані списки і повернення відфільтрованих даних в InfoPath

Бізнес-сценарій:

Забезпечити метод, який дозволяє користувачам швидко ввести точні покупки заявки.

Бізнес-завдання:

Клієнт веде свій бізнес з декількох сотень постачальників.

Продавці є "тип" конкретні. Це означає, що продавця продає комп'ютерного обладнання (Наприклад. Dell) або канцелярське приладдя (Наприклад. Скоби).

Як ми дозволити кінцевих користувачів, які створюють покупки заявки виберіть припустимий постачальника?

Бізнес-рішення:

Диференціювати постачальників системи за допомогою "тип".

Надати користувачам можливість вибрати тип"" продукту і потім забезпечити відфільтрований набір відповідних постачальників.

Технічні рішення:

Форми InfoPath був розроблений, що дозволяє користувачам вводити онлайн придбати заявки.

Два списки вибору InfoPath контролювати вибір постачальника. Перший, користувач вибирає "покупку типу". Це обмежує другий список вибору має містити лише постачальників, що продають для цього типу покупки. Це класичний каскадні спадне меню.

Постачальники зберігаються в MOSS настроюваним списком з користувацькі стовпці для постачальника атрибути, такі як ім'я, адреса і особливо "тип".

Реалізувати веб-служби, InfoPath клієнта до споживання, що повторюється через списку користувацьких постачальників, повернення лише постачальників відповідності поставляються "тип".

Виклику веб-служби за допомогою форм InfoPath.

Вивчені уроки:

  • Перший, здається, треба піти цей маршрут. Я волів би зробити фільтрації повністю в InfoPath, і не створювати будь-які web послуги функціональність тут. Однак, форми сервер не надає необхідні можливості фільтрації. Ми можемо покласти правило на на типу"" список вибору у формі до роду повторно відкрийте запит постачальника, але ми не можемо змусити його працювати належним чином. Тому, Це було необхідно реалізувати веб-служби.
  • Це класичний "каскадні вибір список" проблема в InfoPath форми сервер світ і є багато добрих прикладів там, що пояснюють, як вирішити цю проблему.
  • Пусте значення для стовпця у списку постачальників не повертає порожній рядок, коли посилання як це: initItem[«Ім'я постачальника"]. Замість цього, Вона повертає null.

Деякі інші примітки:

  • Я повертають масив[] постачальників, тому що я мав деякі труднощі повернення до список ArrayList. Він скаржився InfoPath і у мене не було часу або бажання боротися над ним. Це, Звичайно, ставить штучних обмежень на загальну кількість постачальників. Він також змусили мене реалізувати з обробкою() метод на масив, тому що я ненавиджу ідеєю Повертаючись назад 100 null постачальників. InfoPath не піклується, але його гризла на мене. (Знову, Це було легше, ніж боротися InfoPath над ArrayLists).
  • Я реалізовані на GetSpecificVendorByName() функції, а також, які можуть бути повчально.

Код:

за допомогою Система;
за допомогою System. Web;
за допомогою System.Web.Services;
за допомогою System.Web.Services.Protocols;
за допомогою Microsoft.SharePoint;
за допомогою System.Configuration;

/// <резюме>
///
Постачальником послуг: Забезпечує постачальника пов'язані послуги, який сьогодні споживається форми infopath клієнта.
///
/// Історія:
/// ——–
/// 07/24/07: Початковий кодування, Paul J. Гевін Conchango.
///
/// </резюме>
[Веб-служба(Простір імен = "http://www.conchango.com/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
громадських клас VendorService : System.Web.Services.Веб-служба
{

/// <резюме>
/// Представляє постачальника зі списку користувацьких sharepoint підтримується MSUSA.
/// </резюме>
громадських клас Постачальника
{
громадських Постачальника() { }

громадських Постачальника(SPItem initItem)
{
Якщо (! (initItem[«Ім'я постачальника"] == Null)) VendorName = initItem[«Ім'я постачальника"].ToString();
Якщо (! (initItem["Адреса 1"] == Null)) VendorAddress1 = initItem["Адреса 1"].ToString();
Якщо (! (initItem["Адреса 2"] == Null)) VendorAddress2 = initItem["Адреса 2"].ToString();
Якщо (! (initItem["Місто"] == Null)) VendorCity = initItem["Місто"].ToString();
Якщо (! (initItem["VendorPhone"] == Null)) VendorPhone = initItem["VendorPhone"].ToString();
Якщо (! (initItem["PurchaseType"] == Null)) VendorType = initItem["PurchaseType"].ToString();
Якщо (! (initItem[«Держава"] == Null)) VendorState = initItem[«Держава"].ToString();
Якщо (! (initItem["Zip"] == Null)) VendorZip = initItem["Zip"].ToString();
Якщо (!(initItem[«Факс"] == Null)) VendorFax = initItem[«Факс"].ToString();
Якщо (!(initItem["SalesRepName"] == Null)) VendorSalesRepName = initItem["SalesRepName"].ToString();

VendorItemId = initItem.ID; // Унікальний Ідентифікатор підтримується через МОСС.
}

громадських Int VendorItemId;
громадських рядок VendorName;
громадських рядок VendorAddress1;
громадських рядок VendorAddress2;
громадських рядок VendorCity;
громадських рядок VendorState;
громадських рядок VendorZip;
громадських рядок VendorPhone;
громадських рядок VendorType;
громадських рядок VendorSalesRepName;
громадських рядок VendorFax;
}

громадських VendorService () {

//Розкоментуйте наступний рядок, якщо за допомогою розроблений компонентів
//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 даних ідентифікатора)
{
рядок SpVendorSiteName; // Ім'я фактичні МОХОМ сайту, на якому настроюваного списку постачальників.
рядок SpVendorListName; // Ім'я фактичні МОХОМ список, який містить постачальників.

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

за допомогою (SPSite сайт = нові SPSite(SpVendorSiteName))
{

за допомогою (SPWeb Web = сайт. OpenWeb())
{

SPList currentList = web. Списки[SpVendorListName];

SPItem specificItem = currentList.Items[даних ідентифікатора];

повернення нові Постачальника(specificItem);

} // за допомогою spweb веб = site.openweb()
} // за допомогою spsite сайту = новий spsite("http://Localhost/mizuho")

}

[WebMethod]
// Припускає, що ім'я постачальника є унікальним, з точки зору бізнесу
громадських Постачальника GetSpecificVendorByVendorName(рядок бути)
{
рядок SpVendorSiteName; // Ім'я фактичні МОХОМ сайту, на якому настроюваного списку постачальників.
рядок SpVendorListName; // Ім'я фактичні МОХОМ список, який містить постачальників.

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

за допомогою (SPSite сайт = нові SPSite(SpVendorSiteName))
{
за допомогою (SPWeb Web = сайт. OpenWeb())
{

SPList currentList = web. Списки[SpVendorListName];

foreach (SPItem vendorItem у currentList.Items)
{
Якщо (vendorItem[«Ім'я постачальника"] == Null) Продовжити;

Якщо (vendorItem[«Ім'я постачальника"].ToString().Дорівнює(бути))
повернення нові Постачальника(vendorItem);
}

Постачальника v = нові Постачальника();
v.VendorPhone = "не знайдено: " + бути;

повернення v;

повернення Null;

} // за допомогою spweb веб = site.openweb()
} // за допомогою spsite сайту = новий spsite("http://Localhost/mizuho")

} // метод

[WebMethod]
громадських Постачальника[] GetVendorsOfType (рядок filterType)
{

рядок SpVendorSiteName; // Ім'я фактичні МОХОМ сайту, на якому t
Він настроюваного списку постачальників.
рядок SpVendorListName; // Ім'я фактичні МОХОМ список, який містить постачальників.

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

Постачальника[] resultList;
Int vendorIndex = 0;
resultList = нові Постачальника[1000];

// Ініціалізація списку з дружнім повідомлення за промовчанням.
Постачальника v = нові Постачальника();
v.VendorName = "Виберіть тип постачальника для заповнення цього списку.";
resultList[0] = v;

// Конвертувати фільтра в нижній регістр для легше порівняння рядків пізніше.
filterType = filterType.ToLower();

// Якщо він буде прийнятий тип фільтра є "випробування", створити деякі прості дані.
#регіон Тип фільтру = "випробування"
Якщо (Дорівнює filterType.("тест"))
повернення GenerateTestVendors();
#endregion

Якщо (Істина)
{
за допомогою (SPSite сайт = нові SPSite(SpVendorSiteName))
{
за допомогою (SPWeb Web = сайт. OpenWeb())
{

v = Null;

SPList currentList = web. Списки[SpVendorListName];

// Перебирати всі елементи, у списку постачальників.
foreach (SPItem vendorItem у currentList.Items)
{

рядок lowerVendorType;

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

Якщо (Дорівнює lowerVendorType.(filterType))
{
resultList[vendorIndex ] = нові Постачальника(vendorItem);
}
} // ітерації thru всіх продавців у списку


повернення TrimVendorArray(vendorIndex, resultList);
// повернення resultList;

} // за допомогою spweb веб = site.openweb()
} // за допомогою spsite сайту = новий spsite("http://Localhost/mizuho")

} // Якщо це правда

повернення Null;
}

приватні Постачальника[] TrimVendorArray(Int newsize, Постачальника[] originalVendorArray)
{
Постачальника[] trimmedArray;

Якщо (newsize = = 0) newsize = 1;
trimmedArray = нові Постачальника[newsize];

Int currentCounter = 0;

для (currentCounter = 0; currentCounter < newsize; currentCounter )
{
trimmedArray[currentCounter] = originalVendorArray[currentCounter];
}

повернення trimmedArray;

}
}