मैं Bergen काउंटी में मेरी कार को बेचने के लिए एक वर्गीकृत विज्ञापन पोस्ट, रविवार रात को न्यू जर्सी. मैं उसके बाद शीघ्र ही कई जांच के ईमेल के जरिए प्राप्त किया और मंगलवार की रात को किसी के साथ सौदा बंद कर दिया.
लगभग भी सच्चा होना अच्छा …
मैं Bergen काउंटी में मेरी कार को बेचने के लिए एक वर्गीकृत विज्ञापन पोस्ट, रविवार रात को न्यू जर्सी. मैं उसके बाद शीघ्र ही कई जांच के ईमेल के जरिए प्राप्त किया और मंगलवार की रात को किसी के साथ सौदा बंद कर दिया.
लगभग भी सच्चा होना अच्छा …
मैं अक्सर बहुत उन्नत खोज XSLT को संशोधित न करें, तो ऐसा लगता है जैसे मैं हर समय छोटी पहाड़ियों चढ़ाई कर रहा हूँ.
यह मेरे नवीनतम सबक है: मामला मायने रखती है जब कोई स्तंभ को संदर्भित. मेरे उन्नत खोज में, मैं स्तंभों इस रूप में परिभाषित किया गया है:
<रूट xmlns:xsi="http://www.w3.org/ 2001/xml स्कीमा-उदाहरण">
<कॉलम>
<स्तंभ नाम="GafTrainingInvoiceNumber" />
<स्तंभ नाम="GafTrainingInvoiceLocation" />
<स्तंभ नाम="कार्य Id"/>
<स्तंभ नाम="रैंक"/>
<स्तंभ नाम="शीर्षक"/>
<स्तंभ नाम="लेखक"/>
<स्तंभ नाम="का आकार"/>
<स्तंभ नाम="पथ"/>
<स्तंभ नाम="विवरण"/>
<स्तंभ नाम="लिखना"/>
<स्तंभ नाम="SiteName"/>
<स्तंभ नाम="CollapsingStatus"/>
<स्तंभ नाम="HitHighlightedSummary"/>
<स्तंभ नाम="HitHighlightedProperties"/>
<स्तंभ नाम="ContentClass"/>
<स्तंभ नाम="IsDocument"/>
<स्तंभ नाम="PictureThumbnailURL"/>
</कॉलम>
</रूट>
इनवॉइस संख्या और चालान स्थान प्रदर्शित करता है XLST गया था:
<पी>
प्रशिक्षण चालान संख्या: <xsl:मान का का चयन करें="GafTrainingInvoiceNumber"/>
<br></br>
प्रशिक्षण इनवॉइस स्थान: <xsl:मान का का चयन करें="GafTrainingInvoiceLocation"/>
</पी>
हालांकि, चयन करें सब कम मामले में संपत्ति को संदर्भित करने के लिए है, के रूप में:
<पी>
प्रशिक्षण चालान संख्या: <xsl:मान का का चयन करें="gaftraininginvoicenumber"/>
<br></br>
प्रशिक्षण इनवॉइस स्थान: <xsl:मान का का चयन करें="gaftraininginvoicelocation"/>
</पी>
जब तक कि मैं सही, खोज परिणामों में लेबल से पता चला (अर्थात. "प्रशिक्षण इनवॉइस संख्या") कोई डेटा नहीं लेकिन.
व्यापार परिदृश्य:
एंटरप्राइज़-वाइड कार्यान्वयन काई के साथ विनिर्माण कंपनी के लिए 30+ साइटों और कुछ दर्जन कॉर्पोरेट विभागों.
व्यवसाय उद्देश्य:
व्यापार समूहों की एक भीड़ के बावजूद (विभागों, स्थानों, आदि), निश्चित डेटा एक वैश्विक स्तर पर बनाए रखा जाना चाहिए. उदाहरण के लिए, कंपनी के सभी भौतिक स्थानों की एक आधिकारिक मास्टर सूची (जैसे. विनिर्माण सुविधाओं, गोदाम स्थान, बिक्री कार्यालयों) में एक केंद्रीय स्थान बनाए रखा जाना चाहिए.
तकनीकी समस्या:
एंटरप्राइज़ टेक्सॉनॉमी एकाधिक साइट संग्रह का उपयोग कर लागू किया गया था. हम भौतिक स्थानों की आधिकारिक सूची में कस्टम WSS सूची बनाने के लिए पसंद आया होगा. तब, जब हम किसी सामग्री प्रकार में कोई स्तंभ है जरूरी (या कोई स्तंभ किसी सूची या डॉक्टर लायब्रेरी पर जोड़ा गया) कि कॉर्पोरेट स्थानों समाहित, हम एक स्तंभ "लुकअप का उपयोग कर से पैदा होगा" डेटा प्रकार और इस बात के लिए मास्टर सूची.
दुर्भाग्य से, लुकअप डेटाटाइप्स "स्थानीय रूप से एक स्रोत सूची का उपयोग करना होगा" जिसका अर्थ है कि हमारे आधिकारिक सूची साइट संग्रहों का विस्तार नहीं कर सकता.
तकनीकी समाधान:
एक नई कस्टम डेटा प्रकार के आधार पर SPField कार्यान्वित किया और जिसका ListItems मास्टर WSS सूची से आबाद UI में एक DropDownList के रूप में प्रतिनिधित्व किया कार्यान्वित.
हम नामक एक नया साइट संग्रह बनाया "http://localhost/EnterpriseData". वहाँ, हम "कॉर्पोरेट स्थानों" नामक एक कस्टम सूची बनाई. यह सूची सिर्फ मानक "शीर्षक का उपयोग करता है" वास्तविक कॉर्पोरेट स्थानों की सूची शामिल करने के लिए फ़ील्ड.
एक WSS में कोई कस्टम डेटा प्रकार बनाने के लिए कई असतत कदम इस प्रकार. वे कर रहे हैं:
यहाँ है कि के लिए कोड:
सार्वजनिक वर्ग XYZZYCorporateLocationField : SPFieldText
{
सार्वजनिक XYZZYCorporateLocationField
(SPFieldCollection फ़ील्ड् स, स्ट्रिंग typeName, स्ट्रिंग displayName)
: बेस(फ़ील्ड् स, typeName, displayName) { }
सार्वजनिक XYZZYCorporateLocationField
(SPFieldCollection फ़ील्ड् स, स्ट्रिंग displayName)
: बेस(फ़ील्ड् स, displayName) { }
सार्वजनिक ओवरराइड करें BaseFieldControl FieldRenderingControl
{
हो जाओ
{
BaseFieldControl नियंत्रण = नई XYZZYCorporateLocationFieldControl();
नियंत्रण। FieldName = यह.InternalName;
वापस जाएँ नियंत्रण;
} //हो जाओ
} // fieldrenderingcontrol
सार्वजनिक ओवरराइड करें स्ट्रिंग GetValidatedString(ऑब्जेक्ट मान)
{
अगर (यह.की आवश्यकता || मान। ToString().के बराबर होती है(स्ट्रिंग.खाली))
{
फेंक नई SPFieldValidationException ("विभाग सौंपा नहीं है।");
}
वापस जाएँ बेस.GetValidatedString(मान);
} // getvalidatedstring
} // XYZZYCorporateLocation
सार्वजनिक वर्ग XYZZYCorporateLocationFieldControl : BaseFieldControl
{
संरक्षित DropDownList XYZZYCorporateLocationSelector;
संरक्षित ओवरराइड करें स्ट्रिंग DefaultTemplateName
{
हो जाओ
{
वापस जाएँ "XYZZYCorporateLocationFieldControl";
}
} // DefaultTemplateName
सार्वजनिक ओवरराइड करें ऑब्जेक्ट मान
{
हो जाओ
{
EnsureChildControls();
वापस जाएँ यह.XYZZYCorporateLocationSelector.SelectedValue;
} // हो जाओ
सेट करें
{
EnsureChildControls();
यह.XYZZYCorporateLocationSelector.SelectedValue = (स्ट्रिंग)यह.ItemFieldValue;
} // सेट करें
} // ऑब्जेक्ट मान को ओवरराइड
संरक्षित ओवरराइड करें शून्य CreateChildControls()
{
अगर (यह.फ़ील्ड = = अशक्त || यह.ControlMode = = SPControlMode.प्रदर्शन)
वापस जाएँ;
बेस.CreateChildControls();
यह.XYZZYCorporateLocationSelector =
(DropDownList)TemplateContainer.FindControl("XYZZYCorporateLocationSelector");
अगर (यह.XYZZYCorporateLocationSelector = = अशक्त)
फेंक नई अपवाद("त्रुटि: लोड नहीं कर सकता। ASCX फ़ाइल!");
अगर (!यह.Page.IsPostBack)
{
का उपयोग कर (SPSite साइट = नई SPSite("http://लोकलहोस्ट/enterprisedata"))
{
का उपयोग कर (SPWeb वेब साइट =। OpenWeb())
{
SPList currentList वेब =। सूचियाँ["कॉर्पोरेट स्थानों"];
foreach (SPItem XYZZYCorporateLocation में currentList.Items)
{
अगर (XYZZYCorporateLocation["शीर्षक"] == अशक्त) «««;
स्ट्रिंग theTitle;
theTitle = XYZZYCorporateLocation["शीर्षक"].ToString();
यह.XYZZYCorporateLocationSelector.Items.Add
(नई ListItem(theTitle, theTitle));
} // foreach
} // spweb वेब का उपयोग = site.openweb()
} // spsite साइट का उपयोग करके नए spsite =("http://लोकलहोस्ट/enterprisedata")
} // नहीं तो एक postback
} // CreateChildControls
} // XYZZYCorporateLocationFieldControl
इसके बाद के संस्करण कोड मूल रूप से DropDownList WSS कस्टम सूची में स्थित से मूल्यों के साथ populating के लिए तर्क लागू करता है http://localhost/enterprisedata और नामांकित "कॉर्पोरेट विभागों".
मैं एक एकल .cs फ़ाइल में दोनों वर्गों परिभाषित, इसे संकलित किया और इसे GAC में डाल (मजबूत की आवश्यकता, बेशक).
<%@ नियंत्रण भाषा"सी # =" संभालते="Microsoft.SharePoint.Portal.ServerAdmin.CreateSiteCollectionPanel1,Microsoft.SharePoint.Portal,संस्करण 12.0.0.0, संस्कृति = = तटस्थ,PublicKeyToken = 71e9bce111e9429c" compilationMode"हमेशा =" %>
<%@ पंजीकृत करें Tagprefix"wssawc =" Namespace="Microsoft.SharePoint.WebControls" विधानसभा="Microsoft.SharePoint, संस्करण = 12.0.0.0, संस्कृति तटस्थ =, PublicKeyToken = 71e9bce111e9429c" %> <%@ पंजीकृत करें Tagprefix"SharePoint =" Namespace="Microsoft.SharePoint.WebControls" विधानसभा="Microsoft.SharePoint, संस्करण = 12.0.0.0, संस्कृति तटस्थ =, PublicKeyToken = 71e9bce111e9429c" %>
<SharePoint:RenderingTemplate ID"XYZZYCorporateLocationFieldControl =" runat"सर्वर" =>
<टेम्पलेट>
<एएसपी:DropDownList ID"XYZZYCorporateLocationSelector =" runat"सर्वर =" />
</टेम्पलेट>
</SharePoint:RenderingTemplate>
इसके बाद के संस्करण में सी सहेजी जाती है:\प्रोग्राम प्रोग्राम filesmicrosoft sharedweb सर्वर extensions12controltemplates.
<?xml संस्करण="1.0" एन्कोडिंग="utf-8" ?>
<FieldTypes>
<FieldType>
<फ़ील्ड नाम="TypeName">CorporateLocations</फ़ील्ड>
<फ़ील्ड नाम="ParentType">पाठ</फ़ील्ड>
<फ़ील्ड नाम="TypeDisplayName">कॉर्पोरेट स्थानों</फ़ील्ड>
<फ़ील्ड नाम="TypeShortDescription">सब XYZZY कॉर्पोरेट विनिर्माण या अन्य सुविधाओं सहित स्थान.</फ़ील्ड>
<फ़ील्ड नाम="UserCreatable">सच</फ़ील्ड>
<फ़ील्ड नाम="ShowInListCreate">सच</फ़ील्ड>
<फ़ील्ड नाम="ShowInDocumentLibraryCreate">सच</फ़ील्ड>
<फ़ील्ड नाम="ShowInSurveyCreate">सच</फ़ील्ड>
<फ़ील्ड नाम="ShowInColumnTemplateCreate">सच</फ़ील्ड>
<फ़ील्ड नाम="FieldTypeClass">Conchango.XYZZYCorporateLocationField, XYZZYCorporateLocationField, संस्करण = 1.0.0.0, संस्कृति तटस्थ =, PublicKeyToken = b0b19e85410990c4</फ़ील्ड>
<RenderPattern नाम="DisplayPattern">
<स्विच>
<Expr>
<स्तंभ />
</Expr>
<मामला मान=""/>
<डिफ़ॉल्ट>
<HTML>
<![CDATA[<अवधि शैली = "रंग:लाल"><ख>]]>
</HTML>
<स्तंभ SubColumnNumber="0" HTMLEncode="सच"/>
<HTML><![CDATA[</ख></काल>]]></HTML>
</डिफ़ॉल्ट>
</स्विच>
</RenderPattern>
</FieldType>
</FieldTypes>
यह XML फ़ाइल कस्टम डेटा प्रकार जोड़ता है WSS "लायब्रेरी करने के लिए" और यह GAC के खिलाफ मैच था विधानसभा.
जगह में इन सभी बिट्स स्थानांतरण के बाद, iisreset पर सर्वर है और यह सब अच्छी तरह से कार्य करना प्रारंभ करना चाहिए.
अतिरिक्त श्रेणी: CAML
यहाँ है "क्रेग नामक एक साथी द्वारा एक महान पोस्ट" फ़ील्ड सामग्री प्रकार किसी साइट से असली जीना परिभाषाएँ बंद आधारित के लिए CAML परिभाषाओं को खोजने के लिए एक तकनीक पर.
उसकी पोस्टिंग यह सब कहते हैं. संक्षिप्त में:
अतिरिक्त श्रेणियाँ: दृश्य स्टूडियो 2005
उपयोगी intellisense सुविधाओं के लिए सक्षम करने के लिए, तत्वों, दृश्य स्टूडियो में आदि 2005:
Intellisense अब उस XML दस्तावेज़ के लिए सक्षम किया गया है.
देखें यहाँ पर अधिक जानकारी और निर्देशों के लिए इस विषय पर के लिए स्वचालित रूप से WSS intellisense किसी XML फ़ाइल के साथ संबद्ध कैसे करें.
मैं ले लिया और उपर्युक्त परीक्षण इस सुबह पारित. मैं परीक्षा के मुश्किल और निष्पक्ष होना करने के लिए मिला.
वहाँ वेब पर इस परीक्षा के बारे में जानकारी का एक अपेक्षाकृत कमी है. मुझे यकीन नहीं कर रहा हूँ क्यों.
मैं स्पष्ट रूप से मैं लिया परीक्षा के बारे में किसी भी विस्तार में नहीं मिलेगा, लेकिन मुझे लगता है कि मैं सुरक्षित रूप से निम्न कह सकते हैं:
यह तुम क्या जरूरत है परीक्षा और इसे पारित करने के लिए पता करने के लिए सूचियाँ, IMO, बहुत सटीक.
अतिरिक्त श्रेणी: InfoPath
सारांश: एक InfoPath 2007 एक MOSS सर्वर पर वितरित प्रपत्र विक्रेताओं एक कस्टम काई सूची करने के लिए बंधे की एक ड्रॉप-डाउन सूची प्रदान करता है. एक विक्रेता के चयन पर, फ़ील्ड मान पाठ फ़ील्ड्स जैसे बिक्री प्रतिनिधि नाम की एक मुट्ठी भर के लिए नियम असाइन करें, पता, शहर, राज्य, ज़िप और फोन. प्रदर्शन भयानक है. हम सूचना है कि प्रदर्शन खराब हो जाता है (एक गैर-रैखिक फैशन में) प्रत्येक अतिरिक्त फ़ील्ड के लिए हम इस तरह से अद्यतन. यानी, अगर हम सिर्फ बिक्री प्रतिनिधि नाम अद्यतन करें, यह लेता है [एक्स] समय की राशि. अगर हम बिक्री प्रतिनिधि अद्यतन, address1, address2, शहर, राज्य, ज़िप, यह लेता है 10 अब बार.
समाधान: एक वेब सेवा लिखें (नमूना कोड पाया जा सकता यहाँ) कि एक विक्रेता के नाम पर पारित किया है और इसे वापस विक्रेता विवरण देता है. तब, इस तरह से फ़ील्ड असाइन करें. हालांकि यह भी लगता है धीमी गति से, प्रदर्शन में कोई discernable अंतर नहीं था जब हम सौंपा 1 फ़ील्ड बनाम 8 फ़ील्ड् स. एक जोड़ा बोनस के रूप में, उपयोगकर्ताओं को मिलता है एक शांत "सर्वर से संपर्क करने" Cylon वे आह्वान और सेवा परिणामों का उपभोग करने के लिए प्रपत्र के लिए प्रतीक्षा करते समय प्रभाव.
अद्यतन: हम कभी नहीं फिर से इस समस्या है और यह कभी नहीं सतह का मूल कारण निर्धारित.
हम एक साइट के विकास के कार्यान्वयन के दौरान सूचना है कि अचानक, दो उपयोगकर्ताओं को एक साइट संग्रह का उपयोग करने में असमर्थ रहे हैं. उन खातों को मुख्य साइट के लिए प्रमाणित कर सकते हैं, लेकिन जब एक विशेष साइट संग्रह तक पहुँचने के लिए कोशिश कर रहा, वे सिर्फ एक खाली स्क्रीन मिल. कोई त्रुटियाँ प्रदर्शित, सिर्फ एक सफेद रिक्त पृष्ठ.
हम एक साइट संग्रह व्यवस्थापक के रूप में लॉग इन करें और एक उन उपयोगकर्ताओं की एक साइट व्यवस्थापक और इस समय के रूप में जोड़ने के लिए प्रयास करें, "ठीक" दबाने पर, हम इस संदेश प्राप्त:
अपवाद आ गया. (HRESULT से अपवाद: 0एक्स 80020009 (DISP_E_EXCEPTION))
हम यह शोध कर कुछ समय बिताया और दुर्भाग्य से, कुछ उपयोगी के साथ आया था. नैदानिक लॉग में कुछ संदेश थे, लेकिन यह बिल्कुल उन्हें इस मुद्दे के साथ सहसंबंधी करने के लिए मुश्किल था.
अंत में, हम साइट संग्रह को हटाने और फिर से बनाया है और यह कि इसे हल.
अगर मैं यह पता लगाने क्या इस का भविष्य में कारण, मैं इस पोस्ट अद्यतन हूँ.