Штомесячны архіў: Жнівень 2007

Спіс Крэйга працуе добра для мяне

Я размясціў аб'яву для продажу майго аўтамабіля ў Берген Каўнці, NJ on Sunday night. I received several inquiries via email shortly thereafter and closed the deal with someone on Tuesday night.

Амаль занадта добра, каб быць праўдай …

MOSS пашыраны пошук налады — Справа сапраўды мае значэнне ў пашыраны пошук XSLT

Я не змяняюць пашыраны пошук XSLT вельмі часта, так што здаецца, што я ўзыходжання невялікія пагоркі кожны раз,.

Мае найноўшыя ўрок заключаецца ў: Справа мае значэнне, калі спасылаецца на слупок. На мой пашыраны пошук, Я слупкі, вызначаныя як гэта:

<корань XMLNS:xsi="HTTP://www.w3.org/2001/XMLSchema-instance">
<
Калоны>
<
Калонка Імя="GafTrainingInvoiceNumber" />
<
Калонка Імя="GafTrainingInvoiceLocation" />
<
Калонка Імя="WorkId"/>
<
Калонка Імя="Ранг"/>
<
Калонка Імя="Назва"/>
<
Калонка Імя="Аўтар"/>
<
Калонка Імя="Памер"/>
<
Калонка Імя="Шлях"/>
<
Калонка Імя="Апісанне"/>
<
Калонка Імя="Запіс"/>
<
Калонка Імя="SiteName"/>
<
Калонка Імя="CollapsingStatus"/>
<
Калонка Імя="HitHighlightedSummary"/>
<
Калонка Імя="HitHighlightedProperties"/>
<
Калонка Імя="Contentclass"/>
<
Калонка Імя="IsDocument"/>
<
Калонка Імя="PictureThumbnailURL"/>
</
Калоны>
</
корань>

XLST, які адлюстроўвае нумар рахункі-фактуры і рахункі-фактуры Размяшчэнне было:

<P>
Training Invoice Number: <XSL:коштам ад выбіраць="GafTrainingInvoiceNumber"/>
<
бр></бр>
Training Invoice Location: <XSL:коштам ад выбіраць="GafTrainingInvoiceLocation"/>
</
P>

Аднак, the select has to reference the property in all lower case, як у:

<P>
Training Invoice Number: <XSL:коштам ад выбіраць="gaftraininginvoicenumber"/>
<
бр></бр>
Training Invoice Location: <XSL:коштам ад выбіраць="gaftraininginvoicelocation"/>
</
P>


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

MOSS: Функцыянальныя Прыклад - карыстацкі тып дадзеных

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

У маштабах усяго прадпрыемства рэалізацыя Мос для вытворчай кампаніі з 30+ сайтаў і некалькі дзясяткаў карпаратыўных аддзелаў.

Бізнес-мэты:

Нягледзячы на ​​мноства бізнес-груп (ведамстваў, месцаў, і г.д.), некаторыя дадзеныя павінны быць захаваны на глабальным узроўні. Напрыклад, майстар аўтарытэтны спіс усіх фізічных офісах кампаніі (e.g. вытворчае абсталяванне, складскіх месцаў, офісаў продажаў) павінна быць захавана ў цэнтры горада.

Тэхнічная праблема:

Прадпрыемства таксанаміі быў рэалізаваны з дапамогай некалькіх сямействаў сайтаў. Нам бы хацелася, каб стварыць аўтарытэтны спіс фізічных месцах у спісе карыстацкіх WSS. Затым, Калі мы павінны былі мець слупок ў тыпе кантэнту (або слупок дадаецца ў спіс або бібліятэку Doc) , Якія ўтрымлівалі карпаратыўных месцах, we would create a column using the "lookup" тыпам дадзеных і паказваць на гэта асноўны спіс.

На жаль, lookup datatypes must access a source list "locally" гэта азначае, што наш аўтарытэтны спіс не можа распаўсюджвацца на сайт калекцый.

Тэхнічнае рашэнне:

Рэалізацыя новага карыстацкага тыпу дадзеных ажыццяўляецца на аснове SPField і прадстаўлены ў выглядзе DropDownList ў карыстацкім інтэрфейсе якога ListItems запаўненне з спісу WSS майстры.

Мы стварылі новы сайт пад назвай калекцыі "http://localhost/EnterpriseData". Там, we created a custom list named "Corporate Locations". This list just uses the standard "Title" поле, якое змяшчае спіс фактычных карпаратыўных месцах.

