શેવાળ: કાર્યાત્મક ઉદાહરણ - વૈવિધ્યપૂર્ણ ડેટા પ્રકાર

વ્યાપાર પરિદ્દશ્ય:

ઉત્પાદન કંપની માટે શેવાળના Enterprise વ્યાપી અમલીકરણ સાથે 30+ સાઇટ્સ અને થોડા ડઝન કોર્પોરેટ વિભાગો.

વ્યાપાર ઉદ્દેશ:

બિઝનેસ જૂથો એક ટોળું હોવા છતાં (વિભાગો, સ્થાનો, વગેરે), અમુક માહિતી વૈશ્વિક સ્તરે સંભાળેલ હોવી જોઇએ. ઉદાહરણ તરીકે, કંપનીના બધા ભૌતિક સ્થાનોને એક સત્તાવાર માસ્ટર યાદી (e.g. ઉત્પાદન સુવિધાઓ, વેરહાઉસ સ્થળો, વેચાણની કચેરીઓ) કેન્દ્રિય પાંચ આંકડાના US સ્થાન જાળવવામાં જોઇએ.

ટેકનિકલ સમસ્યા:

એન્ટરપ્રાઇઝ વર્ગીકરણ બહુવિધ સાઇટ સંગ્રહ ઉપયોગ કરીને લાગુ કરવામાં આવી હતી. અમે વૈવિધ્યપૂર્ણ WSS યાદીમાં ભૌતિક સ્થાનોને ની સત્તાવાર યાદી બનાવવા માટે પસંદ કરી હશે. તે પછી, અમે સામગ્રી પ્રકાર એક કૉલમ હોય જ્યારે જરૂર પડે ત્યારે (અથવા કૉલમ સૂચિ અથવા દસ્તાવેજ લાઇબ્રેરી ઉમેરવામાં) કે સમાયેલ કોર્પોરેટ સ્થળો, we would create a column using the "lookup" આ માસ્ટર યાદીમાં datatype અને બિંદુ.

કમનસીબે, lookup datatypes must access a source list "locally" અમારા સત્તાવાર યાદી સાઇટ સંગ્રહ વિસ્તારતા નથી કરી શકે છે એનો અર્થ એ થાય.

ટેકનિકલ સોલ્યુશન:

SPField પર આધારિત છે અને જેની ListItems મુખ્ય WSS સૂચિમાંથી રચના આ UI માં એક DropDownList તરીકે રજૂ અમલ એક નવા કસ્ટમ માહિતી પ્રકાર અમલ.

અમે નામની એક નવી સાઇટ સંગ્રહ બનાવનાર "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://localhost / enterprisedata"))
{
નો ઉપયોગ (SPWeb web = site.OpenWeb())
{

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

foreach (બોલે XYZZYCorporateLocation માં currentList.Items)
{
જો (XYZZYCorporateLocation["Title"] == શૂન્ય) ચાલુ;

સ્ટ્રિંગ theTitle;
theTitle = XYZZYCorporateLocation["Title"].ToString();

.XYZZYCorporateLocationSelector.Items.Add
(નવું ListItem(theTitle, theTitle));

} // foreach

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

} // if not a postback

} // CreateChildControls

} // XYZZYCorporateLocationFieldControl

ઉપરોક્ત કોડ મૂળભૂત પર સ્થિત WSS વૈવિધ્યપૂર્ણ સૂચિમાંથી કિંમતો સાથે DropDownList રચવાનું માટે તર્ક અમલીકરણ http://localhost/enterprisedata and named "Corporate Departments".

હું એક. સીએસ ફાઈલ બંને વર્ગો વ્યાખ્યાયિત, તે સંકલન અને જીએસી તેને મૂકવામાં (જરૂરી મજબૂત, અલબત્ત).

  1. નિયંત્રણ નમૂના અમલ (.ascx) બતાવ્યા:

<%@ નિયંત્રણ ભાષા="C#" બોલાવે="Microsoft.SharePoint.Portal.ServerAdmin.CreateSiteCollectionPanel1,Microsoft.SharePoint.Portal,આવૃત્તિ = 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:રેન્ડરીંગ ઢાંચો ને="XYZZYCorporateLocationFieldControl" runat="server">
<ઢાંચો>
<નાનો ઝેરી સાપ:DropDownList ને="XYZZYCorporateLocationSelector" runat="server" />
</ઢાંચો>
</
SharePoint:રેન્ડરીંગ ઢાંચો>

ઉપર કેચ માં સચવાય છે:\કાર્યક્રમ ફાઈલો સામાન્ય ફાઈલો Microsoft વહેંચાયેલ વેબ સર્વર એક્સ્ટેન્શન્સ 12 controltemplates.

  1. છેલ્લે, અમે ..... 12 XML ડિરેક્ટરીમાં સાચવવા માટે એક 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, આવૃત્તિ 1.0.0.0 =, સંસ્કૃતિ = તટસ્થ, PublicKeyToken=b0b19e85410990c4</ક્ષેત્ર>
<
RenderPattern નામ="DisplayPattern">
<
સ્વીચ>
<
Expr>
<
કોલમ />
</
Expr>

<કેસ કિંમત=""/>

<મૂળભૂત>
<
HTML>
<![CDATA[
<span style="color:Red"><બોલ્ડ>]]>
</
HTML>

<
કોલમ SubcolumnNumber="0" HTMLEncode="TRUE"/>

<HTML><![CDATA[</બોલ્ડ></વેંત>]]></HTML>

</
મૂળભૂત>
</
સ્વીચ>

</
RenderPattern>
</
FieldType>
</
FieldTypes>
This XML file adds the custom data type to the WSS "library" અને GAC'd વિધાનસભા સામે અપ મેચ.

સ્થળ માં આ બધા બીટ્સ સ્થળાંતર કર્યા પછી, સર્વર પર iisreset છે અને તેને બધા સરસ રીતે કામ શરૂ કરીશું.

3 પર "વિચારોશેવાળ: કાર્યાત્મક ઉદાહરણ - વૈવિધ્યપૂર્ણ ડેટા પ્રકાર

  1. એલેક્ઝાન્ડર
    મહત્તમ પીડી,
    તમામ પ્રથમ, લેખ માટે આભાર, તે ખૂબ જ રસપ્રદ છે કારણ કે. ફક્ત એક પ્રશ્ન;
    જો તે યાદીમાં datasheet દૃશ્યમાં યોગ્ય રીતે વૈવિધ્યપૂર્ણ ફીલ્ડ પ્રકાર રેન્ડર કરવા posible તો તમે જાણો છો?
    હું તેને બનાવવા દરેક વૈવિધ્યપૂર્ણ ફીલ્ડ પ્રકાર datasheet દૃશ્યમાં ફક્ત વાંચી તરીકે બતાવવામાં આવ્યું છે કારણ કે (અને એમએસડીએન, ઉદાહરણ માટે, મને ખૂબ મદદ નથી :-એસ).
    આભારદર્શક શબ્દો
  2. Lyndsay

    I am attempting to implement your solution. However I instead of DropDownList, I only have the option for a DropDownChoiceList. Do you happen to know how to add items to a DropDownChoiceList? અમે શેરપોઈન્ટ ઉપયોગ કરી રહ્યા છો 2007 SP1 અને વિઝ્યુઅલ સ્ટુડિયો 2005 SP1.

જવાબ છોડો

તમારું ઇમેઇલ સરનામું પ્રકાશિત કરવામાં આવશે નહીં. જરૂરી ક્ષેત્રો ચિહ્નિત થયેલ છે *