Категория Архивы: МОСС

Мосс дополнительная настройка поиска — Дело имеет значение в расширенном поиске XSLT

Я не очень часто изменить расширенный поиск XSLT, так что похоже я восхождение малые холмы каждый раз.

Мои новейшие урок заключается в следующем: Тематические вопросы, при ссылке на столбец. В моем расширенный поиск, У меня есть столбцы, определенные как это:

<корень xmlns:xsi="HTTP://www.w3.org/2001/XMLSchema-instance">
<
Колонки>
<
Колонка Имя="GafTrainingInvoiceNumber" />
<
Колонка Имя="GafTrainingInvoiceLocation" />
<
Колонка Имя="WorkId"/>
<
Колонка Имя="Ранг"/>
<
Колонка Имя="Название"/>
<
Колонка Имя="Автор"/>
<
Колонка Имя="Размер"/>
<
Колонка Имя="Путь"/>
<
Колонка Имя="Описание"/>
<
Колонка Имя="Написать"/>
<
Колонка Имя="Имя_узла"/>
<
Колонка Имя="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 формы, развернутого на сервере MOSS предоставляет раскрывающийся список поставщиков, привязаны к списку пользовательских Мосс. При выборе поставщика, правила назначить значения полей несколько текстовых полей, таких как имя продаж, адрес, город, государство, ZIP и phone. Производительность это ужасно. Мы замечаем, что производительность ухудшается (в нелинейных моды) для каждого дополнительного поля мы обновление таким образом. Т.е., Если мы просто обновить имя продаж, Он принимает [x] количество времени. Если мы обновление продаж, Адрес1, Адрес2, город, государство, Индекс, Он принимает 10 раз дольше.

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

МОСС: Произошло исключение. (Исключение из HRESULT: 0x 80020009 (DISP_E_EXCEPTION))

ОБНОВЛЕНИЕ: Мы никогда не определили основную причину этой проблемы, и он никогда не поверхности снова.

Мы заметили в ходе осуществления развития сайта, что внезапно, два пользователя не могут получать доступ к коллекции узлов. Эти счета могут проходить проверку подлинности на основной сайт, Однако при попытке доступа к определенного семейства сайтов, они просто получаю пустой экран. Ошибки не отображаются, Белая пустая страница.

Войдите в систему как администратор семейства сайтов и попробуйте добавить один из этих пользователей как администратор сайта и на этот раз, После нажатия «ОК», Мы получаем это сообщение:

Произошло исключение. (Исключение из HRESULT: 0x 80020009 (DISP_E_EXCEPTION))

Мы провели некоторое время исследовать это и, к сожалению, не придумать что-нибудь полезное. Там были некоторые сообщения в журнале диагностики, но это было трудно точно соотносить их с этим вопросом.

В конце концов, Мы Удаление семейства сайтов и заново ее и что решить ее.

Если я выяснить, что это вызвало в будущем, Я буду обновлять этот пост.

МОСС: Итерации пользовательских списков и возвращения отфильтрованных данных в InfoPath

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

Предоставляет метод, который позволяет пользователям быстро вводить точное покупку заявок.

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

Клиент делает бизнес с нескольких сотен поставщиков.

Поставщики являются "тип" конкретные. Это означает, что продавец продает компьютерного оборудования (Например. Dell) или офисные принадлежности (Например. Скобы).

Каким образом мы позволить конечным пользователям, создающим покупки заявки выберите действительный поставщика?

Бизнес-решение:

Дифференцировать поставщиков в системе через «тип».

Разрешить пользователям выбирать тип"" продукта, а затем укажите отфильтрованного набора соответствующих поставщиков.

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

Была разработана форма InfoPath позволяет пользователям вводить онлайн купить заявок.

Два списка выбора InfoPath контролировать выбор подрядчика. Первый, пользователь выбирает «тип покупки». Это ограничивает второй список выбора содержит только тех поставщиков, которые продают для данного типа покупки. Это классический Каскадный раскрывающийся список.

Поставщики, хранятся в пользовательский список Мосс с пользовательские столбцы для поставщиков таких атрибутов, как имя, адрес и особенно «тип».

Реализация веб-службы для клиента InfoPath потреблять, перебор списка пользовательских поставщиков, возвращение только поставщиков, сопоставление предоставленного «тип».

Вызов веб-службы через формы InfoPath.

