месечни архиви: Август 2007

Списък Крейг работи добре за мен

Аз афиш на обяви за продажба на колата си в Берген Каунти, Ню Джърси в неделя вечерта. Получих няколко запитвания по електронната поща скоро след това и приключи сделка с някой във вторник вечер.

Твърде добро, за да е истина …

Мос Разширено персонализиране Търсене — Случай е от значение в Разширено търсене 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>


Докато аз коригира, че, резултати от търсенето, показа на етикетите (т.е.. "Обучение фактура номер") но без данни.

МОС: Функционални пример-потребителски тип данни

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

Предприятието изпълнението на Мос за производствена компания с 30+ сайтове и няколко десетки корпоративни отдели.

Бизнес цел:

Въпреки множество бизнес групи (отдели, места, н), някои данни трябва да се поддържа в световен мащаб. За пример, авторитетен главен списък на всички физически места на компанията (e.g. производствените мощности, складови местоположения, офиси за продажба) трябва да се поддържа на централно място.

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

В класификацията на предприятието е било изпълнено с помощта на няколко колекции от сайтове. Бихме искали да се създаде достоверен списък на физически места в WSS списък по избор. След това, когато ние трябва да има колона в типа съдържание (или колона добавя към списък или документ библиотека) които съдържат корпоративни места, Ние ще създадете колона с помощта на справката"" тип данни и точка за този главен списък.

За съжаление, Търсене типове данни трябва да имат достъп до източник списък "локално" което означава, че нашите достоверен списък не може да заема колекции от сайтове.

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

Прилага нов потребителски тип данни прилагат въз основа на SPField и представени като DropDownList в UI, чиито ListItems пренесат от главния списък на WSS.

Ние създадохме нова колекция от сайтове се нарича "http://localhost/EnterpriseData". Там, Ние създадохме списък по избор, наречена "Корпоративни места". Този списък само използва стандартната "заглавие" поле да съдържа списък на действителните корпоративни места.

Една следва няколко дискретни стъпки, за да създадете потребителски тип данни в WSS. Те са:

  1. Дефиниране на клас, който наследява от SPField (един може да наследи от други полета, ако е необходимо).

Тук е кодът за тази:

обществени клас XYZZYCorporateLocationField : SPFieldText
{
обществени XYZZYCorporateLocationField
(SPFieldCollection полета, низ typeName, низ Показвано име)
: база(полета, typeName, Показвано име) { }

обществени XYZZYCorporateLocationField
(SPFieldCollection полета, низ Показвано име)
: база(полета, Показвано име) { }

обществени замени BaseFieldControl FieldRenderingControl
{
Вземи
{
BaseFieldControl контрол = нов XYZZYCorporateLocationFieldControl();
контрол. FieldName = Това.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 уеб = сайт. OpenWeb())
{

Splist.Update() currentList = web. Списъци["Корпоративни места"];

foreach (SPItem XYZZYCorporateLocation в currentList.Items)
{
Ако (XYZZYCorporateLocation["Заглавие"] == Null) «««;

низ theTitle;
theTitle = XYZZYCorporateLocation["Заглавие"].ToString();

Това.XYZZYCorporateLocationSelector.Items.Add
(нов Елемент от списък(theTitle, theTitle));

} // foreach

} // използване на spweb web = site.openweb()
} // използвайки spsite сайт = нови spsite("http://Localhost/enterprisedata")

} // Ако не обратното публикуване

} // CreateChildControls

} // XYZZYCorporateLocationFieldControl

По-горе код основно изпълнява на логиката за попълване на списъка със стойности от 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" Namespace="Microsoft.SharePoint.WebControls" Събрание="Microsoft.SharePoint, Версия = 12.0.0.0, Култура = неутрална, PublicKeyToken = 71e9bce111e9429c" %> <%@ Регистрирайте се Tagprefix= "SharePoint" Namespace="Microsoft.SharePoint.WebControls" Събрание="Microsoft.SharePoint, Версия = 12.0.0.0, Култура = неутрална, PublicKeyToken = 71e9bce111e9429c" %>
<SharePoint:Шаблона за рендиране ИД= "XYZZYCorporateLocationFieldControl" RunAt= "сървър">
<Шаблон>
<ASP:DropDownList ИД= "XYZZYCorporateLocationSelector" RunAt= "сървър" />
</Шаблон>
</
SharePoint:Шаблона за рендиране>

По-горе се записва в c:\Програмата filescommon filesmicrosoft споделениуеб сървър extensions12controltemplates.

  1. Най-накрая, Ние създаване на XML файл да запишете в... 12XML директория. Това е CAML, който определя нашите потребителски тип данни и за моя пример, изглежда така:

<?XML версия="1.0" кодиране="UTF-8" ?>
<
Полета FieldTypes>
<
FieldType>
<
Поле Име="TypeName">CorporateLocations</Поле>
<
Поле Име="ParentType">Текст</Поле>
<
Поле Име="TypeDisplayName">Корпоративни места</Поле>
<
Поле Име="TypeShortDescription">Всички корпоративни XYZZY места, включително производствена или други съоръжения.</Поле>
<
Поле Име="UserCreatable">ВЯРНО</Поле>
<
Поле Име="ShowInListCreate">ВЯРНО</Поле>
<
Поле Име="ShowInDocumentLibraryCreate">ВЯРНО</Поле>
<
Поле Име="ShowInSurveyCreate">ВЯРНО</Поле>
<
Поле Име="ShowInColumnTemplateCreate">ВЯРНО</Поле>
<
Поле Име="FieldTypeClass">Conchango.XYZZYCorporateLocationField, XYZZYCorporateLocationField, Версия = 1.0.0.0, Култура = неутрална, PublicKeyToken = b0b19e85410990c4</Поле>
<
RenderPattern Име="DisplayPattern">
<
Превключване>
<
Израз>
<
Колона />
</
Израз>

