SŪNA: Funkcionālās piemēram-pielāgotu datu tipu

Biznesa scenāriju:

Uzņēmuma mēroga ieviešanu ražošanas uzņēmums ar MOSS 30+ vietnes un pāris desmiti uzņēmumu struktūrvienību.

Biznesa mērķi:

Neskatoties uz virkni biznesa grupas (departamenti, atrašanās vietas, uc), daži dati ir jāsaglabā globālā līmenī. Piemēram, autoritatīvs pamatsarakstā visas fiziskās atrašanās vietas uzņēmuma (piem.. ražošanas iekārtas, noliktavu atrašanās vietas, pārdošanas biroji) jāsaglabā vienā centrālā atrašanās vietā.

Tehniska problēma:

Uzņēmuma taksonomijas tika īstenota, izmantojot vairākas vietņu kolekcijas. Mēs vēlētos, lai pielāgotu WSS sarakstu izveidot autoritatīvu fizisko atrašanās vietu sarakstu. Pēc tam, kad mums vajadzēja būt kolonnu satura tipu (vai kolonnas pievienot sarakstam vai doc bibliotēka) kas ietverts uzņēmuma atrašanās vietas, mēs radītu izmantojot "uzmeklēšanas kolonnu" datu tipu un norādiet uz šo šablonu saraksts.

Diemžēl, uzmeklēšanas datatypes drīkst piekļūt avota saraksta "lokāli" nozīmē, ka mūsu autoritatīvo sarakstu nevar aptvert vietņu kolekcijas.

Tehniskais risinājums:

Ieviest jaunu pielāgotu datu tipu īsteno, pamatojoties uz SPField un attēlots kā DropDownList UI, kura ListItems aizpildīt no WSS pamatsarakstā.

Mēs esam izveidojuši jaunu vietņu kolekciju sauc par "http://localhost/EnterpriseData". Tur, mēs esam izveidojuši tādu pielāgotu sarakstu ar nosaukumu "Uzņēmuma atrašanās vietas". Šo sarakstu izmanto tikai standarta "Title" lauks satur faktisko uzņēmuma atrašanās vietu sarakstu.

Viena šāda vairāku diskrētu soļus, lai izveidotu pielāgotu datu tipu komponentā Windows SharePoint Palkalpojumi. Tie ir:

  1. Definētu klases, kas manto no SPField (viens var mantot no citiem laukiem vajadzības).

Šeit ir kods, kas:

valsts klase XYZZYCorporateLocationField : SPFieldText
{
valsts XYZZYCorporateLocationField
(SPFieldCollection lauki, virkne typeName, virkne displayName)
: Base(lauki, typeName, displayName) { }

valsts XYZZYCorporateLocationField
(SPFieldCollection lauki, virkne displayName)
: Base(lauki, displayName) { }

valsts ignorēt BaseFieldControl FieldRenderingControl
{
iegūt
{
BaseFieldControl kontrole = jaunā XYZZYCorporateLocationFieldControl();
kontroli. FieldName = tas.InternalName;
atgriešanās kontrole;
} //iegūt
} // fieldrenderingcontrol

valsts ignorēt virkne GetValidatedString(objekta vērtība)
{
Ja (tas.Nepieciešama || vērtību. ToString().Ir vienāds ar(Virkne.Tukšs))
{
mest jaunā SPFieldValidationException ("Departaments nav piešķirts.");
}
atgriešanās Base.GetValidatedString(vērtība);
} // getvalidatedstring

} // XYZZYCorporateLocation

  1. Noteikt citas klases, kas manto no bāzes lauka vadīklu, kā:

