BAB PANYÒL: Fonctionnelles egzanp-tip Personnalisé done

Biznis Scénario:

Enterprise laj aplikasyon de bab PANYÒL pou konpayi manifakti ak 30+ pozisyon ak kèk douzèn lis entreprise.

Objèktif biznis:

Malgre yon multitude de gwoup biznis yo (lis, kote yo ye, ets), done konnen se ta dwe rete nan yon nivo mondyal. Pa ekzanp, yon mèt lis autorité de tout kote fizik yo nan konpayi an (par. fasilite manifakti yo, depo kote yo ye, kliyan ki pou vann nan biwo) ta dwe rete nan yon sant kote yo ye.

Pwoblèm teknik:

La classification antrepwiz te aplike itilize miltip koleksyon yo kote ki gen. Nou ta renmen pou kreye lis la faisant fizik kote yo ye nan yon lis personnalisé WSS. apre, Lè nou bezwen pou gen yon kolòn nan yon jan de contenu (ou yon kolòn te ajoute pou yon lis ou doktè bibliyotèk) ki genyen entreprise kote yo ye, nou pwal kreye yon kolòn itilize la "recherche" datatype Et pwen pou mèt lis sa a.

Malerezman, recherche datatypes dwe jwenn yon sous lis "lokalman" ki vle di ke nou autorité lis ne pon koleksyon yo kote ki gen.

Solisyon teknik:

Implement yon nouvo modèl personnalisé done aplike ki baze sou SPField Et repwezante kòm yon DropDownList nan ListItems ki peple nan lis WSS mèt UI a.

Nou te kreye yon nouvo koleksyon sit ki te rele "http://localhost/EnterpriseData". La, nou te kreye yon lis personnalisé ki rele "Emplacements Entreprise". Lis sa a sèlman itilize estanda "Tit" jaden pou mete a revizyon lis lokasyon entreprise réel.

Yonn te swiv plizyè disrè etap sa yo pou kreye yon kalite personnalisé done nan WSS. Yo se:

  1. Defini nan yon klas ki hérite de SPField (yonn pou eritye nan lòt sistèm yo si yo mande).

Se isit la a kòd pou sa:

piblik klas XYZZYCorporateLocationField : SPFieldText
{
piblik XYZZYCorporateLocationField
(SPFieldCollection jaden, filè typeName, filè displayName)
: baz(jaden, typeName, displayName) { }

piblik XYZZYCorporateLocationField
(SPFieldCollection jaden, filè displayName)
: baz(jaden, displayName) { }

piblik remplacer BaseFieldControl FieldRenderingControl
{
jwenn
{
BaseFieldControl kontwòl = nouvo XYZZYCorporateLocationFieldControl();
kontwòl. FieldName = sa a.InternalName;
retounen kontwòl;
} //jwenn
} // fieldrenderingcontrol

piblik remplacer filè GetValidatedString(objet valè)
{
Si (sa a.Mande || valè. ToString().Fèt pou l egal(Filè.Vid))
{
voye nouvo SPFieldValidationException ("Depatman pa plase.");
}
retounen baz.GetValidatedString(valè);
} // getvalidatedstring

} // XYZZYCorporateLocation

  1. Defini nan yon lòt klas ki hérite de baz jaden kontwòl, menm jan nan:

piblik klas XYZZYCorporateLocationFieldControl : BaseFieldControl
{
pwoteje DropDownList XYZZYCorporateLocationSelector;

pwoteje remplacer filè DefaultTemplateName
{
jwenn
{
retounen "XYZZYCorporateLocationFieldControl";
}
} // DefaultTemplateName

piblik remplacer objet Valè
{
jwenn
{
EnsureChildControls();
retounen sa a.SelectedValue XYZZYCorporateLocationSelector.;
} // jwenn
ansanm nonm
{
EnsureChildControls();
sa a.XYZZYCorporateLocationSelector.SelectedValue = (filè)sa a.ItemFieldValue;
} // ansanm nonm
} // remplacer objè valè

pwoteje remplacer vid CreateChildControls()
{

Si (sa a.Jaden == null || sa a.ControlMode == SPControlMode.Ekspozisyon)
retounen;

baz.CreateChildControls();

sa a.XYZZYCorporateLocationSelector =
(DropDownList)FindControl TemplateContainer.("XYZZYCorporateLocationSelector");

Si (sa a.XYZZYCorporateLocationSelector == null)
voye nouvo Eksepsyon("ERREUR: Pa kapab chaje. Ranpli ASCX!");

Si (!sa a.IsPostBack Page.)
{

itilize (SPSite kote ki gen = nouvo SPSite("http://localhost/enterprisedata"))
{
itilize (SPWeb Web = direksyon. OpenWeb())
{

Splist.update() currentList = web. Lis["Kòpore lame an kote yo ye"];

foreach (SPItem XYZZYCorporateLocation nan currentList.Items)
{
Si (XYZZYCorporateLocation["Tit"] == null) «««;

filè theTitle;
theTitle = XYZZYCorporateLocation["Tit"].ToString();

sa a.XYZZYCorporateLocationSelector.Items.Add
(nouvo ListItem(theTitle, theTitle));

} // foreach

} // w ap itilize entènèt spweb = site.openweb()
} // w ap itilize kote ki gen spsite = spsite nouvo("http://localhost/enterprisedata")

} // Si se pa sa publication yon

} // CreateChildControls

} // XYZZYCorporateLocationFieldControl