Адзін наступным некалькіх паслядоўных крокаў, каб стварыць карыстацкі тып дадзеных у WSS. Гэта:

  1. Вызначце клас, які атрымліваецца ў спадчыну ад SPField (можна успадкаваць ад іншых палёў пры неабходнасці).

Вось код для гэтага:

грамадскасць клас XYZZYCorporateLocationField : SPFieldText
{
грамадскасць XYZZYCorporateLocationField
(SPFieldCollection палёў, радок typeName, радок displayName)
: база(палёў, typeName, displayName) { }

грамадскасць XYZZYCorporateLocationField
(SPFieldCollection палёў, радок displayName)
: база(палёў, displayName) { }

грамадскасць адмяняць BaseFieldControl FieldRenderingControl
{
атрымліваць
{
BaseFieldControl control = новы XYZZYCorporateLocationFieldControl();
control.FieldName = гэта.Ўнутранае імя;
вяртанне control;
} //атрымліваць
} // fieldrenderingcontrol

грамадскасць адмяняць радок GetValidatedString(аб'ект значэнне)
{
калі (гэта.Required || value.ToString().Роўна(Радок.Пусты))
{
кідаць новы SPFieldValidationException ("Department is not assigned.");
}
вяртанне база.GetValidatedString(значэнне);
} // getvalidatedstring

} // XYZZYCorporateLocation

  1. Вызначыце іншы клас, які атрымлівае ў спадчыну ад кіраўніка поля базы, як у:

грамадскасць клас XYZZYCorporateLocationFieldControl : BaseFieldControl
{
абаронены DropDownList XYZZYCorporateLocationSelector;

абаронены адмяняць радок DefaultTemplateName
{
атрымліваць
{
вяртанне "XYZZYCorporateLocationFieldControl";
}
} // DefaultTemplateName

грамадскасць адмяняць аб'ект Значэнне
{
атрымліваць
{
EnsureChildControls();
вяртанне гэта.XYZZYCorporateLocationSelector.SelectedValue;
} // атрымліваць
набор
{
EnsureChildControls();
гэта.XYZZYCorporateLocationSelector.SelectedValue = (радок)гэта.ItemFieldValue;
} // набор
} // override object Value

абаронены адмяняць ануляваць CreateChildControls()
{

калі (гэта.Field == нулявы || гэта.ControlMode == SPControlMode.Адлюстроўваць)
вяртанне;

база.CreateChildControls();

гэта.XYZZYCorporateLocationSelector =
(DropDownList)TemplateContainer.FindControl("XYZZYCorporateLocationSelector");

калі (гэта.XYZZYCorporateLocationSelector == нулявы)
кідаць новы Выключэнне("ERROR: Cannot load .ASCX file!");

калі (!гэта.Page.IsPostBack)
{

выкарыстанне (SPSite site = новы SPSite("http://лакальны / enterprisedata"))
{
выкарыстанне (SPWeb web = site.OpenWeb())
{

SPList currentList = web.Lists["Corporate Locations"];

Еогеасп (Пляваць XYZZYCorporateLocation ў currentList.Items)
{
калі (XYZZYCorporateLocation["Title"] == нулявы) працягваць;

радок theTitle;
theTitle = XYZZYCorporateLocation["Title"].ToString();

гэта.XYZZYCorporateLocationSelector.Items.Add
(новы ListItem(theTitle, theTitle));

} // Еогеасп

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

} // if not a postback

} // CreateChildControls

} // XYZZYCorporateLocationFieldControl

Прыведзены вышэй код у асноўным рэалізуе логіку для запаўнення DropDownList значэннямі з карыстацкага спісу WSS размешчаны на http://localhost/enterprisedata and named "Corporate Departments".

Я вызначыў абодвух класаў у адным. Выява CS, скампіляваў яго і паклаў яго ў GAC (моцная неабходных, вядома).

  1. Рэалізацыя пра шаблон элемента кіравання (.ASCX) як паказана на малюнку:

<%@ Кіраванне Мова="C#" Спадчыну="Microsoft.SharePoint.Portal.ServerAdmin.CreateSiteCollectionPanel1,Microsoft.SharePoint.Portal,Version = 12.0.0.0, культура = нейтральнай,PublicKeyToken = 71e9bce111e9429c" CompilationMode="Always" %>
<%
@ Рэестр TagPrefix="wssawc" Прастора імёнаў="Microsoft.SharePoint.WebControls" Зборка="Microsoft.SharePoint, Version = 12.0.0.0, Культура = нейтральнай, PublicKeyToken = 71e9bce111e9429c" %> <%@ Рэестр TagPrefix="SharePoint" Прастора імёнаў="Microsoft.SharePoint.WebControls" Зборка="Microsoft.SharePoint, Version = 12.0.0.0, Культура = нейтральнай, PublicKeyToken = 71e9bce111e9429c" %>
<SharePoint:Шаблон візуалізацыі ID="XYZZYCorporateLocationFieldControl" runat="server">
<Шаблон>
<аспід:DropDownList ID="XYZZYCorporateLocationSelector" runat="server" />
</Шаблон>
</
SharePoint:Шаблон візуалізацыі>

Вышэй захоўваецца ў C:\Program Files Common Files Microsoft Shared пашырэньні вэб-сервера 12 ControlTemplates.

  1. У рэшце рэшт, мы ствараем XML-файла для захавання ў ..... 12 каталога XML. Гэта CAML, які вызначае нашу карыстацкі тып дадзеных і для майго прыкладу, выглядае наступным чынам:

<?XML версія="1.0" кадаваньне="UTF-8" ?>
<
FieldTypes>
<
FieldType>
<
Поле Імя="TypeName">CorporateLocations</Поле>
<
Поле Імя="ParentType">Тэкст</Поле>
<
Поле Імя="TypeDisplayName">Corporate Locations</Поле>
<
Поле Імя="TypeShortDescription">All XYZZY Corporate locations including manufacturing or other facilities.</Поле>
<
Поле Імя="UserCreatable">TRUE,</Поле>
<
Поле Імя="ShowInListCreate">TRUE,</Поле>
<
Поле Імя="ShowInDocumentLibraryCreate">TRUE,</Поле>
<
Поле Імя="ShowInSurveyCreate">TRUE,</Поле>
<
Поле Імя="ShowInColumnTemplateCreate">TRUE,</Поле>
<
Поле Імя="FieldTypeClass">Conchango.XYZZYCorporateLocationField, XYZZYCorporateLocationField, Version = 1.0.0.0, Культура = нейтральнай, PublicKeyToken=b0b19e85410990c4</Поле>
<
RenderPattern Імя="DisplayPattern">
<
Пераключэнне>
<
Expr>
<
Калонка />
</
Expr>

<Выпадак Значэнне=""/>

<Змаўчанне>
<
HTML>
<![CDATA[
<span style="color:Red"><B>]]>
</
HTML>

<
Калонка SubcolumnNumber="0" HTMLEncode="TRUE,"/>

<HTML><![CDATA[</B></пралёт>]]></HTML>

</
Змаўчанне>
</
Пераключэнне>

</
RenderPattern>
</
FieldType>
</
FieldTypes>
This XML file adds the custom data type to the WSS "library" і адпавядае яго супраць GAC'd зборкі.

Пасля пераезду ўсе гэтыя біты на месца, Iisreset на серверы і ўсё павінна пачаць працаваць прыгожа.

WSS: Тэхніка для стварэння CAML вызначэння палёў.

Дадатковыя катэгорыі: CAML

Тут is a great posting by a fellow named "craig" на тэхніку для пошуку CAML вызначэння для тыпаў палёў ўтрымання заснаваныя ад жывога азначэнняў з сайта.

Яго размяшчэнне кажа само за сябе. Сцісла:

  1. Стварыць тып кантэнту.
  2. Звязаць яго са спісам.
  3. Адкрыйце спіс SharePoint Designer.
  4. Export to a "personal web package".
  5. Перайменаваць. Кабіны.
  6. Выманне маніфест.
  7. Знайсці тып кантэнту і звязаныя з імі CAML.

WSS: Асноўная дзеянні, каб уключыць карысныя функцыі / элементы / і г.д.. Intellisense ў VS 2005

Дадатковыя катэгорыі: Visual Studio 2005

Каб уключыць карысныя IntelliSense для характарыстыкі, элементы, і г.д. у асяроддзі Visual Studio 2005:

  1. Доступ да WSS сервер.
  2. Navigate to "c:\Program Files Common Files Microsoft Shared пашырэньні вэб-сервера 12 TEMPLATE XML"
  3. Адкрыйце іншы правадыр Windows, які паказвае на: "C:\Program Files Microsoft Visual Studio 8 XML Схемы"
  4. Скапіюйце наступныя файлы з WSS сервер у VS 2005 схемы каталога:
    1. Wss.xsd
    2. CamlQuery.xsd
    3. CamlView.xsd
    4. CoreDefintions.xsd
  5. Перазагрузка VS 2005
  6. Дадаць новы XML-файл у праект.
  7. Націсніце ў целе XML файла.
  8. У панэлі уласцівасцяў, click on "Schemas" and pick "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 Тэд Паттисон & Daniel Larson. Гэтая кніга ахоплівае амаль усе прадметы, што тэст адрасы. Я выявіў, што ён быў выдатным сама па сабе за рамкі простага падрыхтоўкі іспыту. Ён дае вялікія прыклады і сапраўды прымусіла мяне задумацца пра некаторых новых і цікавых рэчаў, каб паспрабаваць. Калі вы жадаеце прапусціць некалькі бітаў у кнізе, толькі крыжаваныя спасылкі зместа кнігі з дэталямі ў спасылцы зверху.
  3. Нішто не можа параўнацца фактычныя практычны вопыт. Калі ў вас ёсць час і цікавасць, прытрымлівацца разам з прыкладамі ў кнізе, а затым эксперыментаваць з імі. Вы будзеце мець больш лёгкае час, на экзамене, а таксама сапраўды даведацца WSS прыкладнога праграмавання.

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

MOSS / InfoPath Forms Server (InfoPath 2007) У расчыняецца спісе прадукцыйнасці

Дадатковыя катэгорыі: InfoPath

Рэзюмэ: InfoPath 2007 ўтвараюць разгорнуты на сэрвэры MOSS дае расчыняецца спіс пастаўшчыкоў звязаныя з карыстацкага спісу MOSS. Пры выбары пастаўшчыка, правілы прысвойваюць значэнні палёў да жменькі тэкставыя палі, такія як імя гандлёвага прадстаўніка, адрас, горад, дзяржава, ZIP і тэлефоны. Прадукцыйнасць жудасна. Заўважым, што прадукцыйнасць пагаршаецца (ў нелінейна) для кожнага дадатковага поля мы абнаўляем гэты шлях. Гэта значыць, калі мы проста абнавіць імя гандлёвага прадстаўніка, ён прымае [X] колькасць часу. Калі пасля абнаўлення гандлёвы прадстаўнік, address1, address2, горад, дзяржава, зашпілька-маланка, ён прымае 10 раз даўжэй.

Рашэнне: Напісаць вэб-сэрвіс (Прыклад кода можна знайсці тут) , Якая перадаецца ў імя пастаўшчыка і яна вяртаецца назад пастаўшчыку больш падрабязна. Затым, Назначце поля такім чынам. Хоць гэта таксама здаецца павольным, не было ніякай прыкметнай розніцы ў прадукцыйнасці, калі мы прызначылі 1 поля ад 8 палёў. У якасці дадатковага бонуса, users get a cool "contacting the server" Сайланы Эфект пакуль яны чакаюць, каб выклікаць форму і выкарыстоўваць службу вынікаў.

MOSS: Выключэнне адбылося. (Выключэнне з HRESULT: 0x80020009 (DISP_E_EXCEPTION))

АБНАЎЛЕННЕ: Мы ніколі не вызначылі прычыну гэтай праблемы, і яно ніколі не з'яўляецца зноў.

Мы заўважаем, у ходзе рэалізацыі распрацоўкі сайта, які раптоўна, два карыстальнікі не могуць атрымаць доступ да сайта калекцыю. Гэтыя рахункі могуць праходзіць праверку сапраўднасці на асноўны сайт, але пры спробе доступу да пэўнай калекцыі сайта, яны проста атрымліваю пусты экран. Няма памылак адлюстроўваюцца, проста белы пустой старонкі.

Мы увайсці ў сістэму як Адміністратар сямейства сайтаў і паспрабуйце дадаць адно з тых карыстальнікаў, адміністратара сайта і на гэты раз, upon pressing "OK", Мы атрымалі гэта паведамленне:

Выключэнне адбылося. (Выключэнне з HRESULT: 0x80020009 (DISP_E_EXCEPTION))

Мы правялі некаторы час на вывучэнне гэтага і, на жаль, не прыдумалі нічога карыснага. Былі некаторыя паведамленні ў часопіс дыягностыкі, але гэта было цяжка дакладна суаднесці іх з гэтым пытаннем.

У рэшце рэшт, Мы выдаленне сямейства сайтаў і стварыць нанова, і што вырашыць яе.

Калі б я высветліць, што выклікала гэта ў будучыні, Я буду абнаўляць гэты пост.