பாசி: செயல்பாட்டு உதாரணம் - வழக்கமான தரவு வகை

வணிக நிலைத்தன்மை:

உற்பத்தி நிறுவனத்திற்கு பாசி நிறுவன அளவிலான செயல்படுத்த கூடிய 30+ தளங்கள் மற்றும் ஒரு சில டஜன் பெருநிறுவன துறைகள்.

வணிக நோக்கம்:

வணிக குழுக்கள் ஒரு கூட்டம் போதிலும் (துறைகள், இடங்கள், முதலியன), குறிப்பிட்ட தரவு உலக அளவில் பராமரிக்கப்படுகிறது. எடுத்துக்காட்டாக, நிறுவனத்தின் அனைத்து உடல் இடங்களில் ஒரு அதிகார மாஸ்டர் பட்டியல் (E.G. உற்பத்தி வசதிகள், கிடங்கு இடங்களில், விற்பனை அலுவலகங்கள்) ஒரு மைய இடம் பராமரிக்கப்படும்.

தொழில்நுட்ப சிக்கல்:

நிறுவன வகைபிரித்தல் பல தளத்தில் தொகுப்புகளை பயன்படுத்தி செயல்படுத்தப்பட்டது. நாம் ஒரு விருப்ப WSS பட்டியலில் உடல் இடங்களில் அதிகார பட்டியலில் உருவாக்க விரும்பினார். அப்பொழுது, நாம் ஒரு உள்ளடக்க வகை ஒரு பத்தியில் வேண்டும் தேவைப்படும் போது (அல்லது ஒரு பத்தியில் ஒரு பட்டியல் அல்லது ஆவணம் நூலகம் சேர்க்கப்பட்டது) என்று அடங்கியுள்ள பெருநிறுவன இடங்களில், we would create a column using the "lookup" இந்த மாஸ்டர் பட்டியலில் டேட்டாடை மற்றும் புள்ளி.

துரதிருஷ்டவசமாக, 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://லோக்கல் ஹோஸ்ட் / enterprisedata"))
{
பயன்படுத்தி (SPWeb web = site.OpenWeb())
{

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

foreach (SPItem 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".

நான் ஒரு ஒற்றை. Cs கோப்பில் இரண்டு வகுப்புகள் வரையறுக்கப்பட்ட, இது தொகுக்கப்பட்ட மற்றும் காக் அதை வைத்து (தேவையான வலுவான, நிச்சயமாக).

  1. ஒரு கட்டுப்பாட்டு டெம்ப்ளேட் செயல்படுத்த (.ஏஎஸ்சிஎக்ஸ்) காட்டப்பட்டது:

<%@ கட்டுப்படுத்த மொழி="C#" பரம்பரை="Microsoft.SharePoint.Portal.ServerAdmin.CreateSiteCollectionPanel1,Microsoft.SharePoint.Portal,பதிப்பு = 12.0.0.0, கலாச்சாரம் = நடுநிலை,PublicKeyToken = 71e9bce111e9429c" compilationMode="Always" %>
<%
@ பதிவு Tagprefix="wssawc" பெயர்வெளி="Microsoft.SharePoint.WebControls" சபை="Microsoft.SharePoint, பதிப்பு = 12.0.0.0, கலாச்சாரம் = நடுநிலை, PublicKeyToken = 71e9bce111e9429c" %> <%@ பதிவு Tagprefix="SharePoint" பெயர்வெளி="Microsoft.SharePoint.WebControls" சபை="Microsoft.SharePoint, பதிப்பு = 12.0.0.0, கலாச்சாரம் = நடுநிலை, PublicKeyToken = 71e9bce111e9429c" %>
<ஷேர்பாயிண்ட்:RenderingTemplate ஐடி="XYZZYCorporateLocationFieldControl" runat="server">
<டெம்ப்ளேட்>
<கட்டுவிரியன்:DropDownList ஐடி="XYZZYCorporateLocationSelector" runat="server" />
</டெம்ப்ளேட்>
</
ஷேர்பாயிண்ட்:RenderingTemplate>

மேலே கேட்ச் சேமிக்கப்படுகின்றன:\நிரல் கோப்புகள் பொதுவான கோப்புகள் மைக்ரோசாப்ட் பகிர்வு வலை சர்வர் நீட்சிகள் 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">உண்மை</புலம்>
<
புலம் பெயர்="ShowInListCreate">உண்மை</புலம்>
<
புலம் பெயர்="ShowInDocumentLibraryCreate">உண்மை</புலம்>
<
புலம் பெயர்="ShowInSurveyCreate">உண்மை</புலம்>
<
புலம் பெயர்="ShowInColumnTemplateCreate">உண்மை</புலம்>
<
புலம் பெயர்="FieldTypeClass">Conchango.XYZZYCorporateLocationField, XYZZYCorporateLocationField, பதிப்பு = 1.0.0.0, கலாச்சாரம் = நடுநிலை, PublicKeyToken=b0b19e85410990c4</புலம்>
<
RenderPattern பெயர்="DisplayPattern">
<
மின்சார ஓட்டத்தை நிறுத்த உதவும்>
<
Expr>
<
பத்தி />
</
Expr>

<வழக்கு மதிப்பு=""/>

<தவறுதல்>
<
HTML>
<![CDATA[
<span style="color:Red"><ப>]]>
</
HTML>

<
பத்தி SubColumnNumber="0" HTMLEncode="உண்மை"/>

<HTML><![CDATA[</ப></span>]]></HTML>

</
தவறுதல்>
</
மின்சார ஓட்டத்தை நிறுத்த உதவும்>

</
RenderPattern>
</
FieldType>
</
FieldTypes>
This XML file adds the custom data type to the WSS "library" மற்றும் GAC'd சட்டசபை எதிராக அது பொருந்தும்.

இடத்தில் இந்த பிட்டுகள் நகரும் பிறகு, சர்வரில் iisreset மற்றும் அனைத்து நன்றாக வேலை தொடங்க வேண்டும்.

3 "மீது எண்ணங்கள்பாசி: செயல்பாட்டு உதாரணம் - வழக்கமான தரவு வகை

  1. Alejandro
    Hi பால்,
    அனைத்து முதல், கட்டுரை நன்றி, இது மிகவும் சுவாரஸ்யமான காரணம். ஒரே ஒரு கேள்வி;
    இது ஒரு பட்டியல் தரவுத்தாள் காட்சி சரியாக விருப்ப துறையில் வகை செய்வதற்கு posible இருந்தால் நீங்கள் தெரிகிறீர்கள்?
    நான் அதை உருவாக்க ஒவ்வொரு விருப்ப துறையில் வகை தரவுத்தாள் பார்வையில் படிக்க மட்டுமே காட்டப்படும் ஏனெனில் (மற்றும் எம்எஸ்டிஎன், எடுத்துக்காட்டாக, எனக்கு மிகவும் உதவியாக இல்லை :-எஸ்).
    நன்றி
  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.

ஒரு பதில் விட்டு

உங்கள் மின்னஞ்சல் முகவரி வெளியிடப்பட்ட முடியாது. தேவையான புலங்கள் குறிக்கப்பட்டன *