వర్గం ఆర్కైవ్స్: SharePoint

రహస్యమైన SharePoint లోపాలు పరిష్కరించడానికి ఎలా.

అవలోకనం:

Windows SharePoint సేవలు కోసం కస్టమ్ కార్యాచరణను అభివృద్ధి చేసినప్పుడు డీబగ్గింగ్ కష్టం 3.0 (WSS) లేదా Microsoft Office SharePoint Server (MOSS). The main culprit is that SharePoint normally surfaces very little diagnostic information on the web browser when an error occurs. This blog entry describes how to locate additional system-generated diagnostic information that can often provide that extra bit of detail that one needs in order to identify root causes. This can then lead to solving the problem.

నేను లేకపోతే రహస్యమైన లోపాలు పరిష్కరించడానికి గొప్ప విజయం తో ఈ పద్ధతిని ఉపయోగిస్తాయి.

విధానం:

SharePoint లో ఒక లాగ్ ఫైల్ లో ఒక విశ్లేషణ లాగ్ సమాచారాన్ని యొక్క ఒక గొప్ప ఒప్పందానికి ఆదా 12 అందులో నివశించే తేనెటీగలు.

The "12 hive" is usually located at "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12". (అది సాధ్యం ఉంటే నాకు ఖచ్చితంగా తెలియదు 12 ఎక్కడైనా నివసించడానికి అందులో నివశించే తేనెటీగలు, నిజానికి).

ఆలోచన ప్రస్తుత లాగ్ ఫైల్ ప్రతిపాదన ఉంది, force the error and then quickly open the log file. These log files are characterized by:

  • Copious amounts of information. SharePoint generates a very large amount of diagnostic information and writes it to that log file very quickly. You need to be quick with the fingers to capture it.
  • Multiplicity. SharePoint does not write to a single log file but rather generates multiple log files in sequence.
  • కాపీ మరియు MS Excel లోకి చక్కగా అతికించండి.

నా అభిమాన పద్ధతి:

  1. గురిపెట్టి ఒక విండోస్ ఎక్స్ప్లోరర్ తెరువు 12 అందులో నివశించే తేనెటీగలు లాగ్లను.
  2. చివరి మార్పు తేదీ ద్వారా చూపించడానికి వీక్షణ క్రమం (మొదటి ఇటీవలి).
  3. ప్రస్తుత లాగ్ ఫైల్ హైలైట్.
  4. ఒక వెబ్ బ్రౌజర్ విండోలో, లోపం సంభవించవచ్చు బలవంతం.
  5. త్వరగా ప్రస్తుత లాగ్ ఫైల్ను తెరవడం మరియు MS Excel దాని కంటెంట్లను కాపీ.
  6. ముగింపు ఇక్కడికి గెంతు మరియు సంబంధిత ఎంట్రీలు విశ్లేషించడానికి.

ఇతర గమనికలు:

అప్రమేయంగా, విశ్లేషణ లాగ్ లో ఉన్న 12 అందులో నివశించే తేనెటీగలు లాగ్లను డైరెక్టరీ.

MS ఉత్తమ పద్ధతులు (మైక్ T ద్వారా ఏస్. Microsoft యొక్క) state that the log files should be saved to a separate hard drive. One does this via central admin. Your system administrator may have done this, ఈ సందర్భంలో మీరు ఖచ్చితంగా ఎగవేత బదులుగా లాగ్ ఫైల్ కనుగొనేందుకు అవసరం ఇష్టం 12 అందులో నివశించే తేనెటీగలు నగర).

ఈ ఎంట్రీ వంటి సమస్యలను:

  • SharePoint వర్క్ఫ్లో అంతర్గత లోపం కారణంగా ప్రారంభం విఫలమైంది.
  • (ఎక్కువ సమయం పాటు చేయాలి)
  • ఈ ఎంట్రీ వర్క్ఫ్లో లోపాలు ఉపయోగపడిందా నిర్ధారించడంలో చెయ్యబడింది (ఉదాహరణకు. "The workflow failed to start due to an internal error").

MOSS: ఒక సంస్థ సమర్థవంతమైన పరిచయం