<Дело Стойност=""/>

<По подразбиране>
<
HTML>
<![НЕЗАТВОРЕН[
<педя стил = "цвят:Червен"><б>]]>
</
HTML>

<
Колона SubColumnNumber="0" HTMLEncode="ВЯРНО"/>

<HTML><![НЕЗАТВОРЕН[</б></еталониране>]]></HTML>

</
По подразбиране>
</
Превключване>

</
RenderPattern>
</
FieldType>
</
Полета FieldTypes>
Този XML файл добавя потребителски тип данни за вик "Библиотека" и го мачове срещу GAC имаше събрание.

След преместването на всички тези битове на място, iisreset на сървъра и че всички трябва да започнете добре работи.

WSS: Техника за създаване на CAML поле дефиниции.

Допълнителна категория: CAML

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

Командироването му казва всичко. Накратко:

  1. Създаване на тип съдържание.
  2. Го асоциирате със списък.
  3. Отваряне на списъка с SharePoint Designer.
  4. Експортиране в "лични уеб пакет".
  5. Преименуване на .cab.
  6. Извличане на манифеста.
  7. Намерете своя тип съдържание и свързаните с тях CAML.

WSS: Обобщени стъпки, за да разрешите полезни функции/елементи/и т.н.. IntelliSense срещу 2005

Допълнителни категории: Visual Studio 2005

За да разрешите полезни intellisense за функции, елементи, и т.н. в visual studio 2005:

  1. Достъп на WSS сървър.
  2. Навигирайте до "c:\Програмата filescommon filesmicrosoft споделениуеб сървър extensions12TEMPLATEXML"
  3. Отворете друг windows explorer, сочещи към: "C:\Програма FilesMicrosoft 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 от Тед Pattison & Даниел Ларсон. Тази книга обхваща почти всички теми, който се справя с теста. Намерих го да бъде велик и в себе си отвъд прост изпит подготве. Тя дава много примери и наистина ли ме мислиш за някои нови и интересни неща да опитате. Ако искате да пропуснете няколко бита в книгата, просто кръстосани препратки на книгата съдържанието с елементите във връзката отгоре.
  3. Нищо удара реалните практически опит. Ако имате време и интерес, Следвайте заедно с примерите в книгата и след това експериментира с тях. Вие ще имате по-лесен път на изпита, както и наистина да научат WSS прилагане програмиране.

</край>Абонирайте се за моя блог!

МОС / Сървър за формулярите на InfoPath (InfoPath 2007) падащ списък производителност

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

Резюме: InfoPath 2007 форма, разположени на Мос сървър предоставя капка-голо възвишение списък на доставчици, обвързани с мъх списък по избор. При избора на доставчик, правила присвоите стойности на полета на няколко текстови полета като име на отч., адрес, град, държава, ZIP и телефон. Изпълнението е ужасно. Ние забележите, че производителността се влошава (в нелинейни мода) за всяко допълнително поле ще се актуализира този начин. Т.е., Ако ние просто ще актуализира името на отч., отнема [x] период от време. Ако ние актуализира отч., информационните и комуникационни технологии1, Адрес2, град, държава, ZIP, отнема 10 пъти по-дълго.

Разтвор: Напишете уеб услуга (примерен код може да се намери Тук) която се предава в името на доставчика и се връща обратно детайли за доставчик. След това, Присвояване на полетата по този начин. Въпреки че това изглежда твърде бавно, не е никакъв забележим разлика в производителността, когато ние възложени 1 поле срещу 8 полета. Като допълнителен бонус, Потребителите получават готино "връзка със сървъра" Силоните ефект, докато чакат за формуляра, за да се позове и потребяват услугата резултати.

МОС: Възникна изключение. (Изключение от HRESULT: 0x 80020009 (DISP_E_EXCEPTION))

АКТУАЛИЗИРАНЕ: Ние никога не определя отново основната причина за този проблем и тя никога повърхност.

Ние Забележете че изведнъж по време на изпълнението на сайт на развитие, двама потребители не могат да имат достъп до колекция със сайтове. Тези сметки да удостовери към основния сайт, но когато се опитва да получи достъп до сайт колекция, те просто да празен екран. Няма грешки показана, просто бял празна страница.

Ние Влезте като администратор на колекцията сайтове и се опитате да добавите един от тези потребители като администратор на сайта и този път, при натискане на "OK", Ние се това съобщение:

Възникна изключение. (Изключение от HRESULT: 0x 80020009 (DISP_E_EXCEPTION))

Ние прекарва известно време, това изследване и за съжаление, не излезе с всичко полезно. Имаше някои съобщения в регистрационния файл на диагностика, но това е трудно да ги съпоставят точно с този проблем.

В края, Ние изтриването на колекцията със сайтове и отново го и че решават я.

Ако аз разбера какво това причинени в бъдеще, Ще актуализирам този пост.