בר הוא עדיין גבוה למדי כדי להרחיב מוס

היום, הייתי עובד עם לקוח ולא המתארות כיצד לשנות את ה-web part שאילתת תוכן ולהציג נוספים פיסות מידע מכל סוג תוכן.

"קודם, תקבע את CQWP כדי להתחבר למקורות נתונים שלו, מכן לך לייצא את תחנת העבודה שלך, לשנות <CommonViewFields>, להעלות, להסיר המקורי, עכשיו זה ' בשלה’ כדי להציג את העמודים האחרים. הבא, פתח את SharePoint designer, נווט לספריית הבסיס אוסף אתר ואתר ItemStyle.xsl. עותק אחד של התבניות כנקודת התחלה שימושית. לחזור ולשנות את CQWP לעשות שימוש בתבנית חדשה זו. לבסוף, לשנות את התבנית כדי לעבד את השדות החדשים! (אל תשכחו לבדוק שאותו בחזרה כל כך אחרים המשתמשים יוכלו לראות את התוצאות)."

. זה כל כך ברור לי (ורובנו SharePoint מפתחים סוגי) מה קורה, איך זה די נחמד, באמת, כי ההיבטים לאחזור נתונים של CQWP הם כל-כך טוב-נפרדת מן ההיבטים מצגת נתונים. אבל, זה לא כל כך קל להסביר, זה?

<סיום />

תגיות טכנורטי: ,

הצגת תוצאות חלק אינטרנט של שאילתת תוכן ברשת / טבלה

מבט כולל על וחשיבה אובייקטיבית

מחוץ לקופסה, מוס’ Web Part של שאילתת תוכן (CQWP) מציג את התוצאות שלה בתבנית רשימה, דומה על תוצאות חיפוש. זה גם אפשרי להציג את התוצאות בתבנית רשת (כלומר. טבלת html). תבניות רשת טובים יותר בנסיבות מסוימות. אתאר כיצד להגיע לתוצאה זו במאמר זה.

תרחישים עסקיים

עבדתי עם לקוח על ההשקה מוס הארגון. עיצבנו את הטקסונומיה שלהם כך פרויקטים אזרחים מהשורה הראשונה בהירארכיה, יש האתר ברמה העליונה שלהם. מנהלי פרוייקטים לשמור על רשימה סינגלטון של מידע סיכום הפרויקט, כגון כותרת, תקציב, תאריך הסיום הצפוי, עלות תקציב ושדות אחרים סוג הסיכום. על ידי "סינגלטון" כלומר רשימת SharePoint מותאמות אישית מובטחת להכיל פריט אחד בלבד. בצורה פשטנית, זה נראה כך:

התמונה