valsts klase XYZZYCorporateLocationFieldControl : BaseFieldControl
{
aizsargāti DropDownList XYZZYCorporateLocationSelector;

aizsargāti ignorēt virkne DefaultTemplateName
{
iegūt
{
atgriešanās "XYZZYCorporateLocationFieldControl";
}
} // DefaultTemplateName

valsts ignorēt objekta Vērtība
{
iegūt
{
EnsureChildControls();
atgriešanās tas.XYZZYCorporateLocationSelector.SelectedValue;
} // iegūt
kopā
{
EnsureChildControls();
tas.XYZZYCorporateLocationSelector.SelectedValue = (virkne)tas.ItemFieldValue;
} // kopā
} // objekta vērtība ignorē

aizsargāti ignorēt anulēts CreateChildControls()
{

Ja (tas.Laukā = = nulle || tas.ControlMode = = SPControlMode.Displeja)
atgriešanās;

Base.CreateChildControls();

tas.XYZZYCorporateLocationSelector =
(DropDownList)TemplateContainer.FindControl("XYZZYCorporateLocationSelector");

Ja (tas.XYZZYCorporateLocationSelector = = nulle)
mest jaunā Izņēmums("KĻŪDA: Nevar ielādēt. ASCX failā!");

Ja (!tas.IsPostBack lapu.)
{

izmantojot (SPSite vieta = jaunā SPSite("http://localhost/enterprisedata"))
{
izmantojot (SPWeb Web vietas =. OpenWeb())
{

SPList currentList = interneta. Saraksti["Uzņēmuma atrašanās vietas"];

foreach (SPItem XYZZYCorporateLocation programmā currentList.Items)
{
Ja (XYZZYCorporateLocation["Title"] == nulle) «««;

virkne parādīts Title;
parādīts Title = XYZZYCorporateLocation["Title"].ToString();

tas.XYZZYCorporateLocationSelector.Items.Add
(jaunā ListItem(parādīts Title, parādīts Title));

} // foreach

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

} // Ja ne atpakaļizlikšanas

} // CreateChildControls

} // XYZZYCorporateLocationFieldControl

Iepriekš kods būtībā ievieš loģika populating DropDownList ar vērtībām no WSS pielāgotu sarakstu, kas atrodas http://localhost/enterprisedata un nosaukta "uzņēmuma struktūrvienības".

Es noteikti abās klasēs vienu. CS failā, apkopo to un ielieciet to GAC (vajadzīgs spēcīgs, protams).

  1. Ieviest vadības veidni (.ascx) kā parādīts:

<%@ Kontrole Valodas= "C#" Pārmanto="Microsoft.SharePoint.Portal.ServerAdmin.CreateSiteCollectionPanel1,Microsoft.SharePoint.Portal,Versija = 12.0.0.0 kultūras = neitrāla,PublicKeyToken = 71e9bce111e9429c" compilationMode= "Vienmēr" %>
<%
@ Reģistrēties Tagprefix= "wssawc" Namespace="Microsoft.SharePoint.WebControls" Asambleja="Microsoft.SharePoint, Versija = 12.0.0.0, Kultūras = neitrāla, PublicKeyToken = 71e9bce111e9429c" %> <%@ Reģistrēties Tagprefix= "SharePoint" Namespace="Microsoft.SharePoint.WebControls" Asambleja="Microsoft.SharePoint, Versija = 12.0.0.0, Kultūras = neitrāla, PublicKeyToken = 71e9bce111e9429c" %>
<SharePoint:RenderingTemplate ID= "XYZZYCorporateLocationFieldControl" runat= "serveris">
<Veidne:>
<ASP:DropDownList ID= "XYZZYCorporateLocationSelector" runat= "servera" />
</Veidne:>
</
SharePoint:RenderingTemplate>

Iepriekš tiek saglabāts c:\Program filescommon filesmicrosoft sharedweb server extensions12controltemplates.

  1. Beidzot, mums jāizveido XML fails ietaupīt vērā... 12XML katalogs. Tas ir CAML, kas nosaka mūsu pielāgotu datu tipu un mans piemērs, izskatās šādi:

<?XML versija="1.0" kodējums="UTF-8" ?>
<
FieldTypes>
<
FieldType>
<
Lauks vārds="TypeName">CorporateLocations</Lauks>
<
Lauks vārds="ParentType">Teksts</Lauks>
<
Lauks vārds="TypeDisplayName">Uzņēmuma atrašanās vietas</Lauks>
<
Lauks vārds="TypeShortDescription">Visas XYZZY uzņēmumu atrašanās vietas, tai skaitā ražošanas vai citām iekārtām.</Lauks>
<
Lauks vārds="UserCreatable">PATIESS</Lauks>
<
Lauks vārds="ShowInListCreate">PATIESS</Lauks>
<
Lauks vārds="ShowInDocumentLibraryCreate">PATIESS</Lauks>
<
Lauks vārds="ShowInSurveyCreate">PATIESS</Lauks>
<
Lauks vārds="ShowInColumnTemplateCreate">PATIESS</Lauks>
<
Lauks vārds="FieldTypeClass">Conchango.XYZZYCorporateLocationField, XYZZYCorporateLocationField, Versija = diapazonā no 1.0.0.0, Kultūras = neitrāla, PublicKeyToken = b0b19e85410990c4</Lauks>
<
RenderPattern vārds="DisplayPattern">
<
Slēdzis>
<
Izteiksme>
<
Kolonnu />
</
Izteiksme>

<Gadījumā Vērtība=""/>

<Noklusējuma>
<
HTML>
<![CDATA[
<span style = "krāsa:Red"><b>]]>
</
HTML>

<
Kolonnu SubColumnNumber="0" HTMLEncode="PATIESS"/>

<HTML><![CDATA[</b></laiduma>]]></HTML>

</
Noklusējuma>
</
Slēdzis>

</
RenderPattern>
</
FieldType>
</
FieldTypes>
Šajā XML failā pievieno pielāgotu datu tipu WSS "bibliotēka" un vai tas atbilst pret GAC bija montāža.

Pēc šiem biti nonākšanu vieta, iisreset no servera, un tas būtu visas sākuma strādā labi.

3 domas par "SŪNA: Funkcionālās piemēram-pielāgotu datu tipu

  1. Alejandro
    Hi Paul,
    vispirms, Paldies par rakstu, jo tas ir ļoti interesants. Tikai viens jautājums;
    Vai jūs zināt, ja tas ir posible padarīt pareizi pielāgoto lauku tipu sarakstu datu lapas skatā?
    Jo katru pielāgoto lauku tipu, izveidot to datu lapas skatā tiek parādīta kā tikai lasāma (un MSDN, piemēram, man ļoti daudz nepalīdz :-S).
    paldies
    Atbilde
  2. Lyndsay

    I am mēģina ieviest savu risinājumu. Tomēr es nevis DropDownList, Man ir tikai opcija, DropDownChoiceList. Pamanât, jāzina, kā pievienot vienumus DropDownChoiceList? Mēs izmantojot SharePoint 2007 SP1 un Visual Studio 2005 SP1.

    Atbilde

atstāt atbildi

Jūsu e-pasta adrese netiks publicēta. Obligātie lauki ir atzīmēti *