Аз афиш на обяви за продажба на колата си в Берген Каунти, Ню Джърси в неделя вечерта. Получих няколко запитвания по електронната поща скоро след това и приключи сделка с някой във вторник вечер.
Твърде добро, за да е истина …
Аз афиш на обяви за продажба на колата си в Берген Каунти, Ню Джърси в неделя вечерта. Получих няколко запитвания по електронната поща скоро след това и приключи сделка с някой във вторник вечер.
Твърде добро, за да е истина …
Не променя Разширено търсене 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. Те са:
Тук е кодът за тази:
обществени клас XYZZYCorporateLocationField : SPFieldText
{
обществени XYZZYCorporateLocationField
(SPFieldCollection полета, низ typeName, низ Показвано име)
: база(полета, typeName, Показвано име) { }
обществени XYZZYCorporateLocationField
(SPFieldCollection полета, низ Показвано име)
: база(полета, Показвано име) { }
обществени замени BaseFieldControl FieldRenderingControl
{
Вземи
{
BaseFieldControl контрол = нов XYZZYCorporateLocationFieldControl();
контрол. FieldName = Това.InternalName;
връщане контрол;
} //Вземи
} // fieldrenderingcontrol
обществени замени низ GetValidatedString(обект стойност)
{
Ако (Това.Изисква || стойност. ToString().Е равно(Низ.Празен))
{
хвърлят нов SPFieldValidationException ("Отдел не е присвоен.");
}
връщане база.GetValidatedString(стойност);
} // getvalidatedstring
} // XYZZYCorporateLocation
обществени клас 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 (силна изисква, Разбира се).
<%@ Контрол Език= "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.
<?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 на сървъра и че всички трябва да започнете добре работи.
Допълнителна категория: CAML
Тук е голям стълб от един човек на име "Крейг" на техника за намиране CAML дефиниции за поле типове съдържание, базирани извън истински живи определения от сайт.
Командироването му казва всичко. Накратко:
Допълнителни категории: Visual Studio 2005
За да разрешите полезни intellisense за функции, елементи, и т.н. в visual studio 2005:
IntelliSense е активиран за този XML документ.
Вижте Тук за повече информация по този въпрос и за инструкции за това как да автоматично да свързва WSS intellisense с XML файл.
Взех и преминали споменати по-горе тест тази сутрин. Намерих изпит, за да бъде трудно и честно.
Има относителен недостиг на информация за този изпит в интернет. Аз не съм сигурен защо.
Аз очевидно няма да влязат в никакви подробности за изпит, взех, но аз мисля, че спокойно мога да кажа следното:
Той показва, какво трябва да знаете да премине изпита и това е, ММО, много точна.
</край>Абонирайте се за моя блог!
Допълнителна категория: InfoPath
Резюме: InfoPath 2007 форма, разположени на Мос сървър предоставя капка-голо възвишение списък на доставчици, обвързани с мъх списък по избор. При избора на доставчик, правила присвоите стойности на полета на няколко текстови полета като име на отч., адрес, град, държава, ZIP и телефон. Изпълнението е ужасно. Ние забележите, че производителността се влошава (в нелинейни мода) за всяко допълнително поле ще се актуализира този начин. Т.е., Ако ние просто ще актуализира името на отч., отнема [x] период от време. Ако ние актуализира отч., информационните и комуникационни технологии1, Адрес2, град, държава, ZIP, отнема 10 пъти по-дълго.
Разтвор: Напишете уеб услуга (примерен код може да се намери Тук) която се предава в името на доставчика и се връща обратно детайли за доставчик. След това, Присвояване на полетата по този начин. Въпреки че това изглежда твърде бавно, не е никакъв забележим разлика в производителността, когато ние възложени 1 поле срещу 8 полета. Като допълнителен бонус, Потребителите получават готино "връзка със сървъра" Силоните ефект, докато чакат за формуляра, за да се позове и потребяват услугата резултати.
АКТУАЛИЗИРАНЕ: Ние никога не определя отново основната причина за този проблем и тя никога повърхност.
Ние Забележете че изведнъж по време на изпълнението на сайт на развитие, двама потребители не могат да имат достъп до колекция със сайтове. Тези сметки да удостовери към основния сайт, но когато се опитва да получи достъп до сайт колекция, те просто да празен екран. Няма грешки показана, просто бял празна страница.
Ние Влезте като администратор на колекцията сайтове и се опитате да добавите един от тези потребители като администратор на сайта и този път, при натискане на "OK", Ние се това съобщение:
Възникна изключение. (Изключение от HRESULT: 0x 80020009 (DISP_E_EXCEPTION))
Ние прекарва известно време, това изследване и за съжаление, не излезе с всичко полезно. Имаше някои съобщения в регистрационния файл на диагностика, но това е трудно да ги съпоставят точно с този проблем.
В края, Ние изтриването на колекцията със сайтове и отново го и че решават я.
Ако аз разбера какво това причинени в бъдеще, Ще актуализирам този пост.