Щомісячні архіви: Сер 2007

Список Крейга працювали добре для мене

Я розмістив оголошення для продажу мого автомобіля в Bergen county, Нью-Джерсі в ніч на неділю. Я отримав декілька запитів по електронній пошті незабаром після цього і закрила операцію з кимось у вівторок увечері.

Майже занадто добре, щоб бути правдою …

ЛИШАЙНИК, розширений пошук налаштування — Випадку має значення в розширений пошук 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>


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

ЛИШАЙНИК: Функціональних прикладів-настроюваний тип даних

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

Впровадження корпоративної лишайника для виробництва компанії з 30+ сайти і кількох десятків корпоративних відділів.

Мета бізнес:

Незважаючи на безліч бізнес-групи (відділи, розташування, д), певних даних повинна підтримуватися на глобальному рівні. Наприклад, авторитетний головний список всіх фізичного місця розташування компанії (Наприклад. виробничі потужності, склад розташувань, офіси продажів) повинні бути розташовані в центрі міста.

Технічні проблеми:

Таксономія підприємство було реалізовано за допомогою кількох колекцій сайтів. Хотілося б створити авторитетний перелік фізичного місця розташування в настроюваного списку WSS. Потім, коли нам потрібні є стовпець у типом вмісту (або стовпець додано до списку або doc бібліотека) які містяться корпоративних розташувань, Ми б створити стовпець, за допомогою "підстановки" тип даних і точки до цього шаблону списку.

На жаль, типи даних підстановки потрібно зайти "локально вихідним список" Це означає, що наші авторитетний список не може охоплювати колекцій сайтів.

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

Реалізувати новий тип настроювані дані реалізована на основі SPField і представлено у вигляді DropDownList в інтерфейсі користувача, чия ListItems заповнити з зведеного списку WSS.

Ми створили нові колекції сайтів, називається "http://localhost/EnterpriseData". Там, Ми створили за настроюваним списком, названий "Корпоративні місцях". Цей список просто використовує стандартні "титул" поле має містити список фактичні корпоративних місць.

Одна йде кілька дискретних кроки, щоб створити містить настроюваний тип даних у WSS. Вони є:

  1. Визначити клас, який успадковує від SPField (один може успадковувати від інших полів, якщо це вимагається).

Ось код для цього:

громадських клас XYZZYCorporateLocationField : SPFieldText
{
громадських XYZZYCorporateLocationField
(SPFieldCollection поля, рядок параметр typeName, рядок displayName)
: база(поля, параметр typeName, displayName) { }

громадських XYZZYCorporateLocationField
(SPFieldCollection поля, рядок displayName)
: база(поля, displayName) { }

громадських перевизначення BaseFieldControl FieldRenderingControl
{
отримати
{
BaseFieldControl керування = нові XYZZYCorporateLocationFieldControl();
керування. Ім'я поля = Це.InternalName;
повернення керування;
} //отримати
} // fieldrenderingcontrol

громадських перевизначення рядок GetValidatedString(об'єкт значення)
{
Якщо (Це.Необхідні || значення. ToString().Дорівнює(Рядок.Порожній))
{
кинути нові SPFieldValidationException ("Департамент не призначено.");
}
повернення база.GetValidatedString(значення);
} // getvalidatedstring

} // XYZZYCorporateLocation

  1. Визначити іншого класу, яка успадковує з-під контролю базовому полі, як і в:

громадських клас XYZZYCorporateLocationFieldControl : BaseFieldControl
{
захищений DropDownList XYZZYCorporateLocationSelector;

захищений перевизначення рядок DefaultTemplateName
{
отримати
{
повернення "XYZZYCorporateLocationFieldControl";
}
} // DefaultTemplateName

громадських перевизначення об'єкт Значення
{
отримати
{
EnsureChildControls();
повернення Це.XYZZYCorporateLocationSelector. SelectedValue;
} // отримати
набір
{
EnsureChildControls();
Це.XYZZYCorporateLocationSelector.SelectedValue = (рядок)Це.ItemFieldValue;
} // набір
} // перевизначити значення об'єкта

захищений перевизначення недійсними CreateChildControls()
{

Якщо (Це.Поле = = Null || Це.ControlMode = = SPControlMode.Дисплей)
повернення;

база.CreateChildControls();

Це.XYZZYCorporateLocationSelector =
(DropDownList)TemplateContainer. FindControl("XYZZYCorporateLocationSelector");

Якщо (Це.XYZZYCorporateLocationSelector = = Null)
кинути нові Виняток("ПОМИЛКА: Не вдалося завантажити. ASCX файл!");

Якщо (!Це.IsPostBack сторінки.)
{

за допомогою (SPSite сайт = нові SPSite("http://Localhost/enterprisedata"))
{
за допомогою (SPWeb Web = сайт. OpenWeb())
{

SPList currentList = web. Списки["Корпоративні місцях"];

foreach (SPItem XYZZYCorporateLocation у currentList.Items)
{
Якщо (XYZZYCorporateLocation["Назва"] == Null) Продовжити;

рядок theTitle;
theTitle = XYZZYCorporateLocation["Назва"].ToString();

Це.XYZZYCorporateLocationSelector.Items.Add
(нові Елемент списку(theTitle, theTitle));

} // foreach

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

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

} // CreateChildControls

} // XYZZYCorporateLocationFieldControl

Наведений вище код в основному реалізовує логіку для заповнення DropDownList з значень від WSS настроюваним списком, розташованих на http://localhost/enterprisedata і іменовані «корпоративних відділів".

Я визначив обом класам. CS одного файлу, складений його і поклав його в GAC (сильні необхідні, Звичайно).

  1. Здійснення контролю шаблону (.ascx) як показано:

<%@ Керування Мова= "C#" Успадковує="Microsoft.SharePoint.Portal.ServerAdmin.CreateSiteCollectionPanel1,Microsoft.SharePoint.Portal,Версія = 12.0.0.0, культура = нейтральні,PublicKeyToken = 71e9bce111e9429c" compilationMode= "Завжди" %>
<%
@ Зареєструватися Tagprefix= "wssawc" Простір імен="Microsoft.SharePoint.WebControls" Асамблея="Microsoft.SharePoint, Версія = 12.0.0.0, Культура = нейтральні, PublicKeyToken = 71e9bce111e9429c" %> <%@ Зареєструватися Tagprefix= "SharePoint" Простір імен="Microsoft.SharePoint.WebControls" Асамблея="Microsoft.SharePoint, Версія = 12.0.0.0, Культура = нейтральні, PublicKeyToken = 71e9bce111e9429c" %>
<SharePoint:RenderingTemplate ID= "XYZZYCorporateLocationFieldControl" runat= "сервер">
<Шаблон>
<ASP:DropDownList ID= "XYZZYCorporateLocationSelector" runat= "сервер" />
</Шаблон>
</
SharePoint:RenderingTemplate>

Вище зберігається в с:\Програма filescommon відомості sharedweb сервер extensions12controltemplates.

  1. Нарешті, Ми створити XML-файл для збереження в на... 12XML каталог. Це CAML, який визначає наші настроюваним типом даних і для мого прикладу, має такий вигляд::

<?XML версія="1.0" кодування="UTF-8" ?>
<
FieldTypes>
<
FieldType>
<
Поле Ім’я="Параметр TypeName">CorporateLocations</Поле>
<
Поле Ім’я="Батьківський тип">Текст</Поле>
<
Поле Ім’я="TypeDisplayName">Корпоративні розташувань</Поле>
<
Поле Ім’я="TypeShortDescription">Всі корпоративні XYZZY місцях включаючи виробником або інших об'єктів.</Поле>
<
Поле Ім’я="UserCreatable">ПРАВДА</Поле>
<
Поле Ім’я="ShowInListCreate">ПРАВДА</Поле>
<
Поле Ім’я="ShowInDocumentLibraryCreate">ПРАВДА</Поле>
<
Поле Ім’я="ShowInSurveyCreate">ПРАВДА</Поле>
<
Поле Ім’я="ShowInColumnTemplateCreate">ПРАВДА</Поле>
<
Поле Ім’я="FieldTypeClass">Conchango.XYZZYCorporateLocationField, XYZZYCorporateLocationField, Версія = 1.0.0.0, Культура = нейтральні, PublicKeyToken = b0b19e85410990c4</Поле>
<
RenderPattern Ім’я="DisplayPattern">
<
Перемикач>
<
Аргумент вираз>
<
Стовпець />
</
Аргумент вираз>

<Випадок Значення=""/>

<За промовчанням>
<
HTML>
<![CDATA[
<охоплюють стиль = "колір:Червоний"><b>]]>
</
HTML>

<
Стовпець SubColumnNumber="0" HTMLEncode="ПРАВДА"/>

<HTML><![CDATA[</b></Тривалість>]]></HTML>

</
За промовчанням>
</
Перемикач>

</
RenderPattern>
</
FieldType>
</
FieldTypes>
Цей XML-файл додає за настроюваним типом даних WSS "бібліотека" і його матчі проти GAC мав Асамблеї.

Після переміщення всіх цих бітів на місце, iisreset на сервері і він має всі приступити до роботи красиво.

WSS: Техніка створення CAML поле визначень.

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

Тут є великий проводки хлопець, названий "Крейг" про техніку для знаходження CAML визначень для типів вмісту поля засновані від реальній живій визначень із сайту.

Його проводки говорить сама за. Коротко:

  1. Створити тип вмісту.
  2. Він асоціюється зі списком.
  3. Відкрийте список з SharePoint Designer.
  4. Експорт до "персональний веб-пакет".
  5. Перейменувати на .cab.
  6. Витягти маніфест.
  7. Знайти типу вмісту та пов'язаних CAML.

WSS: Підсумкові дії, щоб увімкнути корисні функції/елементи/etc. Служба IntelliSense в с. 2005

Додаткові категорії: Приєднуйтесь до нас 2005

Щоб увімкнути корисні intellisense для функції, елементи, д в visual studio 2005:

  1. Доступ до сервера WSS.
  2. Перейдіть до «с:\Програма filescommon відомості sharedweb сервер extensions12TEMPLATEXML"
  3. Відкрийте інший провідник windows, вказуючи на: "C:\Відомості програми Visual Studio 8XmlSchemas"
  4. Скопіювати такі файли з сервера WSS на ваш проти 2005 Реєстр схем:
    1. WSS.xsd
    2. CamlQuery.xsd
    3. CamlView.xsd
    4. CoreDefintions.xsd
  5. Перезавантаження с. 2005
  6. Додати нові XML-файлу до проекту.
  7. Клацніть тіло XML-файлу.
  8. У вікні "Властивості", натисніть на "схеми" і вибрати "wss.xsd" з вибору. (Не варто вибрати інші xsd, так як вони є посилання з wss.xsd).

Служба IntelliSense на сайті задіяно можливість для цього XML-документ.

Див. Тут для отримання додаткової інформації з цього питання і для отримання інструкцій про те, щоб автоматично зв'язати WSS intellisense з будь-якої XML-файлу.

WSS іспит 70-541, Microsoft Windows SharePoint Services 3.0 – Розробка додатків

Я взяв і перерахованих вище тест сьогодні вранці. Я знайшов іспит складними і ярмарок.

Існує відносно браком інформації на цей іспит в Інтернеті. Я не знаю чому.

Я, очевидно, не буду в будь-яку деталь про іспит, я взяв, але я думаю, що можу сміливо сказати наступне:

  1. Довіряти цим посиланням: http://www.microsoft.com/learning/exams/70-541.mspx.

    Це списки, що вам потрібно знати, щоб пройти іспит і це, ІМО, дуже точні.

  2. Посилання також рекомендує Всередині Microsoft Windows SharePoint Services 3.0 оглянуто Тед Паттісон & Даніель Ларсон. Ця книга охоплює майже всі предмети, що тест адрес. Я знайшов його великий самі по собі за рамки простого іспит prep. Він надає більше прикладів і дійсно змусила мене задуматися про кілька нових і цікавих способів. Якщо ви хочете, щоб пропустити кілька бітів у книзі, просто перехресні посилання у книзі змісту з елементами в посилання зверху.
  3. Ніщо не може зрівнятися реальний практичний досвід. Якщо у вас є час і інтерес, виконувати дії, зазначені в книзі приклади й потім Поекспериментуйте з ними. Ви будете мати легше іспит також дійсно навчитися WSS прикладним програмуванням.

</кінець>Підписатися на мій блог!

ЛИШАЙНИК / 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))

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

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

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