Я размясціў аб'яву для продажу майго аўтамабіля ў Берген Каўнці, NJ on Sunday night. I received several inquiries via email shortly thereafter and closed the deal with someone on Tuesday night.
Амаль занадта добра, каб быць праўдай …
Я размясціў аб'яву для продажу майго аўтамабіля ў Берген Каўнці, NJ on Sunday night. I received several inquiries via email shortly thereafter and closed the deal with someone on Tuesday night.
Амаль занадта добра, каб быць праўдай …
Я не змяняюць пашыраны пошук 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.
Бізнес-сцэнар:
У маштабах усяго прадпрыемства рэалізацыя Мос для вытворчай кампаніі з 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. Гэта:
Вось код для гэтага:
грамадскасць клас 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
грамадскасць клас 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 (моцная неабходных, вядома).
<%@ Кіраванне Мова="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.
<?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 на серверы і ўсё павінна пачаць працаваць прыгожа.
Дадатковыя катэгорыі: CAML
Тут is a great posting by a fellow named "craig" на тэхніку для пошуку CAML вызначэння для тыпаў палёў ўтрымання заснаваныя ад жывога азначэнняў з сайта.
Яго размяшчэнне кажа само за сябе. Сцісла:
Дадатковыя катэгорыі: Visual Studio 2005
Каб уключыць карысныя IntelliSense для характарыстыкі, элементы, і г.д. у асяроддзі Visual Studio 2005:
Intellisense цяпер уваходзіць для гэтага дакумента XML.
Паглядзець тут для атрымання дадатковай інфармацыі па гэтым пытанні, а таксама інструкцый пра тое, як аўтаматычна асацыяваць WSS IntelliSense з любой XML файл.
Я ўзяў і прайшоў вышэй тэст сёння раніцай. Я выявіў, што іспыт, каб быць цяжкім і справядлівымі.
Існуе адносны недахоп інфармацыі па гэтым экзамена ў Інтэрнэце. Я не ўпэўнены, чаму.
Я, відавочна, не буду ўдавацца ў якія-небудзь падрабязнасці аб экзамене я ўзяў, але я думаю, я магу з упэўненасцю сказаць наступнае:
Ён пералічвае, што вам трэба ведаць, каб здаць экзамен, і гэта, ИМО, вельмі дакладна.
</канец>Падпісацца на мой блог!
Дадатковыя катэгорыі: InfoPath
Рэзюмэ: InfoPath 2007 ўтвараюць разгорнуты на сэрвэры MOSS дае расчыняецца спіс пастаўшчыкоў звязаныя з карыстацкага спісу MOSS. Пры выбары пастаўшчыка, правілы прысвойваюць значэнні палёў да жменькі тэкставыя палі, такія як імя гандлёвага прадстаўніка, адрас, горад, дзяржава, ZIP і тэлефоны. Прадукцыйнасць жудасна. Заўважым, што прадукцыйнасць пагаршаецца (ў нелінейна) для кожнага дадатковага поля мы абнаўляем гэты шлях. Гэта значыць, калі мы проста абнавіць імя гандлёвага прадстаўніка, ён прымае [X] колькасць часу. Калі пасля абнаўлення гандлёвы прадстаўнік, address1, address2, горад, дзяржава, зашпілька-маланка, ён прымае 10 раз даўжэй.
Рашэнне: Напісаць вэб-сэрвіс (Прыклад кода можна знайсці тут) , Якая перадаецца ў імя пастаўшчыка і яна вяртаецца назад пастаўшчыку больш падрабязна. Затым, Назначце поля такім чынам. Хоць гэта таксама здаецца павольным, не было ніякай прыкметнай розніцы ў прадукцыйнасці, калі мы прызначылі 1 поля ад 8 палёў. У якасці дадатковага бонуса, users get a cool "contacting the server" Сайланы Эфект пакуль яны чакаюць, каб выклікаць форму і выкарыстоўваць службу вынікаў.
АБНАЎЛЕННЕ: Мы ніколі не вызначылі прычыну гэтай праблемы, і яно ніколі не з'яўляецца зноў.
Мы заўважаем, у ходзе рэалізацыі распрацоўкі сайта, які раптоўна, два карыстальнікі не могуць атрымаць доступ да сайта калекцыю. Гэтыя рахункі могуць праходзіць праверку сапраўднасці на асноўны сайт, але пры спробе доступу да пэўнай калекцыі сайта, яны проста атрымліваю пусты экран. Няма памылак адлюстроўваюцца, проста белы пустой старонкі.
Мы увайсці ў сістэму як Адміністратар сямейства сайтаў і паспрабуйце дадаць адно з тых карыстальнікаў, адміністратара сайта і на гэты раз, upon pressing "OK", Мы атрымалі гэта паведамленне:
Выключэнне адбылося. (Выключэнне з HRESULT: 0x80020009 (DISP_E_EXCEPTION))
Мы правялі некаторы час на вывучэнне гэтага і, на жаль, не прыдумалі нічога карыснага. Былі некаторыя паведамленні ў часопіс дыягностыкі, але гэта было цяжка дакладна суаднесці іх з гэтым пытаннем.
У рэшце рэшт, Мы выдаленне сямейства сайтаў і стварыць нанова, і што вырашыць яе.
Калі б я высветліць, што выклікала гэта ў будучыні, Я буду абнаўляць гэты пост.