הגישה הטכנית דומים במידה רבה כפי שמתואר כאן (http://paulgalvin.spaces.live.com/blog/cns!1CC1EDB3DAA9B8AA!447.entry). CQWP משתמשת שינוי XSL לפלוט HTML עבור הדפדפן לעיבוד.

אני תמיד לדמיין את התוצאה לפני הצלילה ה-XSL כי XSL היא סיוט. . הנה את התוצאה הרצויה:

התמונה

HTML כמו זה יוצר תוצאה זו:

<html>
 <הגוף>
 <מרכז>
 <טבלה גבול= 1>

<!-- תוויות –>
 <. tr צבע רקע= כחול>
 <td><גופן צבע= לבן><b>שם פרוייקט</b></גופן></td>
 <td יישור= מימין><גופן צבע= לבן><b>לתאריך הושלמה</b></גופן></td>
 <td יישור= מימין><גופן צבע= לבן><b>תקציב</b></גופן></td>
 <td יישור= מימין><גופן צבע= לבן><b>הוצאות בפועל</b></גופן></td>
 <td><גופן צבע= לבן><b>המצב הכללי</b></גופן></td>
 </. tr>

<. tr>
 <td>Re-wire חדר מחשבים.</td>
 <td יישור= מימין>02/01/08</td>
 <td יישור= מימין>22,500.00</td>
 <td יישור= מימין>19,000.00</td>
 <td>בביצוע</td>
 </. tr>

<. tr>
 <td>אספקת שרתים עבור שדרוג SQL</td>
 <td יישור= מימין>04/01/08</td>
 <td יישור= מימין>7,500.00</td>
 <td יישור= מימין>0.00</td>
 <td>מתוכנן</td>
 </. tr>

</טבלה>
 </מרכז>
 </הגוף>
</html>

גישה

בצע את השלבים הבאים כדי ליצור את הרשת:

  1. לזהות את הרכיבים של רשת (שורות/עמודות).
  2. להגדיר וליצור עמודות אתר הדרושים.
  3. יצירת אתרי משנה עבור פרוייקטים ורשימות סינגלטון.
  4. הוסף את CQWP לדף אינטרנט והגדר אותו לחיפוש אחר הרשימות שלך.
  5. שנה של CQWP XML כדי לאסוף את עמודות נוספות.
  6. שנה את ה-XSL ליצירת טבלה.

. אני הולך להתרכז במספר שש. מספרי אחד עד ארבע הם ישר קדימה ומשהו כל משתמש CQWP כבר עשה. מספר חמש היה מתועדת היטב על-ידי אחרים כולל מאמר ממצה של לאדן צילום מסך מתוך MSDN כאן (http://msdn2.microsoft.com/en-us/library/bb897399.aspx) ובלוגים הת'ר שלמה כאן (http://www.heathersolomon.com/blog/articles/CustomItemStyle.aspx).

עלון

להתחיל וליישם את שלבים אחת עד חמש לפי התיעוד MSDN ו מאמר הת'ר שלמה.

בנקודה זו, שהוספת לדף CQWP שלך ויש לך שלך <CommonViewFields> נקבעה לפי הצורך.

ביצוע השלבים הרגילים, ניתן לקבל תוצאות ביניים אלה:

1. יצירת סוג תוכן, רשימה מותאמת אישית templatized עבור סוג תוכן זה, שני אתרים. . הנה סוג התוכן:

התמונה

הנה מבנה האתר:

התמונה

2. הוסף את CQWP לאחר יצירת אתרי משנה של הפרוייקט ואת סינגלטון שלי רשימות סיכום של פרוייקטים:

התמונה

3. להוסיף כל מידע נוסף אני רוצה דרך <CommonViewFields>:

        <מאפיין שם="CommonViewFields" סוג="מחרוזת">Project_x0020_Name;Project_x0020_Expenses;Project_x0020_Status;Project_x0020_Start_x0020_Date;Project_x0020_End_x0020_Date;Project_x0020_Budget</מאפיין>

שים לב כי הייתי חייב לשמור על שדות המאפיינים שורה זו או שהיא לא תתאים (CQWP יספר לי כי השאילתה החזירה פריטים).

4. בנקודה זו, . אנחנו מוכנים לזוז מעבר במאמר MSDN ו על היפוך למאמר של הת'ר שלמה. בצע את השלבים שלה מתחיל ליד שלב #5 כדי ליצור מותאם אישית / גרסה unghosted של ItemStyle.xsl. עצתו של הת'ר, דרך שלב 11 ולקבל תוצאות ביניים אלה:

4.1: שם אזור תבנית XSL כדלקמן:

<xsl:שם התבנית = "ברשת" להתאים = "שורה[@Style = 'רשת']" מצב = "itemstyle">

ניתן לשנות אותה הציע גם מעט <xsl:עבור-כל …> על-ידי הוספה <br /> תג כדי לספק רישום כלי הניקוי:

    <xsl:עבור-כל בחר="@*">
      P:<xsl:הערך בחר="שם()" /><br/>
    </xsl:עבור-כל>

4.2: ניתן לשנות את ה-web part, עבור אל המראה ובחר שלי ברשת"" סגנון:

התמונה

להחיל את השינוי, הרי התוצאה:

התמונה

נוכל לראות לעיל כי השדות אנחנו רוצים (שם פרוייקט, הוצאות, מצב, ועוד) זמינים עבורנו לשימוש כאשר אנחנו פולטים את ה-HTML. לא רק זה, אבל אנחנו רואים את השמות שבו. אנחנו ועליו להפנות את העמודים ב- ה-XSL. לדוגמה, אנו מפנים מצב הפרוייקט כ- "Project_x005F_x0020_Name".

בנקודה זו, אנו יוצאים מתוך הבלוג של הת'ר ומתוך כתפי ענקים אלה, ניתן להוסיף מעט משלי.

ContentQueryMain.xsl

הערה: בעת ביצוע שינויים שני ContentQueryMain.xsl וגם ItemStyle.xsl, עליך להכניס שחזרה קבצים אלה לפני לראות את השפעת השינויים שלך.

למטרות יצירת רשת, מוס משתמש שני קבצי XSL שונים כדי להפיק את התוצאות שאנחנו רואים מן CQWP. כדי ליצור את החלק הקודם של פלט, שינינו ItemStyle.xsl. מוס שבאמת משתמשת בקובץ XSL אחר, ContentQueryMain.xsl ל בשיתוף עם ItemStyle.xsl כדי ליצור את ה-HTML שלו. כפי ששמו מעיד עליו, ContentQueryMain.xsl הוא הראשי"" XSL השולט הזרם הכללי של תרגום. זה סובבת בין כל הפריטים שנמצאו ומעביר אותם אחד אחד כדי תבניות ב- ItemStyle.xsl. אנחנו לשנות ItemStyle.xsl כדי ליצור פתח <טבלה> תג לפני פליטת בשורה הראשונה של הנתונים וסגירת <טבלה> תג לאחר פליטת השורה האחרונה. כדי להשיג את זה, ContentQueryMain.xsl משתנה להעביר פרמטרים שני לרשת שלנו"" תבנית ב- ItemStyle.xsl, "השורה האחרונה" "השורה הנוכחית". ItemStyle.xsl משתמש בהם באופן מותנה לפלוט את התגים הדרושים.

בטכניקה הת'ר שלמה, אנחנו אתר ContentQueryMain.xsl. הוא ממוקם באותו מקום כמו ItemStyle.xsl. צילום מסך זה אמור לעזור:

התמונה

אנחנו צריכים לבצע את השינויים הבאים:

  • שינוי תבנית xsl, "CallItemTemplate" זה למעשה מפעיל תבנית הרשת שלנו ב- ItemStyle.xsl. . אנחנו נחלוף שני פרמטרים על תבנית רשת כך יהיו לו את הנתונים שצריך להתאוששות פתיחה וסגירה <טבלה> תגים.
  • לשנות מעט אחר ContentQueryMain.xsl הקורא "CallItemTemplate" כדי להעביר אותה "LastRow" פרמטר כך LastRow כי ייתכן שניתן לגרום לדעיכתם לתבנית הרשת שלנו.

אתר את התבנית בשם "OuterTemplate.CallItemTemplate" מזוהה על-ידי המחרוזת:

  <xsl:תבנית שם="OuterTemplate.CallItemTemplate">

החלף את התבנית כולה כדלקמן:

  <xsl:תבנית שם="OuterTemplate.CallItemTemplate">
    <xsl:param שם="CurPosition" />

    <!--
      הוספת "LastRow" הפרמטר.
      נוכל להשתמש בו רק כאשר המעבר סגנון פריט "רשת".
    -->
    <xsl:param שם="LastRow" />

    <xsl:בחר>
      <xsl:כאשר מבחן="@ סגנון = 'NewsRollUpItem'">
        <xsl:החלת תבניות בחר="." מצב="itemstyle">
          <xsl:עם param שם="EditMode" בחר="$cbq_iseditmode" />
        </xsl:החלת תבניות>
      </xsl:כאשר>
      <xsl:כאשר מבחן="@ סגנון = 'NewsBigItem'">
        <xsl:החלת תבניות בחר="." מצב="itemstyle">
          <xsl:עם param שם="CurPos" בחר="$CurPosition" />
        </xsl:החלת תבניות>
      </xsl:כאשר>
      <xsl:כאשר מבחן="@ סגנון = 'NewsCategoryItem'">
        <xsl:החלת תבניות בחר="." מצב="itemstyle">
          <xsl:עם param שם="CurPos" בחר="$CurPosition" />
        </xsl:החלת תבניות>
      </xsl:כאשר>

      <!--
              המיקום הנוכחי של מעבר, lastrow לתבנית itemstyle.xsl ברשת.
              ItemStyle.xsl ישתמש בו לפלוט פתיחה וסגירה <טבלה> תגים.
      -->
      <xsl:כאשר מבחן="@ סגנון = 'רשת'">
        <xsl:החלת תבניות בחר="." מצב="itemstyle">
          <xsl:עם param שם="CurPos" בחר="$CurPosition" />
          <xsl:עם param שם="האחרון" בחר="$LastRow" />
        </xsl:החלת תבניות>
      </xsl:כאשר>

      <xsl:אחרת>
        <xsl:החלת תבניות בחר="." מצב="itemstyle">
        </xsl:החלת תבניות>
      </xsl:אחרת>
    </xsl:בחר>
  </xsl:תבנית>

ההערות מתארות את המטרה של השינויים.

בטח, "OuterTemplate.CallItemTemplate" עצמה נקראת תבנית אחרת. אתר את התבנית על-ידי חיפוש מחרוזת טקסט זו:

<xsl:תבנית שם="OuterTemplate.Body">

לגלול ההוראות OuterTemplate.Body וכדי להוסיף את הפרמטר LastRow כדלקמן (מוצג כתהליך של תגובה בכתב נטוי):

<xsl:תבנית קריאה שם="OuterTemplate.CallItemTemplate">
  <xsl:עם param שם="CurPosition" בחר="$CurPosition" />
  <!-- הוסף את הפרמטר LastRow. -->
  <xsl:עם param שם="LastRow" בחר="$LastRow"/>
</xsl:תבנית קריאה>

אחרי כל זה, סוף סוף יש לנו דברים מוגדר כהלכה כך ItemStyle.xsl שלנו מסוגל לפלוט <טבלה> תגים בהמקום המתאים.

ItemStyle.Xsl

הערה: שוב, בדוק ב- ItemStyle.xsl לאחר ביצוע שינויים, כך שתראה את ההשפעה של שינויים אלה.

יש לנו שתי פעילויות כאן:

  • להחליף את התבנית הרשת כולה. אתה יכול העתקה/הדבקה מלמטה.
  • להוסיף כמה ג'מבו mumbo מחוץ להגדרת תבנית המאפשרת "formatcurrency" תבנית לעבודה. (באפשרותך לדעת שיש לי נקודת אחיזה רפים ב- XSL).

הראשונה, ליד החלק העליון של ItemStyle.xsl, הוסף את השורה:

  <!-- כמה ג'מבו mumbo אשר מאפשרת לנו להציג את ארה. מטבע. -->
  <xsl:תבנית עשרונית שם="סגל" ספרה="יח" />

  <xsl:תבנית שם="ברירת מחדל" התאמה="*" מצב="itemstyle">

הערה כי הוספתי אותו ישירות לפני <xsl:שם התבנית = "ברירת מחדל" …> הגדרה.

הבא, לחזור לתבנית הרשת שלנו. להחליף את התבנית לרשת כולה עם הקוד שלהלן. זה ביסודיות, הוא הגיב, אך אל תהסס שלח לי דוא ל או להשאיר הערות על הבלוג שלי, אם יש לך שאלות.

  <xsl:תבנית שם="רשת" התאמה="שורה[@ סגנון = 'רשת']" מצב="itemstyle">

    <!--
      ContentMain.xsl עובר CurPos ולבסוף.
      אנו משתמשים אלה מותנה לפלוט פתיחה וסגירה <טבלה> תגים.
    -->
    <xsl:param שם="CurPos" />
    <xsl:param שם="האחרון" />

    <!-- המשתנים הבאים הם שלא שונתה מ ItemStyle.xsl רגיל -->
    <xsl:משתנה שם="SafeImageUrl">
      <xsl:תבנית קריאה שם="OuterTemplate.GetSafeStaticUrl">
        <xsl:עם param שם="UrlColumnName" בחר="'ImageUrl'"/>
      </xsl:תבנית קריאה>
    </xsl:משתנה>
    <xsl:משתנה שם="SafeLinkUrl">
      <xsl:תבנית קריאה שם="OuterTemplate.GetSafeLink">
        <xsl:עם param שם="UrlColumnName" בחר="'LinkUrl'"/>
      </xsl:תבנית קריאה>
    </xsl:משתנה>
    <xsl:משתנה שם="DisplayTitle">
      <xsl:תבנית קריאה שם="OuterTemplate.GetTitle">
        <xsl:עם param שם="כותרת" בחר="@Title"/>
        <xsl:עם param שם="UrlColumnName" בחר="'LinkUrl'"/>
      </xsl:תבנית קריאה>
    </xsl:משתנה>
    <xsl:משתנה שם="LinkTxslet">
      <xsl:אם מבחן="@OpenInNewWindow = "true"" >_ blank</xsl:אם>
    </xsl:משתנה>

    <!--
      כאן אנו מגדירים משתנה, "tableStart".  מכיל את ה-HTML שבהם אנו משתמשים כדי להגדיר את הפתיחה של הטבלה, כמו גם לצד תוויות העמודה.  שים לב כי אם CurPos = 1, זה כולל את ה-HTML בתוך תג CDATA.
      אחרת, זה יהיה ריק.

      הערך של tableStart הוא emited בכל פעם ItemStyle נקראת על ידי ContentQueryMain.xsl.
    -->
    <xsl:משתנה שם="tableStart">
      <xsl:אם מבחן="$CurPos = 1">
        <![CDATA[
        <גבול הטבלה = 1>
          <צבע רקע tr = "כחול">
            <td><צבע גופן = "לבן"><b>שם פרוייקט</b></גופן></td>
            <td ליישר = "זכות"><צבע גופן = "לבן"><b>לתאריך הושלמה</b></גופן></td>
            <td ליישר = "זכות"><צבע גופן = "לבן"><b>תקציב</b></גופן></td>
            <td ליישר = "זכות"><צבע גופן = "לבן"><b>הוצאות בפועל</b></גופן></td>
            <td><צבע גופן = "לבן"><b>המצב הכללי</b></גופן></td>
          </. tr>
        ]]>
      </xsl:אם>
    </xsl:משתנה>

    <!--
      משתנה נוסף, tableEnd מגדיר בפשטות סגירת טבלה בתג.

      כמו עם tableStart, . זה תמיד emited.  זו הסיבה מדוע הערך שלו מוקצית באופן מותנה על פי אם כבר עברנו את השורה האחרונה על ידי ContentQueryMain.xsl.
    -->
    <xsl:משתנה שם="tableEnd">
      <xsl:אם מבחן="$CurPos = $Last">
        <![CDATA[ </טבלה> ]]>
      </xsl:אם>
    </xsl:משתנה>

    <!--
      תמיד פולטים את התוכן של tableStart.  אם זו לא השורה הראשונה המועבר אלינו על ידי ContentQueryMain.xsl, אז אנחנו יודעים שאת הערך שלו יהיה ריק.

      בטל את פלט לברוח מכאן, כי כאשר tableStart זה לא ריקות, הוא כולל HTML בפועל שאנו רוצים להיות מעובד על-ידי הדפדפן.  אם לא נספר מנתח XSL כדי לבטל את הפלט בריחה, זה יפיק דברים כמו"&lt;טבלה&gt;" במקום של"<טבלה>".
    -->
    <xsl:הערך בחר="$tableStart" בטל-פלט-בריחה="כן"/>


    <. tr>
      <!--
      P:Project_x005F_x0020_Name P:Project_x005F_x0020_End_x005F_x0020_Date P:Project_x005F_x0020_Budget P:Project_x005F_x0020_Expenses P:Project_x005F_x0020_Status
      -->
      <td>
        <xsl:הערך בחר="@ Project_x005F_x0020_Name"/>
      </td>

      <td יישור="מימין">
        <xsl:הערך בחר="@ Project_x005F_x0020_End_x005F_x0020_Date"/>
      </td>

      <td יישור="מימין">
        <xsl:תבנית קריאה שם="formatcurrency">
          <xsl:עם param שם="ערך" 
בחר="@ Project_x005F_x0020_Budget"></xsl:עם param> </xsl:תבנית קריאה> </td> <td יישור="מימין"> <xsl:תבנית קריאה שם="formatcurrency"> <xsl:עם param שם="ערך" בחר="@ Project_x005F_x0020_Expenses">
</xsl:עם param> </xsl:תבנית קריאה> </td> <td> <xsl:הערך בחר="@ Project_x005F_x0020_Status"/> </td> <!-- כל הפעולות הבאות כהערות להבהיר את פני הדברים. עם זאת, להחזירן, ודחס אותו לתוך <td> כדי לראות את השפעתו. --> <!-- <div id = "linkitem" class = "פריט"> <xsl:אם בדיקת = "מחרוזת באורך($SafeImageUrl) != 0 "> <div class = "תמונת-שטח-שמאל"> <href = "{$SafeLinkUrl}" היעד = "{$LinkTxslet}"> <img class = "תמונת-ברוחב קבוע" src = "{$SafeImageUrl}"
alt = "{@ ImageUrlAltText}"/> </של> </div> </xsl:אם> <div class = "קישור-פריט"> <xsl:תבנית קריאה
name="OuterTemplate.CallPresenceStatusIconTemplate"/> <href = "{$SafeLinkUrl}"
היעד = "{$LinkTxslet}" כותרת = "{@ LinkToolTip}"> <xsl:הערך של בחר = "$ DisplayTitle" /> </של> <div class = "תיאור"> <xsl:הערך של select="@Description" /> </div> </div> </div>
--> </. tr> <!-- לפלוט סגירת תג של טבלה. אם אנחנו לא נמצאים בשורה הראשונה, זה יהיה ריק. --> <xsl:הערך בחר="$tableEnd" בטל-פלט-בריחה="כן"/> </xsl:תבנית> <xsl:תבנית שם="formatcurrency"> <xsl:param שם="ערך" בחר="0" /> <xsl:הערך בחר='עיצוב מספר($ערך, "$ DDD,DDD,DDD.DD", "צוות")' /> </xsl:תבנית>

מסך הזנת הנתונים של WSS/מוס רגיל אינם תומכים נפתחות מדורגים (או אחרים אינטרה-מן התקשורת)

עדכון (04/2008): בערך זה בלוג נהדר מציג גישה מבוסס javascript טוב לבעיה הזאת: http://webborg.blogspot.com/2008/04/add-functions-and-events-to-sharepoint.html

עדכון II: (04/2008): הפוסט בבלוג הזה נראה מבטיח גם כן: http://www.cleverworkarounds.com/2008/03/13/free-mosswss-2007-web-part-hide-controls-via-javascript/

כמה פעמים בשבוע, אם לא יומית, פורום משתמשים לתאר דרישה כי הייתי פוגשת בדרך כלל באמצעות מדורגים רשימות נפתחות. לדוגמה, יש לי שני פקדים נפתחת:

  • רשימת בארה. הברית
  • רשימת בארה. ערים.

כמו ספקי ממשק המשתמש אחראי, אנחנו רוצים לפעול ככה:

  • פול בוחר של ארה. המדינה מהרשימה הנפתחת.
  • פעולה זו גורמת הערים הנפתחת כדי לסנן רק בערים אלו שייכים המצב הנבחר.
  • פול בוחר עיר מרשימה זו מסוננת.

אין תמיכה out-של--box עבור תכונה זו. למעשה, אין תמיכה OOB עבור כל סוג של תקשורת ישירה אינטרה-טופס. זה כולל באופן תוכניתי מסתור/הפעלה/ביטול שדות בתגובה לשינויים שדה במקום אחר על הטופס.

המטרה האמיתית של מאמר זה כדי לתאר את הפתרונות האפשריים ואת אלה נמצאות האפשרויות כפי שאני מכיר אותם:

  1. לפתח סוג העמודה מותאם אישית. כמפתח מותאמת אישית-טור-, יש לך שליטה מלאה על העולם"" של העמודה מותאם אישית. באפשרותך ליישם מדורגים נפתחת ככה.
  2. שקול להשתמש בזרימת עבודה. במקרים מסוימים, ברצונך להקצות באופן אוטומטי ערך לשדה בהתבסס על הערך של שדה אחר. במקרה זה, בדרך כלל שתנסה להשתמש בעמודה מחושבת, אבל כמה פעמים, זה פשוט לא לעשות את העבודה. זרימת עבודה של SharePoint Designer היא אלטרנטיבה ידידותית לניהול יחסית הטלת מטה לתוך קוד ו- visual studio. אם תלך בדרך הזאת, להיות מודעים לבעיה שנדונה מאמר זה (http://paulgalvin.spaces.live.com/blog/cns!CC1EDB3DAA9B8AA!405.entry).
  3. מטפלים באירועים: כמו זרימת עבודה, פתרון לאחר--עובדה. באירועים שלך היא הרכבה של .NET (C #, VB.NET) כדי SharePoint אשר מעביר שליטה. האובייקט שאתה לפתח יש גישה לכל הנתונים של הרשימה (מודל האובייקט כולו) יכול לעשות את כל הדרוש חישוב.
  4. השתמש SharePoint Designer כדי ליצור טפסים של הזנת מותאם אישית. אין לי ניסיון ישיר עם גישה זו, but I hear they are doing good things with NewForm.aspx these days 🙂
  5. רול הפונקציה הזנת נתונים משלך ASP.NET (כדף אינטרנט עצמאי או כ- web part) והוא השתמש בזה במקום.

אם מישהו יודע אפשרויות אחרות ו/או יותר, בבקשה לפרסם תגובה ואני אעדכן את הגופה של הפוסט הזה.

<סיום />

תגיות טכנורטי:

כן/לא (תיבת הסימון) סינון ב- Web Part שאילתת תוכן

כדי לבצע סינון עבור שאילתה עבור הכן/לא תיבת הסימון שכותרתו "אבן דרך עמוד", קביעת תצורה של CQWP כמו זה:

התמונה

זו עוד אחת השאלות האלה ברור-פעם אחת-אתה-יודע-זה אבל hard-to-find-an-answer-to: כיצד לסנן על כן/לא תיבת הסימון באמצעות ה-web part שאילתת תוכן.

הראשון תוצאת חיפוש אני מוצא באמצעות מילת החיפוש "סינון תוכן כן/לא web part של שאילתת" לא הסתדרתי בסדר, אז חשבתי הייתי שם את זה שם למעלה, לראות אם זה יכול להחליף תוצאה שגויה בתוצאות החיפוש טיפוסי.

זה די קל: נכון ערכים = "1" ו- false ערכים שאינם שווים ל "1" (רטרו יפה, למעשה).

בדוגמה לעיל, יצרתי עמודת אתר מסוג כן/לא" (תיבת סימון)" בשם "מיילסטון PG". הוספתי אותו לספריית דוק, נטען כמה מסמכים, הגדר את ערך כמה ובדק אותו.

<סיום />

ליצור גרפים של מייצגי ב- SharePoint

מבט כולל:

(עדכון 12/04/07: הוספת משאב מעניין אחר בקצה קישור לבלוג אחר המטפלת זה דרך web part מעניין מאוד)

את הבלוג מתאר כיצד ליצור גרף עמודות ב- SharePoint. זה עובד בסביבות WSS וגם מוס. כמו הדבר תלוי רק ה-web part של תצוגת נתונים.

הגישה הכללית היא כדלקמן:

  1. יצירת רשימה או ספריית מסמכים המכיל את הנתונים שברצונך גרף.
  2. המקום בספריית המסמכים הקשורים / מותאם אישית ברשימה בדף, להמיר אותו ל- web part של תצוגת נתונים (DVWP).
  3. שינוי של DVWP XSL ליצירת HTML המציגה בצורת גרף.

תרחישים עסקיים / תוכנית ההתקנה:

יצרתי רשימה מותאמת אישית עם תקן כותרת העמודה והעמודה נוספים אחד, "מצב". מודלים הזה (בצורה מאוד פשטנית) אישור"עבור הוצאות" התרחיש כאשר הכותרת מייצג את הפרויקט ואת המצב ערך מתוך רשימת:

  • הציע נישואין
  • בתהליך
  • התקועה

המטרה היא לייצר אינטראקטיבי אופקי גרף המציג את קודי מצב אלה.

אני צריכה את הרשימה ואת זה נראה כמו זה:

התמונה

יצירת Web Part תצוגת נתונים:

ליצור את DVWP על-ידי הוספת הרשימה המותאמת אישית לדף (דף אתר במקרה שלי) ובצע את ההוראות כאן (http://paulgalvin.spaces.live.com/blog/cns!1CC1EDB3DAA9B8AA!395.entry).

בנוסף פשוט יצירת את DVWP, אנחנו גם צריכים להגדיר את המאפיין החלפה כדי להציג את כל השורות זמין. בשבילי, . זה נראה משהו כזה:

התמונה

בנקודה זו, תמיד קרוב. SPD ו הדפדפן. אני מכן לפתוח מחדש את הדף באמצעות הדפדפן. הדבר מונע בטעות שמחרבן לי את פריסת חלק בדף.

לשנות את ה-XSLT:

הגיע זמן לשנות ה-XSLT.

. אני תמיד משתמשת visual studio בשביל זה. (ראה כאן עבור הערה חשובה על intellisense זה יעזור לך הרבה).

ליצור פרוייקט ריק מוסיף קבצים חדשים ארבע (החלפת המילים "אורגינל" וחדש"" כיאה):

  • Original.xslt
  • New.xslt
  • Params.xml המקורי
  • Params.xml חדש

במקרה שלי, זה נראה כך:

התמונה

לשנות את ה-web part ולהעתיק את params ו- XSL למקור"" גירסה ב- Visual Studio.

המטרה כאן היא לגרום את ה-XSL להפוך את התוצאות שנחזור מהשאילתה DVWP לתוך HTML שמעבדת בצורת גרף.

למטרה זו, היא מסייעת לשקול קודם איך ה-HTML צריכה להיראות לפני לנו להתבלבל ידי לאי-השפיות הידוע "XSL". (כדי שיהיה ברור, להלן הוא פשוט דוגמה; אל תקליד את זה או העתק/הדבק לסטודיו חזותי. אני מספק מכה מלא נקודת ההתחלה בשביל זה בהמשך שכתוב). הגרף הבא לדוגמה מעובד לפי ה-HTML הבאים מיד לאחר:

תרשים עמודות לדוגמא

HTML המתאים:

<html>
<הגוף>
<מרכז>
<שולחן רוחב = 80%>
<. tr><td><מרכז>אופקי גרף</td></. tr>
<. tr>
<td ליישר = "המרכז">
<גבול הטבלה = "1" רוחב = 80%>
<. tr>
<td רוחב = 10%>פתוח</td>
<td><טבלה cellpadding ="0" cellspacing ="0" גבול = רוחב 0 = 50%><צבע רקע tr = אדום><td>&nbsp;</td></. tr></טבלה></td>
</. tr>
<. tr>
<td רוחב = 10%>סגור</td>
<td><טבלה cellpadding ="0" cellspacing ="0" גבול = רוחב 0 = 25%><צבע רקע tr = אדום><td>&nbsp;</td></. tr></טבלה></td>
</. tr>
<. tr>
<td רוחב = 10%>התקועה</td>
<td><טבלה cellpadding ="0" cellspacing ="0" גבול = רוחב 0 = 25%><צבע רקע tr = אדום><td>&nbsp;</td></. tr></טבלה></td>
</. tr>
</טבלה>
</td>
</. tr>
</טבלה>
</הגוף>
</html>

נעשה שימוש בגישה מתים פשוט ליצירת סורגים שלי על-ידי הגדרת צבע הרקע של שורה "אדום".

Take-away כאן את זה: בסופו של דבר, כל מה שאנחנו עושים הוא יצירת HTML עם שורות ועמודות.

תבנית ה-XSLT:

העתקתי את ה-XSLT שיוצר גרף עמודות אופקיות. . זה טוב למדי הגיב כדי לא להוסיף הרבה כאן למעט הערות אלו:

  • התחלתי עם ברירת המחדל XSL SharePoint Designer נתן לי כאשר שבתחילה יצרתי את DVWP.
  • . הייתי יכול לעשות את זה מ- SPD 657 קווים 166 קווים.
  • לא להתעסק עם קובץ ה-XML פרמטרים (נפרדת מאמצעי ה-XSL, לך תדע. למה אני מתכוון. כשאתה הולך לשנות את DVWP עצמה; קיימים שני קבצים, שבאפשרותך לשנות). עם זאת, על מנת לפשט את זה, להסיר וכמעט בכולם ה-XSL. זאת אומרת, אם אתה רוצה לעשות שימוש באותם הפרמטרים, אתה רק צריך להוסיף והגדרותיהם משתנים בחזרה ה-XSL. זה יהיה קל. מאז יהיה לך הגדרות המשתנה המקורי של XSL בפרוייקט visual studio.
  • אתה צריך להיות מסוגל להעתיק ולהדביק את זה ישירות לתוך הפרוייקט שלך visual studio. לאחר מכן, הסר את השיחות שלי ולהוסיף משלכם שיחות "ShowBar".
  • התרגיל למטה עבודות על-ידי יצירת <href> כמו זה: http://server/List?FilterField1=fieldname&FilterValue1=actualFilterValue. טכניקה זו עשוי להיות ערך בהקשרים אחרים. בהתחלה, . חשבתי שהיה צריך להתאים את תבנית מורכבת יותר: http://server/List/AllItems.aspx?View={guid}&FilterField1=blah&FilterValue1=blah, אבל בסביבה שלי זה לא נחוץ. כתובת URL של הרשימה מועברת אלינו על-ידי SharePoint אז זה די קל לעשות הכללות.

. הנה זה:

<xsl:גליון סגנונות גירסה="1.0" אי-כלילה-התוצאה-קידומות="ר' z o s ddwrt dt msxsl" 
xmlns:msxsl="כד:סכימות-מיקרוסופט-com:xslt" xmlns:xsl="http://www.w3.org/ 1999 / / שינוי XSL"
xmlns:SharePoint="Microsoft.SharePoint.WebControls" xmlns:__designer="http://schemas.microsoft.com/WebParts/v2/DataView/designer"
xmlns:asp="http://schemas.microsoft.com/ASPNET/20" xmlns:ddwrt="http://schemas.microsoft.com/WebParts/v2/DataView/runtime"
xmlns:o="כד:סכימות-מיקרוסופט-com:office" xmlns:s="רכיב uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882"
xmlns:dt="רכיב uuid:C2F41010-65B3 - 11d 1-A29F-00AA00C14882" xmlns:ר'="כד:סכימות-מיקרוסופט-com:שורות" xmlns:z="#RowsetSchema"
xmlns:ddwrt2="כד:frontpage:פנימית"
> <xsl:פלט שיטה="html" כניסה="לא" /> <xsl:תבנית עשרונית נאן="" /> <xsl:param שם="ListUrlDir"></xsl:param> <!-- אני צריך את זה כדי לתמוך את ההסתעפות. --> <xsl:תבנית התאמה="/" xmlns:SharePoint="Microsoft.SharePoint.WebControls"
xmlns:__designer=http://schemas.microsoft.com/WebParts/v2/DataView/designer xmlns:asp="http://schemas.microsoft.com/ASPNET/20"
> <xsl:משתנה שם="dvt_StyleName">טבלה</xsl:משתנה> <xsl:משתנה שם="שורות" בחר="/dsQueryResponse/שורות/שורה" /> <xsl:משתנה שם="dvt_RowCount" בחר="ספירה($שורות)" /> <xsl:משתנה שם="IsEmpty" בחר="$dvt_RowCount = 0" /> <xsl:משתנה שם="dvt_IsEmpty" בחר="$dvt_RowCount = 0" /> <xsl:בחר> <xsl:כאשר מבחן="$dvt_IsEmpty"> אין נתונים על גרף!<br/> </xsl:כאשר> <xsl:אחרת> <!-- החומר מעניין מתחיל כאן. לצורך כך יש להגדיר זוג של משתני עבור כל שורה בגרף: המספר הכולל של פריטים אחוזים מכלל. --> <xsl:משתנה שם="totalProposed" בחר="ספירה(/dsQueryResponse/שורות/שורה[לנרמל-מרחב(@Status) = 'הציע'])" /> <xsl:משתנה שם="percentProposed" בחר="$totalProposed דיב $dvt_RowCount" /> <xsl:משתנה שם="totalInProcess" בחר="ספירה(/dsQueryResponse/שורות/שורה[לנרמל-מרחב(@Status) = "בתהליך"])" /> <xsl:משתנה שם="percentInProcess" בחר="$totalInProcess דיב $dvt_RowCount" /> <xsl:משתנה שם="totalStalled" בחר="ספירה(/dsQueryResponse/שורות/שורה[לנרמל-מרחב(@Status) = 'נתקע'])" /> <xsl:משתנה שם="percentStalled" בחר="$totalStalled דיב $dvt_RowCount" /> <!-- אנו מגדירים את השולחן HTML שלנו כאן. אני שואל מסגנונות מסוימים סטנדרטי SharePoint כאן כדי שזה בקנה אחד. אני חושב שנכבד זה שינויים לקובץ ה-css העולמית כמו גם נושא דורסת. --> <טבלה רוחב="100%" cellspacing="0" cellpadding="2" סגנון="הגבול הימני: 1 #C0C0C0 מוצק; גבול המדרגה: 1 #C0C0C0 מוצק; גבול-שמאל בסגנון: מוצק; גבול-שמאל-רוחב: 1; גבול-העליון בסגנון: מוצק; גבול עליון-ברוחב: 1;"> <. tr> <td יישור="מרכז"> <טבלה גבול="1" רוחב="100%"> <!-- עבור כל מצב שאנחנו רוצים ליצור גרף, אנחנו קוראים את ShowBar"" תבנית. אנחנו עוברים את זה: 1. תווית עבור השורה. זה הופך היפר-קישור. 2. האחוזים (משתנה מלמעלה). 3. שם השדה הממשי של קוד מהרשימה הבסיסית. . זה לא צריך להתאים את התווית תצוגה. 4. ערך השדה מתאימים עבור #3. 5. סה כ פריטים של קוד מצב (לא על הסכום הכולל של כל קודי מצב). הוא פולט <. tr></. tr> קו אופקי גרף. אנחנו קוראים תבנית זו עבור כל קוד מצב שאנחנו רוצים להציג. --> <xsl:תבנית קריאה שם="ShowBar"> <xsl:עם param שם="BarDisplayLabel" בחר=""הציע""/> <xsl:עם param שם="BarPercent" בחר="$percentProposed"/> <xsl:עם param שם="QueryFilterFieldName" בחר="'מצב'"/> <xsl:עם param שם="QueryFilterFieldValue" בחר=""הציע""/> <xsl:עם param שם="TotalItems" בחר="$totalProposed"></xsl:עם param> </xsl:תבנית קריאה> <xsl:תבנית קריאה שם="ShowBar"> <xsl:עם param שם="BarDisplayLabel" בחר="'נתקע'"/> <xsl:עם param שם="BarPercent" בחר="$percentStalled"/> <xsl:עם param שם="QueryFilterFieldName" בחר="'מצב'"/> <xsl:עם param שם="QueryFilterFieldValue" בחר="'נתקע'"/> <xsl:עם param שם="TotalItems" בחר="$totalStalled"></xsl:עם param> </xsl:תבנית קריאה> <xsl:תבנית קריאה שם="ShowBar"> <xsl:עם param שם="BarDisplayLabel" בחר=""בתהליך""/> <xsl:עם param שם="BarPercent" בחר="$percentInProcess"/> <xsl:עם param שם="QueryFilterFieldName" בחר="'מצב'"/> <xsl:עם param שם="QueryFilterFieldValue" בחר=""בתהליך""/> <xsl:עם param שם="TotalItems" בחר="$totalInProcess"></xsl:עם param> </xsl:תבנית קריאה> </טבלה> </td> </. tr> </טבלה> </xsl:אחרת> </xsl:בחר> </xsl:תבנית> <!-- תבנית זו עושה את העבודה של הצגת שורות בודדות של גרף. אתה בטח תעשה רוב מגרסאות שלך כאן. --> <xsl:תבנית שם="ShowBar"> <xsl:param שם="BarDisplayLabel" /> <!-- תווית להראות --> <xsl:param שם="BarPercent"/> <!-- % סה '. --> <xsl:param שם="QueryFilterFieldName"/> <!-- נהגו לקפוץ לשאילתה & מסנן --> <xsl:param שם="QueryFilterFieldValue"/> <!-- נהגו לקפוץ לשאילתה & מסנן --> <xsl:param שם="TotalItems" /> <!-- ספירה סך של barlabel הזה --> <. tr> <!-- הבר תווית עצמה. --> <td מחלקה="ms-formbody" רוחב="30%"> <!-- זו קבוצה הבאה של הצהרות בונה מחרוזת השאילתה המאפשר לנו להסתעף תצוגה מסוננת של הנתונים המשמשים כבסיס. נעשה שימוש כאן כמה דברים: 1. אנחנו יכול לעבור FilterField1 ו- FilterValue1 לרשימה כדי לסנן לפי עמודה. 2. SharePoint עובר פרמטר מפתח אלינו, ListUrlDir שמצביע על הרשימה הבסיסית שמולו הזה DVWP "פועל". לא כיף XSL? --> <xsl:טקסט בטל-פלט-בריחה="כן"> <![CDATA[<href ="]]></xsl:טקסט> <xsl:הערך בחר="$ListUrlDir"/> <xsl:טקסט בטל-פלט-בריחה="כן"><![CDATA[?FilterField1 =]]></xsl:טקסט> <xsl:הערך בחר="$QueryFilterFieldName"/> <xsl:טקסט בטל-פלט-בריחה="כן"><![CDATA[&FilterValue1 =]]></xsl:טקסט> <xsl:הערך בחר="$QueryFilterFieldValue"/> <xsl:טקסט בטל-פלט-בריחה="כן"><![CDATA[">]]></xsl:טקסט> <xsl:הערך בחר="$BarDisplayLabel"/> <xsl:טקסט בטל-פלט-בריחה="כן"><![CDATA[</של>]]></xsl:טקסט> <!-- הסיבית הבאה מציגה כמה מספרים בתבנית: "(סה / % מכלל)" --> (<xsl:הערך בחר="$TotalItems"/> / <!-- זה יוצר תווית אחוז נחמד בשבילנו. תודה, Microsoft! --> <xsl:תבנית קריאה שם="percentformat"> <xsl:עם param שם="אחוז" בחר="$BarPercent"/> </xsl:תבנית קריאה>) </td> <!-- לבסוף, פולטים <td> תג הבר עצמו.--> <td> <טבלה cellpadding="0" cellspacing="0" גבול="0" רוחב="{סיבוב($BarPercent * 100)+1}%"> <. tr צבע רקע="אדום"> <xsl:טקסט בטל-פלט-בריחה="כן"><![CDATA[&nbsp;]]></xsl:טקסט> </. tr> </טבלה> </td> </. tr> </xsl:תבנית> <!-- זה נלקח ישירות מתוך כמה XSL מצאתי בתוך תבנית MS. --> <xsl:תבנית שם="percentformat"> <xsl:param שם="אחוז"/> <xsl:בחר> <xsl:כאשר מבחן="עיצוב מספר($אחוז, '#,##0%;-#,##0%')= 'סבתא'">0%</xsl:כאשר> <xsl:אחרת> <xsl:הערך בחר="עיצוב מספר($אחוז, '#,##0%;-#,##0%')" /> </xsl:אחרת> </xsl:בחר> </xsl:תבנית> </xsl:גליון סגנונות>

התוצאות:

ה-XSL מלמעלה יוצר הגרף הזה:

התמונה

בהסתעפות הנתונים המשמשים כבסיס על-ידי לחיצה על קוד מצב:

התמונה

מחשבות המסכם:

זה יכול להיות מוכללת?

. אני אוהב את הרעיון graphing הזה, . אבל אני שונא את העובדה שיש לי להיכנס ולעשות כל כך הרבה יד-קידוד. . נתתי קצת מחשבה. זה יכול להיות מוכללת, אני אופטימי, אבל אני גם קצת מפחיד כי ייתכן קיר לבנים איפשהו לאורך השביל לא מציעים שום עבודה.. אם למישהו יש רעיונות טובים בזה, אנא ציינו זאת בהערות או שלח לי דוא.

גרפים אנכי:

זהו גרף עמודות אופקיות. זה בהחלט אפשרי ליצור גרף אנכי. אנחנו רק צריכים לשנות את ה-HTML. הייתי מתחיל באותה דרך: ליצור ייצוג HTML של גרף עמודות אנכיות, ואז להבין כיצד להשיג זאת באמצעות XSL. אם מישהו מעוניין בזה, . אפשר לשכנע לנסות אותו ולעבוד לבדוק אם יש פגמים. אם מישהו כבר עשה את זה, אנא יידע אותי ואקשר בשמחה לבלוג שלך 🙂

אני חושבת אתגר עם גרף אנכי זה התוויות עבור הגרף קשים יותר לניהול, אבל בהחלט לא בלתי אפשרי.

של שדה שם הבנתי אותך:

יש לפחות שני דברים לחפש עם שמות השדות שלך.

הראשונה, שם שדה ברווח חייב להיות נמלט את ה-XSL. זה יהיה כנראה בעיה כאן:

        <xsl:משתנה שם="totalProposed" 
בחר="ספירה(/dsQueryResponse/שורות/שורה[לנרמל-מרחב(@Status) = 'הציע'])" />

אם מצבך"" טור בעצם קוראים "קוד מצב" אז אתה צריך להפנות את זה בתור "Status_x0020_Code":

   <xsl:משתנה שם="totalProposed" 
בחר="ספירה(/dsQueryResponse/שורות/שורה[לנרמל-מרחב(@Status_x0020_Code) = 'הציע'])" />

שנייה, . ואני קצת מעורפלים בעניין, אבל אתה גם צריך להיות בכוננות לבואם של שינויי שמות שדה. אם אתה שם את שדה "קוד מצב" ולאחר מכן על, לשנות את שם "מצב דינה אזולאי", "השם הפנימי" לא משנה. השם הפנימי עדיין יהיה "קוד מצב" ואת חייבת להיות הפניה כמו "Status_x0020_Code". "המשאבים האחרים" קישורים עשוי לסייע לאבחן ולתקן בעיות כאלה.

על הצבע הזה:

אני בחרתי "אדום" כי זה לרצות אותי כרגע. זה לא יהיה עניין גדול להראות צבעים שונים כדי לספק יותר מאשר תיאור חזותי של מספר, אבל גם לספק KPI שימושי. לדוגמה, אם האחוז של "התקועה" הוא של דינה אזולאי > 10% אז תראי את זה אדום, אחרת להראות את זה בשחור. השימוש <xsl:בחר> כדי להשיג את זה.

משאבים אחרים:

שינוי צורה של שמחה!

<סיום />

מנוי על הבלוג שלי!

SharePoint אינו מספק “למי יש גישה” דוחות

עדכון 01/28/08: הפרויקט codeplex פותר בעיה זו: http://www.codeplex.com/AccessChecker. לא השתמשתי בו, אבל הוא נראה מבטיח, אם זה בעיה שאתה צריך כתובת בסביבה שלך.

עדכון 11/13/08: ג'ואל אולסן כתבו פוסט טוב מאוד על גדול יותר ניהול בעיית האבטחה כאן: http://www.sharepointjoel.com/ Lists/Posts/Post.aspx?רשימת = 0cd1a63d % 2D183c % 2D4fc2 %2 D 8320% 2Dba5369008acb&ID = 113. זה קישורים למספר משאבים שימושיים אחרים.

פורום משתמשים ולקוחות מרבים לשאול שאלה לאורך שורות אלה: "כיצד אוכל ליצור רשימה של כל המשתמשים בעלי גישה לאתר" או "איך יכול אני אוטומטית להתריע לכל המשתמשים בעלי גישה לרשימת על שינויים שבוצעו ברשימה?"

אי אפשר לצאת של הפתרון תיבת בשביל זה. אם אתה חושב על זה לרגע, זה לא קשה להבין למה.

SharePoint ביטחון הוא מאוד גמיש. יש לפחות ארבע הקטגוריות העיקריות של משתמשים:

  • משתמשים אנונימיים.
  • SharePoint משתמשים וקבוצות.
  • מדריך משתמשים פעילים.
  • טפסים מבוסס אימות (FBA) משתמשים.

הגמישות אומר הרי מנקודת ראות ביטחונית, בכל אתר SharePoint נתון יהיה שונה באופן משמעותי אחר. על מנת ליצור דוח רשימה ב- access, צריך לברר איך האתר מאובטח, שאילתה מספר מאגרים פרופיל משתמש אחר ולאחר מכן להציג את זה בצורה שימושית. זו בעיה קשה לפתרון כללי.

איך מתמודדים ארגונים עם זה? אשמח לשמוע ממך הערות או דוא.

</קצה>

תגיות טכנורטי: ,

מוס מספרת לי עמודה שמי שמורות או שימוש ב- … אבל זה לא

עדכון 12/04/07: ראה זה Microsoft KB (http://support.microsoft.com/kb/923589) עבור מידע קשור.

למעשה, מסתבר שזה הוא, אבל ערמומי מוס היה צריך לעשות את זה קשה.

הלקוח שלי עושה כמה עבודות הפיתוח באתר שלו מוס במהלך סוף השבוע. זה קצת ערבוב לגבי מה שהוא באמת עשה, אבל התוצאה הסופית היא זו:

  • הוא מנסה להוסיף עמודת אתר שנקרא "כמות" ותשובות מוס: "שם העמודה שהזנת נמצא כבר בשימוש או ששוריינו. לבחור שם אחר."
  • הוא מנסה להוסיף אותו בסביבת אחרת, וזה מתאים. לכן, "כמות" הוא לא שם שמור.
  • הוא מנסה למצוא עמודה קיימת באתר בשם "כמות" זה אוסף אתרים. הוא לא יכול למצוא את זה.

עשיתי כמה מחקר, אפילו כמה קידוד, שעווה פילוסופי ואז סוף סוף מצאה כי עמודה בשם כמות עשה, למעשה, קיים. זה היה ב- "_ מוסתרת" קבוצה. ומכאן, לא הצלחנו למצוא אותו באמצעות ממשק המשתמש של SharePoint.

איך זה הגיע לשם? לא יודע, . אבל יש לי תיאוריה (או כמו אשתי. הייתי קורא לזה, "בלה בלה בלה"). איפשהו לאורך הקו, של תבנית ארבעים נפלאים היה הוסיף ומופעל כנראה באתר באוסף האתרים. זה היה מכן הפעלתה בוטלה (או באתר הוסר). עמודת האתר, עם זאת, נשאר אבל בתוך "_ מוסתרת" קבוצה. אם מישהו יודע יותר טוב, אנא הודע לי באמצעות דוא או לפרסם הערות.

SharePoint אמר את האמת. . זה בקושי שווה מדגישה כי הודעה זו אינה עוזרת כמו זה יכול להיות. יהיה נחמד לראות במזלג הודעה אל שתי הודעות שונות בעתיד: 1) לומר שם העמודה שמורה או לא. 2) אם זה לא שמור, הצג את האתר, או לפחות הקבוצה, איפה שם העמודה כבר נמצא בשימוש.

</קצה>

תגיות טכנורטי: , ,

הצגת נתונים אום באמצעות רשימה מותאמת אישית (או, עדיין Displayor נתונים אום נוסף [כמו YACC, אבל שונה])

היום, ביליתי קומץ של שעות באיתור הגורם מאחורי ההודעה "שם העמודה שהזנת נמצא כבר בשימוש או שמורות. לבחור שם אחר."

היתה אפשרות ליצור את העמודה המדובר, נמחקת ונוצרת מחדש בסביבה אחרת, אז ידעתי שזה לא היה שם שמור. עם זאת, פשוט לא יכולתי למצוא את העמודה בכל מקום באמצעות ממשק המשתמש של SharePoint סטנדרטית בכל אתר באוסף האתרים.

פרסמתי כדי של פורום MSDN את עשוייה ללא חת אנדרו וודוורד הפנה אותי לכיוון של הנתונים המשמשים כבסיס של מודל אובייקט.

הלכתי codeplex כדי למצוא כמה כלים שיעזרו לי להציץ אל הנתונים המשמשים כבסיס אום ולעזור לי לאתר את הבעיה.

ניסיתי מספר כלים, הם היו מאוד מגניב, מעניין אבל בסופו של דבר, ממשק המשתמש לא היה מספיק טוב עבור המטרה שלי. אני לא מבקר אותם בכל האמצעים, אבל בבירור הכלי להכנת לא היה הבעיה שלי בראש כשהם יצרו UI שלהם :). נראה שרוב האנשים משקיעה כמות סבירה של זמן ומאמץ ביצירת תחנות עבודה / יישומי לקוח המספקים תצוגות עץ, לחץ לחיצה ימנית על תפריטים תלויי-הקשר, וכן הלאה. . אלה נחמדות והכל, אבל זה הרבה עבודה כדי ליצור חוויית משתמש top-of--line הוא גם גמיש מאוד.

. הייתי ממש תשובה לבעיה הזו. עלה בדעתי כי אם אוכל לקבל כל העמודות אתר באוסף האתרים לתוך רשימה מותאמת אישית, אני יכול לסנן, מיון ויצירת תצוגות שיכול לעזור לי למצוא עמודה קיימת לכאורה הזה (מה שאכן, דרך אגב). . אני הלכת ועשית את זה, לשעה או שעתיים מאוחר יותר, כל העמודות האתר שלי היה טעון לתוך רשימה מותאמת אישית עם קיבוץ, מיון וכדומה. מצאתי את התשובה אחרי חמש דקות.

אם וכאשר אני בהצלחה להשתלט על העולם, אני חושב שיפגשו כל ספקי כלים SharePoint לשקול ברצינות חיפוי הנתונים שלהם מודל אובייקט רשימה מותאמת אישית. ככה, יש לי את הכוח כדי לחפש בכל דרך שארצה (מוגבל, בטח, על-ידי תכונות sharepoint סטנדרטית).

פעולה מותאמת אישית של זרימת העבודה SharePoint Designer — תצפית על <סוג מעצב FieldBind =”StringBuilder” … />

רק תצפית מהר. כי יש הבדל חשוב בין שתי הגדרות אלה:

<שדה FieldBind = "InParam1" DesignerType = "StringBuilder" Id = "2" טקסט = "פרמטר קלט #1" />

לעומת:

<שדה FieldBind = "InParam1" Id = "2" טקסט = "פרמטר קלט #1" />

הראשון מראה כזה ב- SPD:

התמונה

תוך כדי ההופעות האחרון ככה:

התמונה

אני לא בטוח עד כמה צילומי המסך האלה מועילים אבל אני השקעתי מאמץ לעשות אותם אז אתה צריך לראות אותם 🙂

התצפית זה: StringBuilder מאפשר לך לבנות מחרוזת (. ברור) על ידי ערבוב יחד מחרוזת מילולית ועל זרימת הנתונים (דרך "הוספת בדיקת מידע" הלחצן בפינה השמאלית התחתונה). כאשר תשתמש בלחצן הוסף בדיקת מידע, הוא מוסיף רכיב token בדמות"[%האסימון %]". מתי SharePoint הפעלת הפעולה המותאמת אישית שלך, (C# קוד במקרה שלי), SharePoint עובר האסימון עצמה, לא את הערך של ה-token. אם אתה משתמש סוג ברירת המחדל של מעצבים (הסוג השני), SharePoint מרחיבה את ה-token ומעביר את הערך הממשי של ה-token לפעולה שלך.

StringBuilder = רע, ברירת מחדל סוג מעצבים = טוב.

בטח, . זה לא מה שהתכוונתי. לא וננסה להעביר פרמטר שלך פעולה מותאמת אישית כאשר המעצב מקליד = StringBuilder. להשתמש את סוג מעצבים ברירת המחדל ואת שרשרת StringBuilder אליו מקדימה אם אתה צריך לבנות מחרוזות המורכבים בזרימת העבודה שלך (דרך אגב שזה בדיוק מה שעושים כדי ליצור נושא דינמי עבור הפעולה דוא, אבל זה נושא אחר בבלוג, הר הר).

<סיום />

הפעלת זרימת עבודה מוקדמת — פתרון שאינם רפואיים

עדכון: לראות את הדיון הזה-MSDN, במיוחד את הערך האחרון: http://forums.microsoft.com/MSDN/showpost.aspx?postid=2631057&siteid=1. היא מתארת מצב זה עשוי לקצר את כל העניין. בקיצור, זה יכול להיות פשוט כמו ביצוע לפחות אחד מהשדות חובה.

. יש לי ספריית מסמכים התומכת שמונה סוגי תוכן.

. יש לי זרימת עבודה של SharePoint Designer שרוצה לחשב ולהקצות תאריך תזכורת"" על-ידי חיסור פשוט 30 ימים מעמודה אחרת, "תאריך יעד". זה צריך לקרות רק עבור אחד מסוגי תוכן, "ביטוח". המטרה העסקית היא לייצר KPI המציגה שתי קטגוריות של מסמכי ביטוח: "עומד לפוג" של "שפג תוקפם." (אתה יכול לקרוא יותר על סוג זה של ה-KPI ויותר ניכר הסתעפות כאן).

הגדירו את זרימת העבודה לפטר בעת יצירה של פריט חדש, כאשר מתבצע שינוי בפריט. הרעיון הוא כאשר מסמך הביטוח מועלה, נוכל לחשב את תאריך אזהרה"" בהתבסס על תאריך התפוגה. זוג של נופים עובד בקשר עם רשימת KPI כדי להדגיש תנאים אלה כאשר משתמשים פגע דף הבית שלהם.

אסטרטגיה זו לא עובד כאשר אני מעלה מסמך.

אפשר להעלות את המסמך, אני הצגתי עם המסך הזנת נתוני meta. בנקודה זו, . אני כבר בצרות. SharePoint כבר, בטרם עת מנקודת המבט שלי, פיטרו את זרימת העבודה. לא היה לי הזדמנות לבחור את סוג התוכן הנכון ולא להקצות תאריך יעד. באותו זמן, זרימת העבודה לא לירות כשאני מקיש על לחצן השליחה בזמן הזה. יש איזה הגיון מובנה המאמינה "" זה קודם כל להגיש חלק "צור" אירוע. כל כך … זרימת העבודה שלי ירה, מתי שזה הוצא להורג, זה הועבר ערכי ברירת מחדל meta נתונים.

הטוב ביותר העבודה שאני מכיר היא להכניס "הפסקה עד" פעילות בזרימת העבודה. . יש לי אמרה זרימת עבודה 1 דקה. בזמן זה הוא חושב על זה, לבחור את סוג התוכן הנכון, הזינו את נתוני meta. ההשהיה משלים וממשיך זרימת העבודה כנדרש. (שים לב כי בסביבה שלי, שעון העצר של פעילויות זרימת עבודה מ- SPD אינם פועלים מחוץ לקופסה. ייתכן באותן צרות. ראה כאן לקבלת פרטים נוספים).

. אני לא אוהב "עיכוב קסם" עבודה.. מה קורה אם המשתמש העלאת מסמך ואת הטלפון מצלצל. השיחה שהתפתח outlasts ההשהיה? אני יכול לגרום יותר זמן ההשהיה, אבל אני עדיין לא אוהב את זה.

כתבתי על זה בפורומים MSDN כאן: http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2430725&SiteID=1