(ఈ ఎంట్రీ క్రాస్ మధ్య పోస్ట్ http://paulgalvin.spaces.live.com/blog/ మరియు http://blogs.conchango.com)

ఈ సైట్ కు పంపడం నా సొంత మరియు తప్పనిసరిగా Conchango యొక్క స్థానాలు ప్రాతినిధ్యం లేదు, వ్యూహాలు లేదా అభిప్రాయాలను.

అవలోకనం:

ఈ ఎంట్రీ పెద్ద న కొంత నేపథ్య సమాచారం వివరిస్తుంది (3,000 వినియోగదారులు) Microsoft Office SharePoint Server (MOSS) rollout and what we did to get the project rolling in such a way that the client is happy and firmly down a path that ends with full adoption of the MOSS feature set. As of the writing of the entry, మేము సుమారు ఉన్నాయి 50% complete with the first phase of the project. As things progress, నేను ఈ ఎంట్రీ అప్డేట్ మరియు / లేదా కొత్త ఎంట్రీలు వ్రాయడానికి ఉంటాం.

ఈ నిర్దిష్ట సందర్భంలో, the company had already installed SharePoint Portal Server 2003. The IT group installed the product in a sort of "let’s see if anyone cares" fashion. It was quickly adopted by many business users and became quite popular in the enterprise at large. మీరు ఊహించిన విధంగా, ఈ ఉత్తమ రోల్ అవుట్ వ్యూహం కాదు ఉంది (క్లయింట్ తక్షణమే అసూయపడటానికే చేశానని వెల్లడి చేస్తాడు ఇది) మరియు MOSS సన్నివేశం న వచ్చారు ఉన్నప్పుడు, the client resolved to "do it right" మరియు వాటిని సహాయం కు మాకు నియమించుకున్నారు.

మేము ఈ ప్రాజెక్ట్ అమలు ప్రారంభించారు ఉన్నప్పుడు మాకు ముఖంగా కేంద్ర ప్రశ్నలు యొక్క వన్ ఉంది: ఎలా మేము ఈ క్లయింట్ కు MOSS పరిచయం చెయ్యాలి? Given that the client already had experience with SharePoint, మేము ఆలోచిస్తున్నారా — do we need to do "differential" శిక్షణ లేదా మేము అప్ గ్రౌండ్ నుండి మొదలు చెయ్యాలి? After working with key users, we determined that treating this as a green field project made more sense.

That decision gave a starting point but still left us with the major requirement of figuring out a good strategy for rolling MOSS out to the enterprise. MOSS is such a big animal … it includes content management, పత్ర నిర్వహణ, అన్వేషణ, భద్రత, లక్ష్యంగా ప్రేక్షకుల, ప్రాజెక్ట్ నిర్వహణ, "fabulous forty" టెంప్లేట్లు, వర్క్ఫ్లో, వ్యాపార డేటా కనెక్టర్, మొదలైనవి. Couple this with the fact that it’s a large organization that చెయ్యవచ్చు నిజంగా దాదాపు ప్రతి ప్రధాన MOSS ఫీచర్ వినియోగించుకోవచ్చు మరియు మీరు ఏమి జరుగుతుందో ఒక సంస్థ దూరంగా మరియు అనేక మంచి విషయాలు ఒక గొప్ప ప్రాజెక్ట్ నిర్మించబడింది కలిగి.

మేము మళ్ళీ ఈ సమస్య సమయం మరియు సమయం ఎదుర్కొని చేస్తున్నారు … MOSS దాని సంస్థ ఫీచర్ సెట్ ఒక సంస్థ దూరంగా ఉంది, ఇంకా కూడా కొంతవరకు అధునాతన ఖాతాదారులకు మానసికంగా ఆ లక్షణాలు శోషక ఒక హార్డ్ సమయం, వారి రోజువారీ వాటిని యొక్క గణనీయమైన భాగం విలీనం విడదీసి.

I don’t have a magic solution to the problem. I instead address just the very first steps that we’ve taken with the client to lead them down the path to successful long-term adoption.

హద్దు:

As much as I wanted the team to craft a project plan that included such milestones as "PoepleSoft Integration via BDC Completed", "New Cross-Departmental Product Launch Workflow Complete" and "Executive Management KPI’s Accepted", I had to settle for something less. This is not to say that "less" చెడు. నిజానికి, the "less" that we decided for the initial rollout was miles ahead of where they were before we started. In our case, the "less" మారింది:

  • పత్రం లైబ్రరీలను ఉపయోగించి సాధారణ పత్రం నిర్వహణ, version control and content types.
  • కంటెంట్ రకాలు మరియు మలచుకొనిన ముందుగానే శోధన ఆధారంగా సమర్థవంతంగా శోధన (నిర్వహించేది లక్షణాలు ద్వారా, XSLT అందంగా ఫలితాలు, మొదలైనవి).

పైన వ్యాపార విస్తృత లక్షణములతో పాటు (వారు అన్ని విభాగాలు మరియు వినియోగదారులకు అందుబాటులోకి వచ్చింది ఉండాలి అంటే), మేము క్రింది సింగిల్టన్ లో దర్శిని చిన్న ప్రాజెక్టులు జోడించారు:

  • భావన BDC అనుసంధానం రుజువు.
  • SPD ద్వారా రూపొందించినవారు బహుళ దశల మరియు బహుళ శాఖ వర్క్ఫ్లో ప్రక్రియ.
  • కాంప్లెక్స్ InfoPath రూపం.
  • కొన్ని వ్యాపార ప్రక్రియ కోసం KPI యొక్క పైకి (మా విషయంలో బహుశా ఆర్ ప్రతిభను స్వాధీనం, ఆ మార్చవచ్చు అయితే).

ఇక్కడ పరిధిని కాదు 100% accurate but representative of our approach and sufficient for my purpose here, which is to explain what I consider to be an "effective" పూర్తి MOSS స్వీకరించడానికి దృఢముగా బంగారు మార్గం డౌన్ క్లయింట్ సెట్ చేస్తుంది MOSS పరిచయం.

I won’t write much more about the singleton in this entry. I do want to point out that these are part of our over-arching strategy. The idea is to implement the core document management and search features to all users yet provide highly functional, high visible and highly representative examples of other core MOSS features which are simply beyond the ability of most users to absorb at this early stage. అయితే, they will be "out there" మరియు ఒక ఇతర వ్యాపార యూనిట్లు తమను కోసం ఆ లక్షణాలను తెలుసు లేదా వాటిని గురించి తెలుసుకోవడానికి మరియు కావలసిన భావిస్తున్నాము, leading to greater adoption. These singleton success stories also serve to provide our sales team "ammunition" విజయవంతంగా రెండవ విజయం, third and n-phase projects.

మేము ఏ పరిచయం మరియు ఎందుకు తెలుసా?

ఒక ప్రామాణికం సంస్థ వ్యాప్తంగా అవసరం డాక్యుమెంట్ నిర్వహణ మరియు శోధన లో స్థిరపడ్డారు తరువాత, we needed to start gathering details. As a practical matter, ఈ వారి పత్రాలు అర్థం చుట్టూ తిరుగుతుంది మరియు చివరికి కంటెంట్ రకాల అర్థం మ్యాప్.

I’ve found it’s difficult to explain content types without visual aides. More technical folk can walk away from a discussion about content types when CT’s are described in database terms. "A CT is similar to a database table, కాలమ్లను కలిగి ఉంది మరియు నిలువు డేటా రకాల నిర్వచించబడతాయి, కానీ CT డేటా రకాలు సాధారణ పూర్ణాంక / తేదీ కంటే ఉన్నాయి, but also "choice" and "lookup" and the like." We can talk about "extending" కంటెంట్ రకాలు, much like one can inherit functionality from a base class in object oriented languages. However this is obviously not helpful for the transportation department admin person who has no technical background. అంటే, ఒక MOSS అందుబాటులోకి మాటర్స్ ఇన్ దాదాపు ప్రతి ఒక్కరూ.

Using a white board is iffy. I’ve presented the idea of a content type and drawn brilliant (లేదా వారు అనిపించవచ్చు) కంటెంట్ రకాల చిత్రాలు మరియు అవి ఏమి శోధన పరంగా మీరు ఏమి మరియు ఎలా వారు విస్తరించింది చేయవచ్చు, మొదలైనవి. చివరికి, కొన్ని కాంతి గడ్డలు ప్రారంభించారు వంటి అది అనుభూతి లేదు, but the resulting white board picture is a mess.

ఈ మా ప్రస్తుత మరియు ఇప్పటివరకు అత్యంత ప్రభావవంతమైన ల్యాండింగ్ ప్రదేశం మాకు దారితీసింది: ఒక MOSS sandbox సైట్ ఈ లక్షణాలను ప్రదర్శిస్తాయి కాన్ఫిగర్.

Sandbox సైట్ ఉపయోగించి, మేము ప్రదర్శించేందుకు:

  • కంటెంట్ రకాలు:
    • బహుళ డేటా రకాలను CT సృష్టిస్తోంది (టెక్స్ట్, తేదీ, ఎంపిక, బూలియన్, వెతికే, మొదలైనవి).
    • ఒక పేరెంట్ ఆధారంగా ఒక కొత్త CT సృష్టించడం ద్వారా ఒక CT పొడిగించడం.
    • CT మెటాడేటా ఉపయోగించి పత్రాలు కోసం శోధించండి.
  • డాక్యుమెంట్ గ్రంధాలయాలు:
    • ఒక లైబ్రరీ తో ఒకే CT అనుబంధిస్తోంది.
    • మేము ఆ లైబ్రరీ పత్రాన్ని అప్లోడ్ ఏమి జరుగుతుంది?
    • ఒక డిఓసి లైబ్రరీ తో బహుళ CT యొక్క అనుబంధిస్తోంది.
    • మేము ఆ లైబ్రరీ పత్రాన్ని అప్లోడ్ ఏమి జరుగుతుంది?
    • ఒక డిఓసి lib లో నిలువువరుస హెడింగ్స్ ద్వారా వడపోత మరియు సార్టింగ్.
    • డాక్యుమెంట్ లైబ్రరీ వీక్షణలు:
      • సార్టింగ్
      • గ్రూపింగ్
      • "Quick entry" (డేటా షీట్ వీక్షణ)
      • "Untagged data" (ఇతర కంటెంట్ మూలాల నుండి MOSS మైగ్రేషన్ సహాయం; మరింత ఈ క్రింది న).

శాండ్బాక్స్ సైట్:

మేము ప్రాజెక్టు పూర్తి మరియు పేర్కొన్న అనేక కళాఖండాల కూడా చాలా కాలం తరువాత శిక్షణ అవసరాలు కోసం ఉపయోగిస్తారు అభివృద్ధి వాతావరణంలో శాశ్వత లక్షణం ఉంటుంది మా sandbox సైట్ రూపకల్పన:

కంటెంట్ రకాలు:

మేము ఈ క్రింది కంటెంట్ రకాలని నిర్వచించిన: వాయిస్, ఆర్డర్ కొనుగోలు, సేవలు వాయిస్.

వారు ఎక్కువ లేదా తక్కువ విశ్వవ్యాప్తంగా ఉన్నాయి ఎందుకంటే మేము వాయిస్ మరియు కొనుగోలు ఆర్డర్ ఎంపిక
stood entities. Everyone in business understands that an invoice is a demand for payment to a ఖాతాదారు ఒక కోసం మొత్తం ఒక నిర్దిష్ట జారీ తేదీ కొన్ని ప్రకారం చెల్లించాలి చెల్లింపు నిబంధనలు. This leads to a natural definition of a CT which we called "Training Invoice" (ఇన్వాయిస్ ఇతర రకాల నుండి వేరు చేయడానికి). The purchase order is similarly easily defined. We also created a "Training Services Invoice" by creating a new CT based upon the "Training Invoice" CT మరియు కేవలం ఒక కాలమ్ జోడించారు, "services rendered".

పైన ఉన్న, మేము ఇప్పుడు మొదటి ఒక అమూర్త భావన అనేది ఎప్పుడూ వాటిని వివరించడానికి ప్రయత్నించే డౌన్ అక్కడే ఉండేటట్టు చేసి పడకుండా లేకుండా CT యొక్క యొక్క కొన్ని కీ లక్షణాలను ప్రదర్శించేందుకు చేయవచ్చు; everyone already understands what we mean by "invoice" and "purchase order" మరియు బదులుగా CT తనకు తానుగా యొక్క మెకానిక్స్ పై దృష్టి కేంద్రీకరించే సౌలభ్యాన్ని ఉన్నాయి.

కస్టమ్ జాబితాలు:

CT with columns of type "lookup" point to a custom list or document library. We use this extensively and for the sandbox, we created one supporting custom list that contains customers. We picked customers because it’s an easy concept to understand and easy to demonstrate. The Invoice CT has a column, "customer" that is defined of type "lookup" that points at this list.

We created a similar custom list to manage "vendors" for the "Purchase Order" CT.

డాక్యుమెంట్ గ్రంధాలయాలు:

మేము రెండు పత్రం గ్రంధాలయాలు రూపొందించినవారు: "Invoices" and "Mixed Documents".

We configured the invoices document library to manage only documents of CT type "Invoice".

We configured the "Mixed Documents" మూడు CT యొక్క నిర్వహించడానికి లైబ్రరీ.

సార్టింగ్ చూపించే అనేక వీక్షణలు సృష్టించు, వడపోత, డేటా షీట్ మరియు గుంపులతో.

శోధించండి:

మేము రెండు కొత్త నిర్వహించేది లక్షణాలు నిర్వచించిన మరియు వాయిస్ సంఖ్య మరియు కస్టమర్ వాటిని మ్యాప్.

We created a new customized advance search site and modified it to enable users to search for "invoices" ఆ రెండు మాప్ లక్షణాలను ఉపయోగించి.

XSLT మార్చే కాబట్టి వాయిస్ మరియు కస్టమర్ సంఖ్య, అక్కడున్న, appear in an HTML table in a bright color. The objective here is to demonstrate that such formatting is possible.

కలిసి అన్ని పెట్టటం:

కీ వినియోగదారులు ఒక డెమో పాల్గొనేందుకు కోసం మేము ఏర్పాట్లు.

మేము ఈ సాధారణ లిపి అనుసరించండి:

  1. ఒక CT యొక్క అర్థం మరియు ప్రయోజనం వివరించండి, ఉదాహరణలుగా ఇన్వాయిస్లు మరియు కొనుగోలు ఉత్తర్వులు ఉపయోగించి.
  2. ఏకకాలంలో ఆ తెరలను తమను ఉపయోగించడానికి అవసరం లేని వాటిని భరోసా ఇస్తూ అనుకోకుండా ఇన్వాయిస్ CT నిర్వచనం చూపించు, కేవలం భావాలు తీయటానికి.
  3. ఇన్వాయిస్లు పత్రం లైబ్రరీ వెళ్ళండి.
  4. ఒక పత్రం అప్లోడ్.
  5. కస్టమర్ డ్రాప్ డౌన్ నిజంగా ఒక కస్టమ్ జాబితా మూలం అని ప్రదర్శించండి.
  6. కస్టమర్ జాబితా ఒక ను జోడించండి మరియు కొత్తగా రూపొందించినవారు కస్టమర్ ఇటీవల అప్లోడ్ వాయిస్ యొక్క మెటా డేటా అప్డేట్.
  7. Switch to the "mixed documents" library and upload a document. Explain how the system prompts for a document type.
  8. Go back to invoices document library and show how clicking on a column name changes sort order.
  9. కాలమ్ స్థాయి వడపోత ప్రదర్శించండి.
  10. బహుళస్థాయి విభజన ప్రదర్శించేందుకు వివిధ వీక్షణలు చూపించు, వడపోత మరియు గ్రూపింగ్.
  11. డేటా షీట్ వీక్షణను చూపించు.
  12. Explain the purpose of a "untagged documents" వీక్షించడానికి.
  13. అనుకూలీకరించిన ఆధునిక శోధన మారండి.
  14. ఇప్పుడు ద్వారా, ఇటీవల అప్లోడ్ పత్రం క్రాల్ మరియు ఇండెక్స్ వుండాలి, కాబట్టి మాప్ ఆస్తి ద్వారా ఆ వాయిస్ గుర్తించడం సామర్థ్యం చూపించే శోధించు.
  15. మేము Vs మాప్ లక్షణాలను ద్వారా శోధించడం మధ్య వ్యత్యాసం ప్రదర్శించేందుకు. కేవలం ఒక టెక్స్ట్ శోధన.

ఈ సమయంలో, we are more or less done with the demo. It seems to take about 30 కు 45 నిమిషాల, ప్రజలను అడుగుతూ ఎన్ని ప్రశ్నలు ఆధారంగా.

We then send them back to their desks with "homework". This consists of a simple excel spreadsheet where we ask them to define for us what they think they need in terms of CT’s, అధిక స్థాయిలో రెండు (కేవలం పేరు మరియు వ్యాపార ప్రయోజనం) as well as columns and type of data they would store in the column. We don’t ask them to define column data types in MOSS terms, but business terms.

సారాంశం:

We’ve created a sandbox environment that we can use to demonstrate some core MOSS features whose appeal are enterprise-wide.

We have modeled easily understood and common business entities so that users can focus on MOSS and not get bogged down on the entities / ఉదాహరణలు తమను.

Business users walk away from theses sessions with "homework" వారు ఇప్పుడు పూర్తి మరియు వారి స్వంత ప్రథమ కట్ కంటెంట్ రకాల రూపకల్పన కోసం ఉపయోగించడానికి ఇవ్వగలవు ఇది ఎక్సెల్ పత్రాలు రూపంలో.

చివరకు, కొంతకాలం తర్వాత మేము ప్రదర్శనలు నిర్వహించేందుకు వంటి, క్లయింట్ యొక్క జట్టు సభ్యులు తమను ముందుకు తీసుకుని మరింత సక్రమంగా, డెమో యొక్క తమను మరియు క్లిష్టమైన అంశాలపై పని వరకు మాకు మిగిలిన అప్ సాధారణంగా ఉచిత చేయండి, అంతర్జాతీయ వర్గీకరణ శాస్త్రంగా, క్లిష్టమైన పనితీరుకు, BDC మరియు వంటి.

MOSS: ఫంక్షనల్ ఉదాహరణ - కస్టమ్ డేటా రకం

వ్యాపారం దృశ్య:

తయారీ సంస్థ కోసం MOSS యొక్క Enterprise వ్యాప్తంగా అమలు తో 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 = .అంతర్గత పేరు;
తిరిగి 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, వెర్షన్ = 12.0.0.0, సంస్కృతి = తటస్థ, PublicKeyToken = 71e9bce111e9429c" %> <%@ నమోదు Tagprefix="SharePoint" నేంస్పేసు="Microsoft.SharePoint.WebControls" సభ="Microsoft.SharePoint, వెర్షన్ = 12.0.0.0, సంస్కృతి = తటస్థ, PublicKeyToken = 71e9bce111e9429c" %>
<SharePoint:రెండరింగ్ మూస ID="XYZZYCorporateLocationFieldControl" runat="server">
<మూస>
<కాలసర్పం:DropDownList ID="XYZZYCorporateLocationSelector" runat="server" />
</మూస>
</
SharePoint:రెండరింగ్ మూస>

పైన సి లోకి సేవ్ ఉంది:\కార్యక్రమ ఫైళ్ళు సాధారణ ఫైళ్ళు మైక్రోసాఫ్ట్ షేర్డ్ వెబ్ సర్వర్ పొడిగింపులు 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 మరియు అన్ని చక్కగా పని మొదలు ఉండాలి.

MOSS: కస్టమ్ జాబితా నవీకరిస్తోంది

SDK ద్వారా కస్టమ్ జాబితాలు నవీకరించుటకు అనేక మంచి ఉదాహరణలు ఉన్నాయి. ఇక్కడ మరో ఉంది.

వ్యాపారం సమస్య: InfoPath రూపం వినియోగదారులు ఆన్లైన్ కొనుగోలు అభ్యర్థనలకు ఎంటర్ చెయ్యడానికి రూపొందించబడింది. PO వ్రాతపూర్వకమైన ఆదేశము సంఖ్యలు సాంప్రదాయిక సన్నివేశాన్ని ఆధారిత పూర్ణాంక విలువలను మరియు స్వయంచాలకంగా లెక్కించిన ఉండాలి.

వ్యాపారం సొల్యూషన్: రెండు నిలువు కలిగి కస్టమ్ MOSS జాబితా సృష్టించు: "ControlField" and "ControlValue". విలువ కాలమ్ తదుపరి కొనుగోలు వ్రాతపూర్వకమైన ఆదేశము సంఖ్యను కలిగి. Note that the generic "control" సమావేశం నామకరణ అవసరమైన ఉపయోగించే భవిష్యత్ నియంత్రణ ఖాళీలను అందిస్తుంది.

సాంకేతిక పరిష్కారం: InfoPath క్లయింట్ ప్రాప్తి ఒక వెబ్ సేవ సృష్టించు. వెబ్ సేవ తిరిగి తదుపరి కొనుగోలు వ్రాతపూర్వకమైన ఆదేశము సంఖ్య మరియు నవీకరణలను జాబితా విలువ తిరిగి.

నేర్చుకున్న పాఠాలు:

  • InfoPath రూపం ఒక డేటా మూలం వెబ్ సేవ చేర్చేటప్పుడు, నేను అవసరం ఒక UDC మార్పిడి మరియు ఒక డేటా కనెక్షన్ లైబ్రరీ లోకి నిల్వ కనుగొన్నారు.
  • నేను కూడా ఇది అవసరం కేంద్ర సేవలు పరిపాలన ద్వారా క్రాస్ డొమైన్ స్క్రిప్టింగ్ ప్రారంభించడానికి దొరకలేదు // అప్లికేషన్ నిర్వహణ // రూపం సర్వర్ కాన్ఫిగరేషన్.
  • మొదటిసారి రూపం వెబ్ సేవ యాక్సెస్ చేసేందుకు ప్రయత్నించారు, కొంత సమయం పడుతుంది మరియు సందర్భంగా, దాన్ని సమయం ఉంటుంది. నేను సమయం ముగిసింది సెట్టింగులను విస్తరించేందుకు రూపం సర్వర్ కాన్ఫిగరేషన్ సెట్టింగులు తో fiddled మరియు సహాయం కనిపించింది.

కోడ్:

ఉపయోగించి వ్యవస్థ;
ఉపయోగించి System.Web;
ఉపయోగించి System.Web.Services;
ఉపయోగించి System.Web.Services.Protocols;
ఉపయోగించి Microsoft.SharePoint;
ఉపయోగించి System.Configuration;

[WebService(Namespace = "http://www.conchango.com/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
ప్రజా తరగతి PoService : System.Web.Services.WebService
{
ప్రజా PoService () {

//Uncomment the following line if using designed components
//InitializeComponent();
}

/// <సంగ్రహము>
/// Obtain the next PO number from the sharepoint po number control list.
/// Increment the PO number in that list.
/// </సంగ్రహము>
/// <తిరిగి></తిరిగి>
[WebMethod]
ప్రజా తీగ GetNextPoNumber()
{
తీగ SpPoControlSiteName; // Name of the actual MOSS site that hosts the PO Control list.
తీగ SpPoControlListName; // Name of the actual MOSS list containing the Po control.

SpPoControlSiteName = కాన్ఫిగరేషన్ సెట్టింగులను.AppSettings["PoControlListHostingSite"].ToString();
SpPoControlListName = కాన్ఫిగరేషన్ సెట్టింగులను.AppSettings["PoControlList"].ToString();

తీగ nextPoReqNumber = "xyzzy";

ఉపయోగించి (SPSite site = కొత్త SPSite(SpPoControlSiteName))
{
ఉపయోగించి (SPWeb web = site.OpenWeb())
{

SPList currentList = web.Lists[SpPoControlListName];

foreach (ఉమ్మి controlItem లో currentList.Items)
{

అయితే (((తీగ)controlItem["ControlField"]).సమానం("NextPoNumber"))
{
nextPoReqNumber = (తీగ)controlItem["ControlValue"];

Int int_nextPoReqNumber;
int_nextPoReqNumber = రూపంలో మార్పు తెచ్చు.ToInt32(nextPoReqNumber);

int_nextPoReqNumber ;

controlItem["ControlValue"] = int_nextPoReqNumber;
controlItem.Update();
}

} // Locating, reading and updating the PO number in the list.


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

తిరిగి nextPoReqNumber;

}
}