קאַטעגאָריע אַרטשיוועס: שאַרעפּאָינט

ווי צו טראָובלעשאָאָט מיסטעריעז שאַרעפּאָינט ערראָרס.

איבערבליק:

דיבאַגינג איז שווער ווען דעוועלאָפּינג מנהג פאַנגקשאַנאַליטי פֿאַר ווינדאָוז שאַרעפּאָינט באַדינונגס 3.0 (ווסס) אָדער מייקראָסאָפֿט אָפיס שאַרעפּאָינט סערווירער (מאָך). 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.

איך האב געניצט דעם טעכניק מיט גרויס הצלחה צו סאָלווע אַנדערש מיסטעריעז ערראָרס.

צוגאַנג:

שאַרעפּאָינט סאַוועס אַ גרויס האַנדלען פון אינפֿאָרמאַציע צו אַ דיאַגנאָסטיק קלאָץ אין אַ קלאָץ טעקע אין די 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.
  • קאָפּי און פּאַפּ נייסלי אין מס עקססעל.

מייַן באַליבט אופֿן:

  1. עפענען זיך אַ Windows Explorer פּוינטינג צו די 12 כייוו לאָגס.
  2. סאָרט די מיינונג צו ווייַזן דורך מאַדאַפייד דאַטע (רובֿ פריש ערשטער).
  3. הויכפּונקט די מערסט קראַנט קלאָץ טעקע.
  4. אין אַ וועב בלעטערער פֿענצטער, קראַפט דער טעות צו פאַלן.
  5. געשווינד עפענען דעם קראַנט קלאָץ טעקע און נאָכמאַכן זייַן אינהאַלט צו מס עקססעל.
  6. שפרינג צו דער סוף און פונאַנדערקלייַבן די באַטייַטיק איינסן.

אנדערע נאָטעס:

דורכ פעליקייַט, די דיאַגנאָסטיק קלאָץ איז ליגן אין די 12 כייוו לאָגס Directory.

מס בעסטער פּראַקטאַסאַז (ווי פּער מייק ה. פון מייקראָסאָפֿט) 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 כייוו אָרט).

דעם פּאָזיציע ווענדט ישוז אַזאַ ווי:

  • שאַרעפּאָינט וואָרקפלאָוו ניט אַנדערש צו אָנהייבן רעכט צו אַן ינערלעך טעות.
  • (מער צו זייַן צוגעגעבן איבער צייַט)
  • דעם פּאָזיציע האט שוין נוציק דייאַגנאָוסינג וואָרקפלאָוו ערראָרס (e.g. "The workflow failed to start due to an internal error").

מאָך: עפעקטיוו הקדמה צו אַן ארגאניזאציע

