MOSS: ಕಾರ್ಯಾತ್ಮಕ ಉದಾಹರಣೆ - ಕಸ್ಟಮ್ ಡೇಟಾ ಪ್ರಕಾರ

ವ್ಯಾಪಾರ ಸನ್ನಿವೇಶ:

ಉತ್ಪಾದನಾ ಕಂಪನಿಯ ಪಾಚಿಯ ಎಂಟರ್ಪ್ರೈಸ್-ವ್ಯಾಪಕ ಕಾರ್ಯಗತಗೊಳಿಸುವಿಕೆಯನ್ನು 30+ ಸೈಟ್ಗಳು ಮತ್ತು ಕೆಲವು ಡಜನ್ ಕಾರ್ಪೊರೇಟ್ ವಿಭಾಗಗಳು.

ವ್ಯಾಪಾರ ಉದ್ದೇಶ:

ವ್ಯಾಪಾರ ಗುಂಪುಗಳ ಬಹುಸಂಖ್ಯೆಯ ಹೊರತಾಗಿಯೂ (ವಿಭಾಗಗಳು, ಸ್ಥಳಗಳು, ಇತ್ಯಾದಿ), ಕೆಲವು ಡೇಟಾವನ್ನು ಜಾಗತಿಕ ಮಟ್ಟದಲ್ಲಿ ನಿಭಾಯಿಸಬಹುದು. ಉದಾಹರಣೆಗೆ, ಕಂಪನಿಯ ಎಲ್ಲಾ ಭೌತಿಕ ಸ್ಥಳಗಳನ್ನು ಅಧಿಕಾರಯುಕ್ತವಾದ ಮಾಸ್ಟರ್ ಪಟ್ಟಿ (ಉದಾ.. ಉತ್ಪಾದನಾ ಸೌಲಭ್ಯಗಳು, ಗೋದಾಮಿನ ಸ್ಥಳಗಳು, ಮಾರಾಟ ಕಚೇರಿಗಳು) ಕೇಂದ್ರ ಸ್ಥಳದಲ್ಲಿ ನಿಭಾಯಿಸಬಹುದು.

ತಾಂತ್ರಿಕ ಸಮಸ್ಯೆ:

ಎಂಟರ್ಪ್ರೈಸ್ ಟ್ಯಾಕ್ಸಾನಮಿ ಬಹು ಸೈಟ್ ಸಂಗ್ರಹಣೆಗಳು ಬಳಸಿಕೊಂಡು ಅಳವಡಿಸಿಕೊಂಡಿದ್ದರಿಂದ. ನಾವು ಕಸ್ಟಮ್ 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 = .InternalName;
ಮರಳಿ 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 populating ಫಾರ್ ತರ್ಕ ಕೈಗೊಳ್ಳುತ್ತದೆ http://localhost/enterprisedata and named "Corporate Departments".

ನಾನು ಒಂದೇ. CS ಕಡತದಲ್ಲಿ ಎರಡೂ ತರಗತಿಗಳು ವ್ಯಾಖ್ಯಾನಿಸಲಾಗಿದೆ, ಇದು ಕಂಪೈಲ್ ಮತ್ತು GAC ಹಾಕಿದರೆ (ಅಗತ್ಯವಿರುವ ಪ್ರಬಲ, ಸಹಜವಾಗಿ).

  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" %>
<ಶೇರ್ಪಾಯಿಂಟ್:RenderingTemplate ID="XYZZYCorporateLocationFieldControl" runat="server">
<ಪ್ರಮಾಣ ಫಲಕ>
<ASP:DropDownList ID="XYZZYCorporateLocationSelector" runat="server" />
</ಪ್ರಮಾಣ ಫಲಕ>
</
ಶೇರ್ಪಾಯಿಂಟ್:RenderingTemplate>

ಮೇಲೆ ಸಿ ಒಳಗೆ ಉಳಿಸಲಾಗಿದೆ:\ಪ್ರೋಗ್ರಾಮ್ ಕಡತಗಳು ಸಾಮಾನ್ಯ ಕಡತಗಳು Microsoft ಹಂಚಿಕೆಯ ವೆಬ್ ಸರ್ವರ್ ವಿಸ್ತರಣೆಗಳನ್ನು 12 controltemplates.

  1. ಅಂತಿಮವಾಗಿ, ನಾವು ..... 12 ಮದುವೆ ಕೋಶಕ್ಕೆ ಉಳಿಸಲು ಒಂದು XML ಫೈಲ್ ರಚಿಸಲು. ಈ ನಮ್ಮ ಕಸ್ಟಮ್ ದಶಮಾಂಶ ಕೌಟುಂಬಿಕತೆ ವರ್ಣಿಸಬಹುದು CAML ಮತ್ತು ನನ್ನ ಉದಾಹರಣೆಗೆ, ಈ ತೋರುತ್ತಿದೆ:

<?ಮದುವೆ ರೂಪಾಂತರ="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>

<ಪ್ರಕರಣ ಮೌಲ್ಯ=""/>

<ಡೀಫಾಲ್ಟ್>
<
ಎಚ್ಟಿಎಮ್ಎಲ್>
<![CDATA[
<span style="color:Red"><ಬೌ>]]>
</
ಎಚ್ಟಿಎಮ್ಎಲ್>

<
ಕಾಲಮ್ SubColumnNumber="0" HTMLEncode="TRUE"/>

<ಎಚ್ಟಿಎಮ್ಎಲ್><![CDATA[</ಬೌ></ದಾಟು>]]></ಎಚ್ಟಿಎಮ್ಎಲ್>

</
ಡೀಫಾಲ್ಟ್>
</
ಸ್ವಿಚ್ಚು>

</
RenderPattern>
</
FieldType>
</
FieldTypes>
This XML file adds the custom data type to the WSS "library" ಮತ್ತು GAC'd ವಿಧಾನಸಭೆ ವಿರುದ್ಧ ಅದನ್ನು ಹೋಲಿಕೆ.

ಸ್ಥಾನಕ್ಕೇರಿತು ಎಲ್ಲಾ ಈ ಬಿಟ್ಗಳು ಚಲಿಸುವ ನಂತರ, ಸರ್ವರ್ನಲ್ಲಿ iisreset ಮತ್ತು ಇದು ಎಲ್ಲಾ ಚೆನ್ನಾಗಿ ಕೆಲಸ ಆರಂಭಿಸಲು ಬೇಕು.

3 ಮೇಲೆ "ಆಲೋಚನೆಗಳುMOSS: ಕಾರ್ಯಾತ್ಮಕ ಉದಾಹರಣೆ - ಕಸ್ಟಮ್ ಡೇಟಾ ಪ್ರಕಾರ

  1. ಅಲೆಕ್ಸಾಂಡರ್
    ಹೈ ಪಾಲ್,
    ಎಲ್ಲಾ ಮೊದಲ, ಲೇಖನ ಧನ್ಯವಾದಗಳು, ಇದು ಕುತೂಹಲಕಾರಿ ಏಕೆಂದರೆ. ಒಂದು ಪ್ರಶ್ನೆ;
    ಇದು ಒಂದು ಪಟ್ಟಿಯ ಡಾಟಾಶೀಟ್ ವೀಕ್ಷಣೆಯಲ್ಲಿ ಸರಿಯಾಗಿ ಕಸ್ಟಮ್ ಕ್ಷೇತ್ರ ಕೌಟುಂಬಿಕತೆ ನಿರೂಪಿಸಲು posible ಇಲ್ಲಿದೆ ವೇಳೆ ನಿಮಗೆ ಗೊತ್ತೇ?
    ನಾನು ರಚಿಸಿ ಪ್ರತಿ ಕಸ್ಟಮ್ ಕ್ಷೇತ್ರ ಕೌಟುಂಬಿಕತೆ ಡಾಟಾಶೀಟ್ ವೀಕ್ಷಣೆಯಲ್ಲಿ ಓದಲು ಮಾತ್ರ ತೋರಿಸಲಾಗಿದೆ ಏಕೆಂದರೆ (ಮತ್ತು MSDN, ಉದಾಹರಣೆಗೆ, ನನಗೆ ತುಂಬಾ ಸಹಾಯ ಮಾಡುವುದಿಲ್ಲ :-ಎಸ್).
    ವಂದನೆ
  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.

ಒಂದು ಉತ್ತರಿಸಿ ಬಿಡಿ

ನಿಮ್ಮ ಈಮೇಲ್ ವಿಳಾಸ ರ ಆಗುವುದಿಲ್ಲ. ಅಗತ್ಯವಿರುವ ಜಾಗ ಗುರುತಿಸಲಾಗಿದೆ *