Kòd CI-dessus a fondamantalman en a lojik pou remplissage DropDownList ak valè de WSS personnalisé lis la se nan http://localhost/enterprisedata Et rele "Entreprise lis".

Jan mwen l defini tou de klas nan yon fichier .cs moun ki pa marye, konpile l, yo tounen GAC a (gwo nécessaires, Men wi).

  1. Aplike yon modèle de kontwòl (.ascx) jan montre:

<%@ Kontwòl Lang= "C#" Hérite="Microsoft.SharePoint.Portal.ServerAdmin.CreateSiteCollectionPanel1,Microsoft.SharePoint.Portal,Vèsyon pipiti de youn = 12.0.0.0, kilti = neutres,PublicKeyToken = 71e9bce111e9429c" compilationMode= "Toujou" %>
<%
@ Anrejistre Tagprefix= "wssawc" Namespace="Microsoft.SharePoint.WebControls" Asanble="Microsoft.SharePoint, Vèsyon pipiti de youn = 12.0.0.0, Kilti = neutres, PublicKeyToken = 71e9bce111e9429c" %> <%@ Anrejistre Tagprefix= "SharePoint" Namespace="Microsoft.SharePoint.WebControls" Asanble="Microsoft.SharePoint, Vèsyon pipiti de youn = 12.0.0.0, Kilti = neutres, PublicKeyToken = 71e9bce111e9429c" %>
<SharePoint:RenderingTemplate DIDANTITE= "XYZZYCorporateLocationFieldControl" runat= "sèvè">
<Modèle>
<asp:DropDownList DIDANTITE= "XYZZYCorporateLocationSelector" runat= "sèvè" />
</Modèle>
</
SharePoint:RenderingTemplate>

La CI-dessus sove nan c:\pwogram filescommon filesmicrosoft sharedweb sèvè extensions12controltemplates.

  1. A la fen, nou, kreye yon fichier XML pou sove nan tout rekòt kafe/zaboka anyè 12XML. Se sa rele CAML définit tip done koutim nou, pou m' moutre, recherche kon sa:

<?xml vèsyon pipiti de youn="1.0" codage="utf-8" ?>
<
FieldTypes>
<
FieldType>
<
Jaden fe-apel="TypeName">CorporateLocations</Jaden>
<
Jaden fe-apel="ParentType">Tèks</Jaden>
<
Jaden fe-apel="TypeDisplayName">Kòpore lame an kote yo ye</Jaden>
<
Jaden fe-apel="TypeShortDescription">Tout kote XYZZY kòpore lame an ki gen fabrication oubyen lòt fasilite.</Jaden>
<
Jaden fe-apel="UserCreatable">TOUT BON</Jaden>
<
Jaden fe-apel="ShowInListCreate">TOUT BON</Jaden>
<
Jaden fe-apel="ShowInDocumentLibraryCreate">TOUT BON</Jaden>
<
Jaden fe-apel="ShowInSurveyCreate">TOUT BON</Jaden>
<
Jaden fe-apel="ShowInColumnTemplateCreate">TOUT BON</Jaden>
<
Jaden fe-apel="FieldTypeClass">Conchango.XYZZYCorporateLocationField, XYZZYCorporateLocationField, Vèsyon pipiti de youn = 1.0.0.0, Kilti = neutres, PublicKeyToken = b0b19e85410990c4</Jaden>
<
RenderPattern fe-apel="DisplayPattern">
<
Chanjman>
<
Expr>
<
Kolòn />
</
Expr>

<Ka Valè=""/>

<Par>
<
HTML>
<![CDATA[
<pon stil = "koulè:Red"><b>]]>
</
HTML>

<
Kolòn SubColumnNumber="0" HTMLEncode="TOUT BON"/>

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

</
Par>
</
Chanjman>

</
RenderPattern>
</
FieldType>
</
FieldTypes>
Fichier XML sa a ajoute ki tip personnalisé done pou WSS "bibliyotèk" Et alimè li sou GAC lan te asanble.

Apwè li te fè tout moso sa yo nan plas, iisreset sou sèvè a e li ta dwe tout kòmanse travay bien.

3 refleksyon sou "BAB PANYÒL: Fonctionnelles egzanp-tip Personnalisé done

  1. Alejandro
    Alo Paul,
    Anvan tout bagay, mèsi pou atik la, paske li pi enteresan. Sèlman yon kesyon;
    Èske w konnen si li posible pou rendu kòrèkteman yon kalite personnalisé jaden nan vi feuille a de yon lis?
    Paske, tout kalite personnalisé jaden mwen kreye l' montre en lecture sèlman nan vi technique (Et MSDN la, pa ekzanp, pa ede m' anpil :-S).
    Mèsi
    N. repons
  2. Lyndsay

    Mwen menm ki vle aplike solisyon ou. Sepandan mwen olye de DropDownList, Mwen gen sèlman yon opsyon pou yon DropDownChoiceList. Èske ou rive konnen kijan pou ajoute atik pou yon DropDownChoiceList? Nou ap itilize SharePoint 2007 SP1 Et izyèl estidyo 2005 SP1.

    N. repons

kite yon repons

Adrès imèl ou pa pral dwe pibliye. Jaden obligatwa yo make *