(דעם פּאָזיציע קרייַז אַרייַנגעשיקט צווישן http://paulgalvin.spaces.live.com/blog/ און http://blogs.conchango.com)

די פּאָוסטינגז אויף דעם פּלאַץ זענען מיין אייגן און טאָן ניט דאַווקע פאָרשטעלן קאָנטשאַנגאָ ס שטעלעס, סטראַטעגיעס אָדער מיינונגען.

איבערבליק:

דעם פּאָזיציע באשרייבט עטלעכע הינטערגרונט אינפֿאָרמאַציע אויף אַ גרויס (3,000 ניצערס) מיקראָסאָפט אָפפיסע שאַרעפּאָינט סערווירער (מאָך) 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. ווי איר קענען ימאַדזשאַן, דאָס איז ניט דער בעסטער ראָולאַוט סטראַטעגיע (וואָס דער קליענט גרינג אַדמיץ) און ווען מאָך אנגעקומען אויף דער סצענע, the client resolved to "do it right" און כייערד אונדז צו העלפן זיי.

איינער פון די הויפט שאלות פייסינג אונדז ווען מיר אנגעהויבן ימפּלאַמענטינג דעם פּרויעקט איז געווען: ווי טאָן מיר באַקענען מאָך צו דעם קליענט? 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 קענען באמת מאַכן נוצן פון כמעט יעדער הויפּט מאָך שטריך און איר האָבן די מייקינגז פון אַ גרויס פּרויעקט מיט אַ פאַרנעמונג דערגרייכן און פילע גוט דאס געשעעניש.

מיר ניטאָ קאָנפראָנטעד מיט דעם אַרויסגעבן צייַט און צייַט ווידער … מאָך האט אַ פאַרנעמונג דערגרייכן מיט זייַן פאַרנעמונג שטריך-שטעלן, נאָך אַפֿילו עפּעס סאַפיסטאַקייטיד קלייאַנץ האָבן אַ שווער צייַט מענטאַלי אַבזאָרבינג יענע פֿעיִקייטן, לאָזן אַליין ינקאָרפּערייטינג אַ מאַמאָשעסדיק בראָכצאָל פון זיי אין זייער טעגלעך רוטין.

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.
  • עפעקטיוו זוכן באזירט אויף צופרידן טיפן און קאַסטאַמייזד שטייַגן זוכן (דורך געראטן פּראָפּערטיעס, קססלט צו פּראָדוצירן שיין רעזולטאַטן, אאז"ו ו).

אין דערצו צו די אויבן פאַרנעמונג-ברייט פֿעיִקייטן (טייַטש אַז זיי זענען געווען צו ווערן ראָולד אויס צו אַלע דיפּאַרטמאַנץ און ניצערס), מיר צוגעגעבן דעם ווייַטערדיק סינגגאַלטאַן אין-פאַרנעם מיני-פראיעקטן:

  • דערווייַז פון באַגריף בדק ינטאַגריישאַן.
  • מולטי-שריט און מאַלטי-צווייַג וואָרקפלאָוו פּראָצעס באשאפן דורך ספּד.
  • קאָמפּלעקס ינפאָפּאַטה פאָרעם.
  • סורפאַסינג קפּי ס פֿאַר עטלעכע געשעפט פּראָצעס (מיסטאָמע הר טאַלאַנט אַקוואַזישאַן אין אונדזער פאַל, כאָטש וואָס זאל טוישן).

דער פאַרנעם דאָ איז ניט 100% accurate but representative of our approach and sufficient for my purpose here, which is to explain what I consider to be an "effective" הקדמה פון מאָך אַז וועט שטעלן דעם קליענט פעסט אַראָפּ די גאָלדען דרך צו פול מאָך קינדער.

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, עס האט שפאלטן און שפאלטן זענען דיפיינד אין טערמינען פון דאַטן טייפּס, אָבער קאָרט דאַטן טייפּס אַרייַננעמען מער ווי פּשוט ינטאַדזשער / דאַטע, 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. י.ע., קימאַט אַלעמען אַז ענינים אין אַ מאָך ראָולאַוט.

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.

דאס געפירט אונדז צו אונדזער איצטיקן און אַזוי ווייַט רובֿ עפעקטיוו לאַנדינג אָרט: אַ מאָך זאַמדקאַסטן פּלאַץ קאַנפיגיערד צו ווייַזן די פֿעיִקייטן.

ניצן די זאַמדקאַסטן פּלאַץ, מיר באַווייַזן:

  • אינהאַלט טייפּס:
    • שאפן אַ קאָרט מיט קייפל דאַטן טייפּס (טעקסט, דאַטע, אָפּגעקליבן, באָאָלעאַן, לאָאָקופּ, אאז"ו ו).
    • יקסטענדינג אַ קאָרט דורך שאפן אַ נייַ קאָרט באזירט אויף אַ פאָטער.
    • שאַרף פֿאַר דאָקומענטן ניצן קאָרט מעטאַדאַטאַ.
  • דאָקומענט לייברעריז:
    • אַססאָסיאַטינג אַ איין קאָרט מיט אַ ביבליאָטעק.
    • וואָס כאַפּאַנז ווען מיר צופֿעליקער אַ דאָקומענט צו אַז ביבליאָטעק?
    • אַססאָסיאַטינג קייפל קאָרט 'ס מיט אַ שולדבאַנק ביבליאָטעק.
    • וואָס כאַפּאַנז ווען מיר צופֿעליקער אַ דאָקומענט צו אַז ביבליאָטעק?
    • פֿילטרירונג און סאָרטינג דורך זייַל כעדינגז אין אַ שולדבאַנק ליב.
    • דאָקומענט ביבליאָטעק קוקן:
      • סאָרטינג
      • גרופּינג
      • "Quick entry" (דאַטן בלאַט מיינונג)
      • "Untagged data" (צו אַרוישעלפן מיט מייגריישאַן צו מאָך פון אנדערע צופרידן קוואלן; מער אויף דעם אונטן).

די סאַנדבאָקס מאַפּע:

מיר דיזיינד אונדזער זאַמדקאַסטן פּלאַץ צו זייַן אַ שטענדיק שטריך אין דער אַנטוויקלונג סוויווע צו זייַן געניצט פֿאַר טריינינג צוועקן לאַנג נאָך מיר ענדיקן די פּרויעקט און אַרייַנגערעכנט עטלעכע אַרטאַפאַקץ ווי דיסקרייבד:

אינהאַלט טייפּס:

מיר דיפיינד די ווייַטערדיק צופרידן טייפּס: ינווויס, קויפן סדר, באַדינונגס ינוואָיסע.

מיר אויסגעקליבן ינוואָיסע און קויפן סדר ווייַל זיי זענען מער אָדער ווייניקער יונאַווערסאַלי אונטער
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" קאָרט און צוגעגעבן נאָר איין זייַל, "services rendered".

מיט די אויבן, מיר קענען איצט באַווייַזן עטלעכע שליסל פֿעיִקייטן פון קאָרט ס אָן געטינג באָגד אַראָפּ טריינג צו דערקלערן אַ אַבסטראַקט באַגריף ערשטער; everyone already understands what we mean by "invoice" and "purchase order" און ביסט אַנשטאָט קענען צו פאָקוס אויף מאַקאַניקס פון די קאָרט זיך.

מנהג ליס:

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" קאָרט.

דאָקומענט לייברעריז:

מיר באשאפן צוויי דאָקומענט לייברעריז: "Invoices" and "Mixed Documents".

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

We configured the "Mixed Documents" ביבליאָטעק צו פירן אַלע דרייַ קאָרט ס.

שאַפֿן עטלעכע קוקן וואָס ווייַזן סאָרטינג, פֿילטרירונג, דאַטן בלאַט און גרופּינג.

זוכן:

מיר דיפיינד צוויי נייַ געראטן פּראָפּערטיעס און מאַפּט זיי צו ינוואָיסע נומער און קונה.

We created a new customized advance search site and modified it to enable users to search for "invoices" ניצן די צוויי מאַפּט פּראָפּערטיעס.

מאָדיפיצירן די קססלט אַזוי אַז די ינווויס און קונה נומער, ווען פאָרשטעלן, appear in an HTML table in a bright color. The objective here is to demonstrate that such formatting is possible.

פּאַטינג עס אַלע צוזאַמען:

מיר צולייגן פֿאַר שליסל ניצערס צו אָנטייל נעמען אין אַ דעמאָ.

מיר נאָכגיין דעם פּשוט שריפט:

  1. באַשרייַבן די טייַטש און ציל פון אַ קאָרט, ניצן ינווויסיז און קויפן אָרדערס ווי ביישפילן.
  2. ווייַזן די ינווויס קאָרט דעפֿיניציע בשעת סיימאַלטייניאַסלי אַשורינג זיי אַז זיי טאָן ניט דאַרפֿן צו נוצן יענע סקרינז זיך, נאָר קלייַבן זיך די קאַנסעפּס.
  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. מיר באַווייַזן די חילוק צווישן שאַרף דורך מאַפּט פּראָפּערטיעס ווס. נאָר אַ טעקסט זוכן.

אין דעם פונט, 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" אין די פאָרעם פון עקססעל דאָקומענטן וואָס זיי זענען איצט קאָמפּעטענט צו פּלאָמבירן אויס און נוצן פֿאַר דיזיינינג זייער אייגן ערשטער-שנייַדן צופרידן טייפּס.

לעסאָף, ווי מיר דורכפירן דעמאָס איבער צייַט, דער קליענט 'ס מאַנשאַפֿט מיטגלידער זיך ווערן מער קענען צו פירן פאָרויס, טאָן די דעמאָ ס זיך און בכלל פֿרייַ אַרויף די מנוחה פון אונדז אַרויף צו אַרבעטן אויף מער קאָמפּליצירט ישוז, אַזאַ ווי גלאבאלע טאקסאנאמיע, קאָמפּלעקס וואָרקפלאָווס, בדק און די ווי.

מאָך: פאַנגקשאַנאַל בייַשפּיל - מנהג דאַטאַ טיפּ

ביזנעס סינעריאָו:

ענטערפּרייז-ברייט ימפּלאַמענטיישאַן פון מאָך פֿאַר מאַנופאַקטורינג פירמע מיט 30+ זייטלעך און אַ ביסל טוץ פֿירמע דיפּאַרטמאַנץ.

ביזנעס אָביעקטיוו:

טראָץ אַ פאלק פון געשעפט גרופּעס (דיפּאַרטמאַנץ, לאָוקיישאַנז, אאז"ו ו), זיכער דאַטן זאָל זייַן מיינטיינד אין אַ גלאבאלע מדרגה. לעמאָשל, אַ אַטאָראַטייטיוו בעל רשימה פון אַלע גשמיות לאָוקיישאַנז פון דער פירמע (e.g. מאַנופאַקטורינג פאַסילאַטיז, ווערכאַוס לאָוקיישאַנז, פארקויפונג אָפאַסיז) זאָל זייַן מיינטיינד אין אַ הויפט אָרט.

טעכניש פּראָבלעם:

די ענטערפּרייז טאקסאנאמיע איז ימפּלאַמענאַד ניצן קייפל פּלאַץ זאמלונגען. מיר וואָלט האָבן לייקט צו מאַכן די אַטאָראַטייטיוו רשימה פון גשמיות לאָוקיישאַנז אין אַ מנהג ווסס רשימה. דעמאָלט, ווען מיר דארף צו האָבן אַ זייַל אין אַ צופרידן טיפּ (אָדער אַ זייַל צוגעגעבן צו אַ רשימה אָדער שולדבאַנק ביבליאָטעק) אַז קאַנטיינד פֿירמע לאָוקיישאַנז, we would create a column using the "lookup" מאלטיזיש און פונט צו דעם בעל רשימה.

צומ באַדויערן, lookup datatypes must access a source list "locally" טייַטש אַז אונדזער אַטאָראַטייטיוו רשימה קענען נישט שפּאַן פּלאַץ זאמלונגען.

טעכניש סאַלושאַן:

ינסטרומענט אַ נייַ מנהג דאַטן טיפּ ימפּלאַמענאַד באזירט אויף ספּפיעלד און רעפּריזענטיד ווי אַ דראָפּדאָוונליסט אין די וי וועמענס ליסטיטעמס באַפעלקערן פון דעם בעל ווסס רשימה.

מיר באשאפן אַ נייַ פּלאַץ זאַמלונג גערופן "http://localhost/EnterpriseData". דאָרט, we created a custom list named "Corporate Locations". This list just uses the standard "Title" פעלד צו אַנטהאַלטן די רשימה פון פאַקטיש פֿירמע לאָוקיישאַנז.

איינער גייט עטלעכע דיסקרעטע טריט צו שאַפֿן אַ מנהג דאַטן טיפּ אין ווסס. זיי זענען:

  1. דעפינירן אַ סאָרט וואָס ינכעראַץ פון ספּפיעלד (איינער קען ירשענען פון אנדערע פעלדער אויב פארלאנגט).

דאָ איז די קאָד פֿאַר וואָס:

עפנטלעך קלאַס קסיזזיקאָרפּאָראַטעלאָקאַטיאָנפיעלד : ספּפיעלדטעקסט
{
עפנטלעך קסיזזיקאָרפּאָראַטעלאָקאַטיאָנפיעלד
(ספּפיעלדקאָללעקטיאָן פעלדער, שטריקל typeName, שטריקל displayName)
: באַזע(פעלדער, typeName, displayName) { }

עפנטלעך קסיזזיקאָרפּאָראַטעלאָקאַטיאָנפיעלד
(ספּפיעלדקאָללעקטיאָן פעלדער, שטריקל displayName)
: באַזע(פעלדער, displayName) { }

עפנטלעך אָווועררייד באַסעפיעלדקאָנטראָל FieldRenderingControl
{
באַקומען
{
באַסעפיעלדקאָנטראָל control = נייַ קסיזזיקאָרפּאָראַטעלאָקאַטיאָנפיעלדקאָנטראָל();
control.FieldName = דעם.ינערלעך נאָמען;
צוריקקומען control;
} //באַקומען
} // fieldrenderingcontrol

עפנטלעך אָווועררייד שטריקל געטוואַלידאַטעדסטרינג(כייפעץ ווערט)
{
צי (דעם.Required || value.ToString().יקוואַלז(שטריקל.ליידיק))
{
וואַרפן נייַ ספּפיעלדוואַלידאַטיאָנעקססעפּטיאָן ("Department is not assigned.");
}
צוריקקומען באַזע.געטוואַלידאַטעדסטרינג(ווערט);
} // getvalidatedstring

} // קסיזזיקאָרפּאָראַטעלאָקאַטיאָן

  1. דעפינירן אן אנדער סאָרט אַז ינכעראַץ פון די באַזע פעלד קאָנטראָל, ווי אין:

עפנטלעך קלאַס קסיזזיקאָרפּאָראַטעלאָקאַטיאָנפיעלדקאָנטראָל : באַסעפיעלדקאָנטראָל
{
פּראָטעקטעד דראָפּדאָוונליסט XYZZYCorporateLocationSelector;

פּראָטעקטעד אָווועררייד שטריקל DefaultTemplateName
{
באַקומען
{
צוריקקומען "XYZZYCorporateLocationFieldControl";
}
} // DefaultTemplateName

עפנטלעך אָווועררייד כייפעץ ווערט
{
באַקומען
{
EnsureChildControls();
צוריקקומען דעם.קסיזזיקאָרפּאָראַטעלאָקאַטיאָנסעלעקטאָר.סעלעקטעדוואַלוע;
} // באַקומען
שטעלן
{
EnsureChildControls();
דעם.XYZZYCorporateLocationSelector.SelectedValue = (שטריקל)דעם.יטעמפיעלדוואַלוע;
} // שטעלן
} // override object Value

פּראָטעקטעד אָווועררייד פּאָסל קרעאַטעטשילדקאָנטראָלס()
{

צי (דעם.Field == נול || דעם.ControlMode == ספּקאָנטראָלמאָדע.אַרויסווייַזן)
צוריקקומען;

באַזע.קרעאַטעטשילדקאָנטראָלס();

דעם.XYZZYCorporateLocationSelector =
(דראָפּדאָוונליסט)טעמפּלאַטעקאָנטאַינער.פינדקאָנטראָל("XYZZYCorporateLocationSelector");

צי (דעם.XYZZYCorporateLocationSelector == נול)
וואַרפן נייַ ויסנעם("ERROR: Cannot load .ASCX file!");

צי (!דעם.פּאַגע.יספּאָסטבאַקק)
{

ניצן (ספּסיטע site = נייַ ספּסיטע("http://לאָקאַלהאָסט / ענטערפּריסעדאַטאַ"))
{
ניצן (ספּוועב web = site.OpenWeb())
{

ספּליסט currentList = web.Lists["Corporate Locations"];

פאָרעאַטש (שפּייַען קסיזזיקאָרפּאָראַטעלאָקאַטיאָן אין currentList.Items)
{
צי (קסיזזיקאָרפּאָראַטעלאָקאַטיאָן["Title"] == נול) פאָרזעצן;

שטריקל טהעטיטלע;
theTitle = XYZZYCorporateLocation["Title"].טאָסטרינג();

דעם.XYZZYCorporateLocationSelector.Items.Add
(נייַ ליסטיטעם(טהעטיטלע, טהעטיטלע));

} // פאָרעאַטש

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

} // if not a postback

} // קרעאַטעטשילדקאָנטראָלס

} // קסיזזיקאָרפּאָראַטעלאָקאַטיאָנפיעלדקאָנטראָל

די אויבן קאָד בייסיקלי ימפּלאַמאַנץ די לאָגיק פֿאַר פּאַפּיאַלייטינג די דראָפּדאָוונליסט מיט וואַלועס פון די ווסס מנהג רשימה ליגן בייַ http://localhost/enterprisedata and named "Corporate Departments".

איך דיפיינד ביידע קלאסן אין אַ איין. קס טעקע, צונויפגעשטעלט עס און לייגן עס אין די גאַק (שטאַרק פארלאנגט, אַוואַדע).

  1. ינסטרומענט אַ קאָנטראָל מוסטער (.אַסקקס) ווי געוויזן:

<%@ קאָנטראָל שפּראַך="C#" ינכעראַץ="Microsoft.SharePoint.Portal.ServerAdmin.CreateSiteCollectionPanel1,Microsoft.SharePoint.Portal,ווערסיע = 12.0.0.0, קולטור = נייטראַל,פּובליקקייטאָקען = 71ע9בסע111ע9429ק" קאָמפּילאַטיאָנמאָדע="Always" %>
<%
@ רעגיסטרירן טאַגפּרעפיקס="wssawc" נאָמענטייל="Microsoft.SharePoint.WebControls" פאַרזאַמלונג="Microsoft.SharePoint, ווערסיע = 12.0.0.0, קולטור = נייטראַל, פּובליקקייטאָקען = 71ע9בסע111ע9429ק" %> <%@ רעגיסטרירן טאַגפּרעפיקס="SharePoint" נאָמענטייל="Microsoft.SharePoint.WebControls" פאַרזאַמלונג="Microsoft.SharePoint, ווערסיע = 12.0.0.0, קולטור = נייטראַל, פּובליקקייטאָקען = 71ע9בסע111ע9429ק" %>
<שאַרעפּאָינט:רענדערינג מוסטער שייַן="XYZZYCorporateLocationFieldControl" runat="server">
<מוסטער>
<אַספּ:דראָפּדאָוונליסט שייַן="XYZZYCorporateLocationSelector" runat="server" />
</מוסטער>
</
שאַרעפּאָינט:רענדערינג מוסטער>

די אויבן איז געראטעוועט אין C:\פּראָגראַם טעקעס פּראָסט טעקעס מייקראָסאָפֿט שערד וועב סערווער יקסטענשאַנז 12 קאָנטראָלטעמפּלאַטעס.

  1. לעסאָף, מיר מאַכן אַ קסמל טעקע צו ראַטעווען אין די ..... 12 קסמל Directory. דאס איז קאַמל אַז דיפיינז אונדזער מנהג דאַטן טיפּ און פֿאַר מיין בייַשפּיל, קוקט ווי דעם:

<?קסמל ווערסיע="1.0" סיסטעם="UTF-8" ?>
<
פיעלדטיפּעס>
<
פיעלדטיפּע>
<
פעלד נאָמען="טיפּענאַמע">קאָרפּאָראַטעלאָקאַטיאָנס</פעלד>
<
פעלד נאָמען="פּאַרענטטיפּע">טעקסט</פעלד>
<
פעלד נאָמען="טיפּעדיספּלייַנאַמע">Corporate Locations</פעלד>
<
פעלד נאָמען="טיפּעשאָרטדעסקריפּטיאָן">All XYZZY Corporate locations including manufacturing or other facilities.</פעלד>
<
פעלד נאָמען="וסערקרעאַטאַבלע">אמת</פעלד>
<
פעלד נאָמען="שאָווינליסטקרעאַטע">אמת</פעלד>
<
פעלד נאָמען="שאָווינדאָקומענטליבראַריקרעאַטע">אמת</פעלד>
<
פעלד נאָמען="שאָווינסורווייקרעאַטע">אמת</פעלד>
<
פעלד נאָמען="שאָווינקאָלומנטעמפּלאַטעקרעאַטע">אמת</פעלד>
<
פעלד נאָמען="פיעלדטיפּעקלאַסס">קאָנטשאַנגאָ.קסיזזיקאָרפּאָראַטעלאָקאַטיאָנפיעלד, קסיזזיקאָרפּאָראַטעלאָקאַטיאָנפיעלד, ווערסיע = 1.0.0.0, קולטור = נייטראַל, PublicKeyToken=b0b19e85410990c4</פעלד>
<
רענדערפּאַטטערן נאָמען="דיספּלייַפּאַטטערן">
<
יבערבייַט>
<
עקספּר>
<
זייַל />
</
עקספּר>

<פאַל ווערט=""/>

<ניט ויסצאָלן>
<
HTML>
<![קדאַטאַ[
<span style="color:Red"><ב>]]>
</
HTML>

<
זייַל סובקאָלומננומבער="0" הטמלענקאָדע="אמת"/>

<HTML><![קדאַטאַ[</ב></שפּאַן>]]></HTML>

</
ניט ויסצאָלן>
</
יבערבייַט>

</
רענדערפּאַטטערן>
</
פיעלדטיפּע>
</
פיעלדטיפּעס>
This XML file adds the custom data type to the WSS "library" און שוועבעלעך עס אַרויף קעגן די גאַק'ד פֿאַרזאַמלונג.

נאָך מאָווינג אַלע די ביטן אין אָרט, ייסרעסעט אויף דעם סערווער און עס זאָל אַלע אָנהייבן ארבעטן נייסלי.

מאָך: אַפּדייטינג אַ מנהג רשימה

עס זענען פילע גוט ביישפילן פון אַפּדייטינג מנהג רשימות דורך די סדק. דאָ איז נאָך אן אנדער.

ביזנעס פּראָבלעם: ינפאָפּאַטה פאָרעם האט שוין דיזיינד אַז ינייבאַלז ניצערס צו אַרייַן אָנליין קויפן רעקוויסיטיאָנס. פּאָ רעקוויסיטיאָן נומערן זאָל זייַן טראדיציאנעלן סיקוואַנס באזירט ינטאַדזשער וואַלועס און קאַלקיאַלייטיד אויטאָמאַטיש.

ביזנעס סאַלושאַן: שאַפֿן אַ מנהג מאָך רשימה מיט צוויי שפאלטן: "ControlField" and "ControlValue". The value column contains the next purchase requisition number. Note that the generic "control" naming convention provides for future control fields that may be used as needed.

טעכניש סאַלושאַן: Create a web service accessed by the InfoPath client. The web service returns back the next purchase requisition number and updates the value of the list.

Lessons Learned:

  • When adding this web service as a data source to the InfoPath form, I found it necessary to convert it to a udc and store it into a data connection library.
  • I also found it necessary to enable cross domain scripting via central services administration // application management // form server configuration.
  • The first time the form tried to access the web service, it takes a while and on occasion, it would time out. I fiddled with settings in form server configuration to expand the timeout settings and that seemed to help.

די קאָד:

ניצן סיסטעם;
ניצן System.Web;
ניצן System.Web.Services;
ניצן System.Web.Services.Protocols;
ניצן Microsoft.SharePoint;
ניצן System.Configuration;

[וועבסערוויסע(Namespace = "http://www.conchango.com/")]
[וועבסערוויסעבינדינג(ConformsTo = ווסיפּראָפילעס.באַסיקפּראָפילע1_1)]
עפנטלעך קלאַס PoService : System.Web.Services.וועבסערוויסע
{
עפנטלעך PoService () {

//Uncomment the following line if using designed components
//יניטיאַליזעקאָמפּאָנענט();
}

/// <קיצער>
/// Obtain the next PO number from the sharepoint po number control list.
/// Increment the PO number in that list.
/// </קיצער>
/// <returns></returns>
[WebMethod]
עפנטלעך שטריקל GetNextPoNumber()
{
שטריקל ספּפּאָקאָנטראָלסיטענאַמע; // Name of the actual MOSS site that hosts the PO Control list.
שטריקל ספּפּאָקאָנטראָלליסטנאַמע; // Name of the actual MOSS list containing the Po control.

SpPoControlSiteName = ConfigurationSettings.AppSettings["PoControlListHostingSite"].טאָסטרינג();
SpPoControlListName = ConfigurationSettings.AppSettings["PoControlList"].טאָסטרינג();

שטריקל nextPoReqNumber = "xyzzy";

ניצן (ספּסיטע site = נייַ ספּסיטע(ספּפּאָקאָנטראָלסיטענאַמע))
{
ניצן (ספּוועב web = site.OpenWeb())
{

ספּליסט currentList = web.Lists[ספּפּאָקאָנטראָלליסטנאַמע];

פאָרעאַטש (שפּייַען קאָנטראָליטעם אין currentList.Items)
{

צי (((שטריקל)קאָנטראָליטעם["ControlField"]).יקוואַלז("NextPoNumber"))
{
nextPoReqNumber = (שטריקל)קאָנטראָליטעם["ControlValue"];

ינט int_nextPoReqNumber;
int_nextPoReqNumber = גער.טאָינט32(nextPoReqNumber);

int_nextPoReqNumber ;

קאָנטראָליטעם["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;

}
}