Уроки:

  • Первый, представляется необходимым идти по этому пути. Я хотела бы сделать фильтрацию целиком в InfoPath и не создает каких-либо веб-службу функциональностью здесь. Однако, сервер форм не обеспечивает необходимые возможности фильтрации. Мы можем поместить правило на "типа" список выбора в форме своего рода возобновлять поставщик запроса, но мы не можем получить его для правильной работы. Поэтому, Это было необходимо для реализации веб-службы.
  • Это классический «каскадного списка выбора" проблема в InfoPath формирует сервер мира и хорошим примеров множество, там, где описано для решения этой проблемы.
  • Пустое значение для столбца в списке поставщиков не возвращает пустую строку при обращении как этот: initItem[«Имя поставщика"]. Вместо этого, Возвращает значение null.

Некоторые другие заметки:

  • Я возвращать массив[] поставщиков, потому что я имел некоторые трудности возвращения ArrayList. InfoPath жалобами об этом и у меня не было времени или желания бороться за его. Это, Конечно, накладывает искусственные ограничения на общее количество поставщиков. Он также вынудила меня осуществить отделкой() метод в массиве, потому что я ненавижу идею возвращения обратно 100 null поставщиков. InfoPath не заботится, но это nagged на меня. (Снова, Это было проще, чем борьба с InfoPath над ArrayLists).
  • Я реализовал GetSpecificVendorByName() функция также, который может быть поучительным.

Код:

использование Система;
использование System.Web;
использование System.Web.Services;
использование System.Web.Services.Protocols;
использование Microsoft.SharePoint;
использование System.Configuration;

/// <Резюме>
///
Поставщик услуг: Предоставляет связанных поставщиков услуг, которые сегодня потребляются клиента формы infopath.
///
/// История:
/// ——–
/// 07/24/07: Первоначальное кодирование, Paul J. Гэвин Conchango.
///
/// </Резюме>
[WebService(Пространство имен = «http://www.Conchango.com/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
государственные класс VendorService : System.Web.Services.WebService
{

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

государственные Поставщик(SPItem initItem)
{
Если (! (initItem[«Имя поставщика"] == значение NULL)) Вендор = 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;
государственные Строка Вендор;
государственные Строка 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 vendorId)
{
Строка SpVendorSiteName; // Имя фактического Мосс сайта, на котором размещается список пользовательских поставщиков.
Строка SpVendorListName; // Имя фактического списка Мосс, содержащий поставщиков.

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

использование (SPSite сайта = Новые функции SPSite(SpVendorSiteName))
{

использование (SPWeb веб сайт =. OpenWeb())
{

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

SPItem specificItem = currentList.Items[vendorId];

возвращение Новые функции Поставщик(specificItem);

} // с помощью веб-spweb = site.openweb()
} // используя сайт spsite = новые spsite(«http://localhost/Мидзухо")

}

[WebMethod]
// Предполагается, что имя поставщика является уникальным, с точки зрения бизнеса
государственные Поставщик GetSpecificVendorByVendorName(Строка Имя_вендора)
{
Строка SpVendorSiteName; // Имя фактического Мосс сайта, на котором размещается список пользовательских поставщиков.
Строка SpVendorListName; // Имя фактического списка Мосс, содержащий поставщиков.

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

использование (SPSite сайта = Новые функции SPSite(SpVendorSiteName))
{
использование (SPWeb веб сайт =. OpenWeb())
{

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

по каждому элементу (SPItem vendorItem в currentList.Items)
{
Если (vendorItem[«Имя поставщика"] == значение NULL) продолжить;

Если (vendorItem[«Имя поставщика"].ToString().Равно(Имя_вендора))
возвращение Новые функции Поставщик(vendorItem);
}

Поставщик v = Новые функции Поставщик();
v.VendorPhone = «не найден: " + Имя_вендора;

возвращение v;

возвращение значение NULL;

} // с помощью веб-spweb = site.openweb()
} // используя сайт spsite = новые spsite(«http://localhost/Мидзухо")

} // метод

[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 Equals.("тест"))
возвращение GenerateTestVendors();
#endregion

Если (Истина)
{
использование (SPSite сайта = Новые функции SPSite(SpVendorSiteName))
{
использование (SPWeb веб сайт =. OpenWeb())
{

v = значение NULL;

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

// Перебор всех элементов в списке поставщиков.
по каждому элементу (SPItem vendorItem в currentList.Items)
{

Строка lowerVendorType;

lowerVendorType = vendorItem["PurchaseType"].ToString().Метод ToLower();
lowerVendorType = lowerVendorType.Substring(3);

Если (Равен lowerVendorType.(filterType))
{
resultList[vendorIndex ] = Новые функции Поставщик(vendorItem);
}
} // итерация через все поставщиков в списке


возвращение TrimVendorArray(vendorIndex, resultList);
// возвращение resultList;

} // с помощью веб-spweb = site.openweb()
} // используя сайт spsite = новые spsite(«http://localhost/Мидзухо")

} // Если true

возвращение значение 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;

}
}