บาร์มีสวยเพื่อขยายมอสส์

วันนี้, ผมทำงานกับไคลเอนต์ และอธิบายวิธี การปรับเปลี่ยนแบบสอบถามเนื้อหา web part แสดงบิตเพิ่มเติมข้อมูลจากชนิดของเนื้อหา.

"ครั้งแรก, คุณตั้งค่าคอนฟิก CQWP การเชื่อมต่อกับแหล่งข้อมูล, แล้ว คุณส่งการเวิร์กสเตชันของคุณ, ปรับเปลี่ยน <CommonViewFields>, อัปโหลด, เอาต้นฉบับ และตอนนี้ มัน ' งเยีย’ การแสดงคอลัมน์เหล่านั้น. ถัดไป, เปิดตัวออกแบบของ SharePoint, นำทางไปยังไซต์คอลเลกชันราก และค้นหา ItemStyle.xsl. คัดลอกแม่แบบอย่างใดอย่างหนึ่งเป็นจุดเริ่มต้นมีประโยชน์. ย้อนกลับ และแก้ไข CQWP ให้ใช้แม่แบบใหม่นี้. ขั้นตอนสุดท้าย, ปรับเปลี่ยนแม่แบบเพื่อแสดงเขตข้อมูลของคุณใหม่! (อย่าลืมตรวจสอบกลับในที่อื่นผู้ใช้จะเห็นผล)."

มีทั้งหมดค่อนข้างชัดเจนกับฉัน (และส่วนใหญ่ของเราชนิด SharePoint สำหรับนักพัฒนา) จะเกิดอะไรขึ้นและว่าจะค่อนข้างดี, จริง ๆ, ว่า ด้านเรียกข้อมูลของ CQWP จะให้ดีแยกต่างหากจากด้านนำเสนอข้อมูล. แต่, ไม่ใช่เรื่องง่ายดังนั้นการอธิบาย, มัน?

<สิ้นสุด />

แท็กของ Technorati: ,

แสดงเนื้อหาแบบสอบถามเว็บส่วนผลลัพธ์ในเส้นตาราง / ตาราง

ภาพรวมและวัตถุประสงค์

กล่อง, มอส’ Web part สำหรับแบบสอบถามเนื้อหา (CQWP) แสดงผลของรูปแบบรายการ, คล้ายกับผลลัพธ์การค้นหา. ก็ยังสามารถแสดงผลลัพธ์ในรูปแบบตาราง (อาทิ. รูปแบบตาราง HTML). รูปแบบตารางจะดีกว่าในบางกรณี. ผมอธิบายวิธีการให้บรรลุผลนั้นในบทความนี้.

สถานการณ์ของธุรกิจ

ฉันทำงานกับไคลเอนต์ในการไวร์เลสมอทั่วทั้งองค์กร. เราได้ออกแบบระบบของพวกเขาให้เป็นพลเมืองชั้นหนึ่งในลำดับชั้นโครงการ และมีไซต์ระดับบนสุดของตัวเอง. ผู้จัดการโครงการรักษารายการเดี่ยวของข้อมูลสรุปโครงการ, เช่นชื่อเรื่อง, งบประมาณ, วันสิ้นสุดที่คาดไว้, งบประมาณคงเหลือและเขตข้อมูลอื่นชนิดสรุป. โดย "ซิงเกิลตัน" ผมหมายถึง รายการ SharePoint แบบกำหนดเองที่รับประกันว่า จะประกอบด้วยเพียงรายการเดียว. Simplistically, โดยมีลักษณะดังนี้:

รูปภาพ

วิธีทางเทคนิคอยู่มากเหมือนกันตามที่อธิบายไว้ ที่นี่ (http://paulgalvin.spaces.live.com/blog/cns!1CC1EDB3DAA9B8AA!447.entry). CQWP การใช้การแปลง XSL ผาย HTML ในเบราว์เซอร์แสดง.

ฉันวาดภาพเสมอผลก่อนดำลงใน XSL เพราะ XSL เป็นฝันร้าย. นี่คือผลของฉันต้อง:

รูปภาพ

ผลลัพธ์ที่สร้าง HTML ดังนี้:

<html>
 <เนื้อความ>
 <ศูนย์>
 <ตาราง เส้นขอบ= 1>

<!-- ป้ายชื่อ->
 <tr bgcolor=สีฟ้า>
 <td><แบบอักษร สี=ขาว><b>ชื่อโครงการ</b></แบบอักษร></td>
 <td การจัดตำแหน่ง=ขวา><แบบอักษร สี=ขาว><b>วันเสร็จสมบูรณ์</b></แบบอักษร></td>
 <td การจัดตำแหน่ง=ขวา><แบบอักษร สี=ขาว><b>งบประมาณ</b></แบบอักษร></td>
 <td การจัดตำแหน่ง=ขวา><แบบอักษร สี=ขาว><b>ค่าใช้จ่ายจริง</b></แบบอักษร></td>
 <td><แบบอักษร สี=ขาว><b>สถานะโดยรวม</b></แบบอักษร></td>
 </tr>

<tr>
 <td>ห้องคอมพิวเตอร์ใหม่ลวด.</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. แก้ไข XML ของ CQWP เพื่อรวบรวมค่าคอลัมน์เพิ่มเติม.
  6. แก้ไข XSL เพื่อสร้างตาราง.

ฉันจะเน้นเลขหก. หมายเลขหนึ่งถึงสี่คือ ตรงไปข้างหน้าและสิ่งที่ผู้ใช้ CQWP แล้วทำ. หมายเลข 5 ได้รับเอกสารเชิญผู้อื่นรวมถึงหมดแรงจอลาเดนบทความนี้จาก 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 การสร้างแบบกำหนดเอง / รุ่น ItemStyle.xsl unghosted. ฉันทำตามคำแนะนำของเฮ, ค่าผ่านขั้นตอน 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:พารามิเตอร์ ชื่อ="CurPosition" />

    <!--
      เพิ่ม "LastRow" พารามิเตอร์.
      เราเพียงใช้เมื่อผ่านรูปแบบรายการใน "ตาราง".
    -->
    <xsl:พารามิเตอร์ ชื่อ="LastRow" />

    <xsl:เลือก>
      <xsl:เมื่อ ทดสอบ="@Style = 'NewsRollUpItem'">
        <xsl:แม่แบบที่ใช้ เลือก="." โหมด="itemstyle">
          <xsl:มีพารามิเตอร์ ชื่อ="EditMode" เลือก="$cbq_iseditmode" />
        </xsl:แม่แบบที่ใช้>
      </xsl:เมื่อ>
      <xsl:เมื่อ ทดสอบ="@Style = 'NewsBigItem'">
        <xsl:แม่แบบที่ใช้ เลือก="." โหมด="itemstyle">
          <xsl:มีพารามิเตอร์ ชื่อ="CurPos" เลือก="$CurPosition" />
        </xsl:แม่แบบที่ใช้>
      </xsl:เมื่อ>
      <xsl:เมื่อ ทดสอบ="@Style = 'NewsCategoryItem'">
        <xsl:แม่แบบที่ใช้ เลือก="." โหมด="itemstyle">
          <xsl:มีพารามิเตอร์ ชื่อ="CurPos" เลือก="$CurPosition" />
        </xsl:แม่แบบที่ใช้>
      </xsl:เมื่อ>

      <!--
              ส่งตำแหน่งปัจจุบันและ lastrow ไปแบบ itemstyle.xsl ตาราง.
              ItemStyle.xsl จะใช้ที่กิ๊กเปิด และปิด <ตาราง> แท็ก.
      -->
      <xsl:เมื่อ ทดสอบ="@Style = 'เส้นตาราง'">
        <xsl:แม่แบบที่ใช้ เลือก="." โหมด="itemstyle">
          <xsl:มีพารามิเตอร์ ชื่อ="CurPos" เลือก="$CurPosition" />
          <xsl:มีพารามิเตอร์ ชื่อ="ล่าสุด" เลือก="$LastRow" />
        </xsl:แม่แบบที่ใช้>
      </xsl:เมื่อ>

      <xsl:มิฉะนั้น>
        <xsl:แม่แบบที่ใช้ เลือก="." โหมด="itemstyle">
        </xsl:แม่แบบที่ใช้>
      </xsl:มิฉะนั้น>
    </xsl:เลือก>
  </xsl:แม่แบบ>

ความคิดเห็นอธิบายวัตถุประสงค์ของการเปลี่ยนแปลง.

แน่นอน, "OuterTemplate.CallItemTemplate" ตัวเองเรียกว่าจากแม่แบบอื่น. ค้นหาแม่แบบนั้น โดยการค้นหาสายอักขระข้อความนี้:

<xsl:แม่แบบ ชื่อ="OuterTemplate.Body">

เลื่อนผ่านคำสั่งใน OuterTemplate.Body และแทรกพารามิเตอร์ LastRow ดังนี้ (แสดงเป็นข้อคิดเห็นเป็นตัวเอียง):

<xsl:เรียกแม่ ชื่อ="OuterTemplate.CallItemTemplate">
  <xsl:มีพารามิเตอร์ ชื่อ="CurPosition" เลือก="$CurPosition" />
  <!-- แทรกพารามิเตอร์ LastRow. -->
  <xsl:มีพารามิเตอร์ ชื่อ="LastRow" เลือก="$LastRow"/>
</xsl:เรียกแม่>

หลังจากทั้งหมดนี้, เรามีสิ่งที่ติดตั้งอย่างถูกต้องเพื่อ ItemStyle.xsl ของเราสามารถปล่อยในที่สุด <ตาราง> แท็กที่เหมาะ.

ItemStyle.Xsl

หมายเหตุ: อีกครั้ง, ตรวจสอบใน ItemStyle.xsl หลังจากทำการเปลี่ยนแปลงเพื่อให้คุณเห็นผลการเปลี่ยนแปลงเหล่านั้น.

เรามีงานที่นี่:

  • แทนแม่แบบตารางทั้งหมด. คุณสามารถคัดลอก/วางจากด้านล่าง.
  • เพิ่มบางจัมโบ้ mumbo นอกกำหนดแม่แบบที่ช่วยให้ "formatcurrency" แม่ทำงาน. (คุณสามารถทราบว่า มีจับ tenuous ใน XSL).

แรก, ใกล้ด้านบนของ ItemStyle.xsl, เพิ่มบรรทัดนี้:

  <!-- บางจัมโบ้ mumbo ที่ช่วยให้เราสามารถแสดงอเมริกา. สกุลเงิน. -->
  <xsl:รูปทศนิยม ชื่อ="พนักงาน" ตัวเลข="D" />

  <xsl:แม่แบบ ชื่อ="ค่าเริ่มต้น" ตรงกับ="*" โหมด="itemstyle">

หมายเหตุที่เพิ่มนั้นโดยตรงก่อน <xsl:ชื่อต้น "เริ่มต้น =" …> คำจำกัดความ.

ถัดไป, ย้อนกลับไปยังแม่แบบตารางของเรา. แทนแบบตารางทั้งหมด ด้วยรหัสต่อไปนี้. มีความเห็นอย่างละเอียด, แต่อย่าลังเลที่จะส่ง หรือฝากข้อคิดเห็นบนบล็อกของฉันถ้าคุณมีคำถาม.

  <xsl:แม่แบบ ชื่อ="เส้นตาราง" ตรงกับ="แถว[@Style = 'เส้นตาราง']" โหมด="itemstyle">

    <!--
      ContentMain.xsl ผ่าน CurPos และล่าสุด.
      เราใช้เหล่านี้อย่างมีเงื่อนไขกิ๊กเปิด และปิด <ตาราง> แท็ก.
    -->
    <xsl:พารามิเตอร์ ชื่อ="CurPos" />
    <xsl:พารามิเตอร์ ชื่อ="ล่าสุด" />

    <!-- ตัวแปรต่อไปนี้เป็น unmodified จาก ItemStyle.xsl มาตรฐาน -->
    <xsl:ตัวแปร ชื่อ="SafeImageUrl">
      <xsl:เรียกแม่ ชื่อ="OuterTemplate.GetSafeStaticUrl">
        <xsl:มีพารามิเตอร์ ชื่อ="UrlColumnName" เลือก="'ImageUrl'"/>
      </xsl:เรียกแม่>
    </xsl:ตัวแปร>
    <xsl:ตัวแปร ชื่อ="SafeLinkUrl">
      <xsl:เรียกแม่ ชื่อ="OuterTemplate.GetSafeLink">
        <xsl:มีพารามิเตอร์ ชื่อ="UrlColumnName" เลือก="'LinkUrl'"/>
      </xsl:เรียกแม่>
    </xsl:ตัวแปร>
    <xsl:ตัวแปร ชื่อ="DisplayTitle">
      <xsl:เรียกแม่ ชื่อ="OuterTemplate.GetTitle">
        <xsl:มีพารามิเตอร์ ชื่อ="ชื่อเรื่อง" เลือก="@Title"/>
        <xsl:มีพารามิเตอร์ ชื่อ="UrlColumnName" เลือก="'LinkUrl'"/>
      </xsl:เรียกแม่>
    </xsl:ตัวแปร>
    <xsl:ตัวแปร ชื่อ="LinkTarget">
      <xsl:ถ้า ทดสอบ="@OpenInNewWindow = 'จริง'" >_blank</xsl:ถ้า>
    </xsl:ตัวแปร>

    <!--
      ที่นี่เรากำหนดตัวแปร, "tableStart".  นี้ประกอบด้วย HTML ที่เราใช้กำหนดเปิดตัวเป็นป้ายชื่อคอลัมน์.  หมายเหตุว่า ถ้า CurPos = 1, รวม HTML แท็ก CDATA.
      มิฉะนั้น, มันจะว่างเปล่า.

      ค่าของ tableStart คือ emited ทุกครั้งที่เรียกว่า ItemStyle ผ่าน ContentQueryMain.xsl.
    -->
    <xsl:ตัวแปร ชื่อ="tableStart">
      <xsl:ถ้า ทดสอบ="$CurPos = 1">
        <![CDATA[
        <เส้นขอบตาราง = 1>
          <tr bgcolor = "บลู">
            <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:มีพารามิเตอร์ ชื่อ="ค่า" 
เลือก="@Project_x005F_x0020_Budget"></xsl:มีพารามิเตอร์> </xsl:เรียกแม่> </td> <td การจัดตำแหน่ง="ขวา"> <xsl:เรียกแม่ ชื่อ="formatcurrency"> <xsl:มีพารามิเตอร์ ชื่อ="ค่า" เลือก="@Project_x005F_x0020_Expenses">
</xsl:มีพารามิเตอร์> </xsl:เรียกแม่> </td> <td> <xsl:ค่าของ เลือก="@Project_x005F_x0020_Status"/> </td> <!-- ทั้งหมดต่อไปนี้เป็นความเห็นออกมาชี้แจงสิ่ง. อย่างไรก็ตาม, นำกลับมา และสิ่งนั้นเป็นการ <td> เมื่อต้องการดูผลของ. --> <!-- <รหัส div = "linkitem" ชั้น = "สินค้า"> <xsl:ถ้าทดสอบ = "สายอักขระความยาว($SafeImageUrl) != 0"> <div คลา = "ภาพตั้งซ้าย"> <การ href = "{$SafeLinkUrl}" เป้าหมาย = "{$LinkTarget}"> <ชั้นใช้ได้ img = "ภาพความกว้างคง" src = "{$SafeImageUrl}"
alt = "{@ImageUrlAltText}"/> </การ> </div> </xsl:ถ้า> <div คลา = "เชื่อมโยงสินค้า"> <xsl:เรียกแม่
name="OuterTemplate.CallPresenceStatusIconTemplate"/> <การ href = "{$SafeLinkUrl}"
เป้าหมาย = "{$LinkTarget}" ชื่อ = "{@LinkToolTip}"> <xsl:เลือกค่าของ = "$DisxslyTitle" /> </การ> <คลาส div = "คำอธิบาย"> <xsl:ค่าของ select="@Description" /> </div> </div> </div>
--> </tr> <!-- กิ๊กปิดตารางแท็ก. ถ้าเราไม่ได้อยู่ในแถวสุดท้าย, นี้จะว่างเปล่า. --> <xsl:ค่าของ เลือก="$tableEnd" ปิดการใช้งานผลผลิตหลบหนี="ใช่"/> </xsl:แม่แบบ> <xsl:แม่แบบ ชื่อ="formatcurrency"> <xsl:พารามิเตอร์ ชื่อ="ค่า" เลือก="0" /> <xsl:ค่าของ เลือก='รูปแบบหมายเลข($ค่า, "$DDD,DDD,DDDดีดี", "พนักงาน")' /> </xsl:แม่แบบ>

หน้าจอรายการข้อมูล WSS MOSS มาตรฐานสนับสนุนหล่นลงน้ำตก (หรือภายในอื่น ๆ -จากการสื่อสาร)

โปรแกรมปรับปรุง (04/2008): รายการนี้ดีบล็อกแสดง javascript ที่ดีตามแนวทางปัญหานี้: http://webborg.blogspot.com/2008/04/add-functions-and-events-to-sharepoint.html

ปรับปรุงครั้งที่สอง: (04/2008): รายการบล็อกนี้ดูแนวโน้มเช่น: http://www.cleverworkarounds.com/2008/03/13/free-mosswss-2007-web-part-hide-controls-via-javascript/

หลายครั้งต่อสัปดาห์, ถ้าไม่ทุกวัน, ผู้ใช้งานฟอรัมอธิบายความต้องการที่จะพบผ่านน้ำตกหล่นลงตามปกติ. ตัวอย่าง, มีตัวควบคุมสองตัวหล่นลง:

  • รายการของอเมริกา. อเมริกา
  • รายการของอเมริกา. เมือง.

เป็นผู้ให้ผู้รับผิดชอบ UI, เราต้องการให้มีดังนี้:

  • พอลเลือกอเมริกาเป็น. สถานะจากรายการแบบหล่นลง.
  • ทำให้เมืองแบบหล่นลงเพื่อกรองข้อมูลเฉพาะเมืองที่อยู่ในสถานะเลือกไว้.
  • พอลเลือกเมืองจากรายการที่กรองแล้วนี้.

ไม่มีการสนับสนุนสำหรับคุณลักษณะนี้ออกของกล่อง. อันที่จริง, ไม่มีการสนับสนุนสำหรับชนิดต่าง ๆ ของการสื่อสารโดยตรงแบบอินทรา OOB. นี้มีโปรแกรมซ่อน/เปิด/ปิดการใช้งานฟิลด์ในฟิลด์การเปลี่ยนแปลงอื่น ๆ ในแบบฟอร์ม.

วัตถุประสงค์แท้จริงของบทความนี้เพื่ออธิบายปัญหาและเหล่านี้เป็นตัวรู้ว่าพวกเขา:

  1. พัฒนาชนิดคอลัมน์ที่กำหนดเอง. เป็นการกำหนดคอลัมน์นักพัฒนา, คุณสามารถควบคุมเต็มโลก"" คอลัมน์ที่กำหนดเอง. คุณสามารถใช้การเรียงซ้อนแบบหล่นลงด้วยวิธี.
  2. พิจารณาโดยใช้ลำดับงาน. ในบางกรณี, คุณต้องกำหนดค่าให้ฟิลด์ค่าของฟิลด์อื่นโดยอัตโนมัติ. ในกรณีนี้, โดยปกติคุณจะพยายามที่จะใช้คอลัมน์คำนวณได้, แต่บางครั้ง, มันเพิ่งจะได้งานทำ. ลำดับงาน SharePoint Designer คือ เป็นทางเลือกค่อนข้างดูแลง่ายปล่อยลงรหัสและห้องภาพ. ถ้าคุณไปเส้นทางนี้, ตระหนักถึงเรื่องนี้ บทความนี้ (http://paulgalvin.spaces.live.com/blog/cns!CC1EDB3DAA9B8AA!405.entry).
  3. ตัวจัดการเหตุการณ์: เช่นลำดับ, นี้เป็นโซลูชันหลังจริง. ตัวจัดการเหตุการณ์ของคุณเป็นแอสเซมบลี.NET (C#, เหนือ) การ SharePoint ที่ส่งต่อการควบคุม. วัตถุที่คุณพัฒนาได้เข้าถึงข้อมูลของรายการ (และรูปแบบวัตถุทั้งหมด) และสามารถทำการคำนวณที่จำเป็น.
  4. ใช้ SharePoint Designer เพื่อสร้างแบบฟอร์มรายการแบบกำหนดเอง. ไม่มีประสบการณ์โดยตรง ด้วยวิธีการนี้, but I hear they are doing good things with NewForm.aspx these days 🙂
  5. ม้วนของ ASP.NET ข้อมูลรายการฟังก์ชัน (เป็นเว็บเพจแบบสแตนด์อโลน หรือ เป็นส่วนหนึ่งของเว็บ) และใช้แทน.

ถ้าใครรู้ว่าตัวอื่น หรือดีกว่า, โปรดแสดงความคิดเห็น และฉันจะปรับปรุงเนื้อหาของบทความนี้.

<สิ้นสุด />

แท็กของ Technorati:

ใช่/ไม่ใช่ (กล่องกาเครื่องหมาย) กรองในเนื้อหาแบบสอบถาม Web Part

การกรองสำหรับแบบสอบถามแบบ Yes/กล่อง กาเครื่องหมายไม่มีสิทธิ์ "PG ก้าว", กำหนดค่า CQWP เช่นนี้:

รูปภาพ

นี่คืออีกหนึ่งคำถามที่ชัดเจนครั้งเดียวคุณรู้มัน แต่ hard-to-find-an-answer-to: วิธีการกรองใช่/ไม่มีกล่องกาเครื่องหมายที่ใช้แบบสอบถามเนื้อหา web part.

ครั้งแรก ผลการค้นหา หาโดยใช้คำค้นหา "กรองสอบถามใช่/ไม่ใช่เนื้อหา web part" ถูกแบนออกไป, ดังนั้นฉันคิดว่า ฉันจะวางนี้มี และดูถ้ามันสามารถแทนผลลัพธ์ไม่ถูกต้องในผลลัพธ์การค้นหาทั่วไป.

ค่อนข้างง่าย: จริงค่า = "1" และค่าเท็จไม่เท่ากับ "1" (ย้อนยุคสวย, จริง).

ในตัวอย่างข้างต้น, สร้างชนิดคอลัมน์ไซต์ Yes/No" (กล่องกาเครื่องหมาย)" ชื่อ "PG ก้าว". เพิ่มเข้าไปในไลบรารีเอกสาร, อัปโหลดเอกสารกี่, ตั้งค่าสำหรับคู่รัก และทดสอบ.

<สิ้นสุด />

สร้างกราฟแท่งใน SharePoint

ภาพรวม:

(โปรแกรมปรับปรุง 12/04/07: เพิ่มทรัพยากรอื่นที่น่าสนใจที่สุดที่เชื่อมโยงกับบล็อกอื่นที่อยู่นี้ผ่านทาง web part น่าสนใจมาก)

รายการบล็อกนี้อธิบายถึงวิธีการสร้างกราฟแท่งใน SharePoint. ใช้งานในสภาพแวดล้อม WSS และมอสส์เป็นมันเพียงขึ้นอยู่กับ web part มุมมองข้อมูล.

แนวทางโดยรวมจะเป็นดังนี้:

  1. สร้างรายการ หรือไลบรารีเอกสารที่ประกอบด้วยข้อมูลที่คุณต้องการกราฟ.
  2. วางไลบรารีเอกสารที่เกี่ยวข้อง / แบบกำหนดเองรายการลงบนหน้า และแปลง web part สำหรับมุมมองข้อมูล (DVWP).
  3. แก้ไข XSL ของ DVWP เพื่อสร้าง HTML ที่แสดงเป็นกราฟ.

สถานการณ์ของธุรกิจ / การตั้งค่า:

ฉันสร้างรายการกำหนดเอง มีคอลัมน์ชื่อมาตรฐานและคอลัมน์หนึ่งเพิ่มเติม, "สถานะ". รุ่นนี้ (simplistically มาก) อนุญาต"สำหรับค่าใช้จ่าย" สถานการณ์สมมติที่ชื่อแทนโครงการและสถานะค่าจากรายการ:

  • การนำเสนอ
  • ในกระบวนการ
  • หยุดการทำงาน

วัตถุประสงค์คือการ ผลิตเป็นแบบแนวนอนกราฟแท่งที่แสดงรหัสสถานะนี้.

ผมได้รวบรวมรายชื่อ และลักษณะเช่นนี้:

รูปภาพ

สร้าง Web Part มุมมองข้อมูล:

สร้าง DVWP โดยการเพิ่มรายการที่กำหนดเองเพ (หน้าเว็บไซต์ในกรณีของฉัน) ทำตามคำแนะนำ ที่นี่ (http://paulgalvin.spaces.live.com/blog/cns!1CC1EDB3DAA9B8AA!395.entry).

นอกจากเพียงแค่สร้างการ DVWP, เรายังจำเป็นต้องตั้งค่าคุณสมบัติแบ่งหน้าเพื่อแสดงแถวที่ว่าง. สำหรับฉัน, นี้ดูเหมือน:

รูปภาพ

ณ จุดนี้, ฉันปิดเสมอ SPD และเบราว์เซอร์. ฉันแล้วเปิดใหม่หน้าใช้เบราว์เซอร์. นี้หลีกเลี่ยงโดยไม่ตั้งใจ mucking ค่าโครงร่างส่วนเว็บหน้า.

แก้ไข XSLT:

ถึงตอนนี้เวลาแก้ไข XSLT.

จะทำสตูดิโอภาพนี้. (ดู ที่นี่ สำหรับบันทึกสำคัญเกี่ยวกับ intellisense ที่จะช่วยคุณได้เยอะ).

ฉันสร้างโครงการที่มีว่างเพิ่มแฟ้มใหม่ 4 (แทนคำว่า "ต้นฉบับ" และ "ใหม่" ตามความเหมาะสม):

  • 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 bgcolor =สีแดง><td>&nbsp;</td></tr></ตาราง></td>
</tr>
<tr>
<ความกว้างของ td = 10%>ปิด</td>
<td><ตาราง cellpadding ="0" cellspacing ="0" เส้นขอบความกว้าง 0 = = 25%><tr bgcolor =สีแดง><td>&nbsp;</td></tr></ตาราง></td>
</tr>
<tr>
<ความกว้างของ td = 10%>หยุดการทำงาน</td>
<td><ตาราง cellpadding ="0" cellspacing ="0" เส้นขอบความกว้าง 0 = = 25%><tr bgcolor =สีแดง><td>&nbsp;</td></tr></ตาราง></td>
</tr>
</ตาราง>
</td>
</tr>
</ตาราง>
</เนื้อความ>
</html>

ใช้วิธีการแบบง่ายตายเพื่อสร้างบาร์ของฉันโดยการกำหนดสีของแถวที่จะ "แดง".

ที่นี่จัดเป็น: ในสุด, ทั้งหมดที่เราทำคือการสร้าง HTML ด้วยแถวและคอลัมน์.

เท็มเพลต XSLT:

ฉันได้คัดลอก XSLT ที่สร้างกราฟแท่งแนวนอน. ก็ค่อนข้างดีความเห็นเพื่อที่จะไม่เพิ่มมากที่นี่ยกเว้นบันทึกย่อเหล่านี้:

  • ผมเริ่ม ด้วย XSL ที่ SharePoint Designer ให้ผมเมื่อแรกสร้าง DVWP เริ่มต้น.
  • ผมสามารถที่จะตัดนี้ลงจากของ SPD 657 บรรทัด 166 บรรทัด.
  • ฉันไม่ยุ่งสถานกับพารามิเตอร์ XML แฟ้ม (ซึ่งจะแยกต่างหากจาก XSL และคุณจะรู้ว่าผมหมายถึงเมื่อคุณไปปรับเปลี่ยน DVWP ตัวเอง; มีแฟ้มที่สองที่คุณสามารถปรับเปลี่ยน). อย่างไรก็ตาม, เพื่อลดความซับซ้อนของมัน, ผมไม่ได้เอาออกเกือบทั้งหมดของพวกเขาจาก XSL. นี้หมายความ ว่า ถ้าคุณต้องการใช้พารามิเตอร์เหล่านี้, คุณเพียงแค่เพิ่มคำนิยามตัวแปรไปใน XSL. ได้ง่ายเนื่องจากคุณจะมีคำนิยามตัวแปรเดิมที่ใช้ XSL ในโครงการ visual studio ของคุณ.
  • คุณควรจะสามารถคัดลอก และวางนี้ลงในโครงการ visual studio ของคุณโดยตรง. แล้ว, เอาโทรศัพท์ของฉัน และแทรกการเรียกของคุณเองไป "ShowBar".
  • ลึกโดยสร้างเป็น <a 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="ผอบ:เค้าร่าง microsoft 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="ผอบ:เค้าร่าง microsoft com:สำนักงาน" xmlns:s="uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882"
xmlns:dt="uuid:C2F41010-65B3 - 11d 1-A29F-00AA00C14882" xmlns:อาร์เอส="ผอบ:เค้าร่าง microsoft com:rowset" xmlns:z="#RowsetSchema"
xmlns:ddwrt2="ผอบ:frontpage:ภายใน"
> <xsl:ผลผลิต วิธีการ="html" เยื้อง="ไม่ใช่" /> <xsl:รูปทศนิยม น่าน="" /> <xsl:พารามิเตอร์ ชื่อ="ListUrlDir"></xsl:พารามิเตอร์> <!-- ต้องนี้สนับสนุนความลึก. --> <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 div $dvt_RowCount" /> <xsl:ตัวแปร ชื่อ="totalInProcess" เลือก="การตรวจนับ(/dsQueryResponse/แถว/แถว[พื้นที่ปกติ(@Status) = 'กระบวนการ'])" /> <xsl:ตัวแปร ชื่อ="percentInProcess" เลือก="$totalInProcess div $dvt_RowCount" /> <xsl:ตัวแปร ชื่อ="totalStalled" เลือก="การตรวจนับ(/dsQueryResponse/แถว/แถว[พื้นที่ปกติ(@Status) = 'หยุดการทำงาน'])" /> <xsl:ตัวแปร ชื่อ="percentStalled" เลือก="$totalStalled div $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. รายการทั้งหมดของรหัสสถานะนี้ (ไม่ผลรวมของรหัสสถานะทั้งหมด). มัน emits เป็น <tr></tr> และเส้นกราฟแท่งแนวนอน. เราเรียกแม่แบบนี้สำหรับแต่ละรหัสสถานะที่เราต้องการดู. --> <xsl:เรียกแม่ ชื่อ="ShowBar"> <xsl:มีพารามิเตอร์ ชื่อ="BarDisplayLabel" เลือก="'นำเสนอ'"/> <xsl:มีพารามิเตอร์ ชื่อ="BarPercent" เลือก="$percentProposed"/> <xsl:มีพารามิเตอร์ ชื่อ="QueryFilterFieldName" เลือก="'สถานะ'"/> <xsl:มีพารามิเตอร์ ชื่อ="QueryFilterFieldValue" เลือก="'นำเสนอ'"/> <xsl:มีพารามิเตอร์ ชื่อ="TotalItems" เลือก="$totalProposed"></xsl:มีพารามิเตอร์> </xsl:เรียกแม่> <xsl:เรียกแม่ ชื่อ="ShowBar"> <xsl:มีพารามิเตอร์ ชื่อ="BarDisplayLabel" เลือก="'หยุดการทำงาน'"/> <xsl:มีพารามิเตอร์ ชื่อ="BarPercent" เลือก="$percentStalled"/> <xsl:มีพารามิเตอร์ ชื่อ="QueryFilterFieldName" เลือก="'สถานะ'"/> <xsl:มีพารามิเตอร์ ชื่อ="QueryFilterFieldValue" เลือก="'หยุดการทำงาน'"/> <xsl:มีพารามิเตอร์ ชื่อ="TotalItems" เลือก="$totalStalled"></xsl:มีพารามิเตอร์> </xsl:เรียกแม่> <xsl:เรียกแม่ ชื่อ="ShowBar"> <xsl:มีพารามิเตอร์ ชื่อ="BarDisplayLabel" เลือก="ในกระบวนการ'"/> <xsl:มีพารามิเตอร์ ชื่อ="BarPercent" เลือก="$percentInProcess"/> <xsl:มีพารามิเตอร์ ชื่อ="QueryFilterFieldName" เลือก="'สถานะ'"/> <xsl:มีพารามิเตอร์ ชื่อ="QueryFilterFieldValue" เลือก="ในกระบวนการ'"/> <xsl:มีพารามิเตอร์ ชื่อ="TotalItems" เลือก="$totalInProcess"></xsl:มีพารามิเตอร์> </xsl:เรียกแม่> </ตาราง> </td> </tr> </ตาราง> </xsl:มิฉะนั้น> </xsl:เลือก> </xsl:แม่แบบ> <!-- แม่แบบนี้ไม่ทำงานแสดงบรรทัดแต่ละบรรทัดในกราฟแท่ง. คุณคงจะทำส่วนใหญ่ของ tweaking ของคุณที่นี่. --> <xsl:แม่แบบ ชื่อ="ShowBar"> <xsl:พารามิเตอร์ ชื่อ="BarDisplayLabel" /> <!-- ป้ายชื่อที่จะแสดง --> <xsl:พารามิเตอร์ ชื่อ="BarPercent"/> <!-- เปอร์เซ็นต์ของผลรวม. --> <xsl:พารามิเตอร์ ชื่อ="QueryFilterFieldName"/> <!-- ใช้ในการไปสอบถาม & ตัวกรอง --> <xsl:พารามิเตอร์ ชื่อ="QueryFilterFieldValue"/> <!-- ใช้ในการไปสอบถาม & ตัวกรอง --> <xsl:พารามิเตอร์ ชื่อ="TotalItems" /> <!-- จำนวนรวมของ barlabel นี้ --> <tr> <!-- แถบป้ายชื่อตัวเอง. --> <td คลาส="นางสาว 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:มีพารามิเตอร์ ชื่อ="เปอร์เซ็นต์" เลือก="$BarPercent"/> </xsl:เรียกแม่>) </td> <!-- ขั้นตอนสุดท้าย, กิ๊กเป็น <td> แท็กสำหรับแถบตัวเอง.--> <td> <ตาราง cellpadding="0" cellspacing="0" เส้นขอบ="0" ความกว้าง="{ปัดเศษ($BarPercent * 100)+1}%"> <tr bgcolor="สีแดง"> <xsl:ข้อความ ปิดการใช้งานผลผลิตหลบหนี="ใช่"><![CDATA[&nbsp;]]></xsl:ข้อความ> </tr> </ตาราง> </td> </tr> </xsl:แม่แบบ> <!-- นี้นำมาโดยตรงจากบาง XSL ที่พบในแม่แบบ MS. --> <xsl:แม่แบบ ชื่อ="percentformat"> <xsl:พารามิเตอร์ ชื่อ="เปอร์เซ็นต์"/> <xsl:เลือก> <xsl:เมื่อ ทดสอบ="รูปแบบหมายเลข($เปอร์เซ็นต์, '#,##0%;-#,##0%')= 'น่าน'">0%</xsl:เมื่อ> <xsl:มิฉะนั้น> <xsl:ค่าของ เลือก="รูปแบบหมายเลข($เปอร์เซ็นต์, '#,##0%;-#,##0%')" /> </xsl:มิฉะนั้น> </xsl:เลือก> </xsl:แม่แบบ> </xsl:สไตล์ชีต>

ผลลัพธ์:

XSL จากข้างต้นสร้างกราฟนี้:

รูปภาพ

ลึกข้อมูลต้นแบบ โดยการคลิกที่รหัสสถานะ:

รูปภาพ

สรุปความคิด:

สามารถนี้สามารถตั้งค่าทั่วไป?

ชอบแนวคิดนี้สร้างกราฟ, แต่ผมเกลียดความจริงที่ต้องไป และไม่มากมือรหัส. ฉันได้รับเพียงเล็กน้อยคิดไปว่ามันสามารถจะตั้งค่าทั่วไป และผมในเชิงบวก, แต่ฉันยังกลัวเล็กน้อยอาจมีกำแพงอิฐอยู่ตามเส้นทางที่จะไม่มีการทำงานรอบ. ถ้าใครมีความคิดที่ดีบางอย่างนี้, โปรดสังเกตในข้อคิดเห็น หรือ อีเมล์ผม.

กราฟแนวตั้ง:

เป็นกราฟแท่งแนวนอน. แน่นอนสามารถสร้างกราฟแนวตั้ง. เราก็ต้องเปลี่ยน HTML. ฉันจะเริ่มต้นแบบเดียวกัน: สร้างการแสดง HTML ของกราฟแท่งแนวตั้ง และทราบวิธีการได้รับที่ผ่าน XSL. ถ้าใครสนใจที่, ฉันไม่สามารถเกลี้ยกล่อมให้ลอง และออกกิจกรรม. ถ้าคนทำที่, โปรดแจ้งให้เราทราบและฉันยินดีจะเชื่อมโยงไปยังบล็อกของคุณ🙂

ผมคิดว่า ท้าทายกับกราฟแนวตั้งเป็นว่า ป้ายชื่อสำหรับกราฟจะยากในการจัดการ, แต่แน่นอนไม่ได้.

ฟิลด์ชื่อ Gotcha:

มีสิ่งหนึ่งเพื่อออกค้นหา ด้วยชื่อของเขตข้อมูล.

แรก, ชื่อเขตข้อมูล มีช่องว่างเป็นต้องหนีใน XSL. นี้อาจจะมีปัญหานี่:

        <xsl:ตัวแปร ชื่อ="totalProposed" 
เลือก="การตรวจนับ(/dsQueryResponse/แถว/แถว[พื้นที่ปกติ(@Status) = 'นำเสนอ'])" />

ถ้าสถานะของคุณ"" คอลัมน์เป็นจริงชื่อ "รหัสสถานะ" คุณต้องอ้างอิงเป็น "Status_x0020_Code":

   <xsl:ตัวแปร ชื่อ="totalProposed" 
เลือก="การตรวจนับ(/dsQueryResponse/แถว/แถว[พื้นที่ปกติ(@Status_x0020_Code) = 'นำเสนอ'])" />

วินาที, และฉันพร่าเลือนเล็กน้อยนี้, แต่คุณยังจำเป็นต้องเกี่ยวกับการแจ้งเตือนการเปลี่ยนแปลงชื่อเขตข้อมูล. ถ้าคุณตั้งชื่อของฟิลด์ "รหัสสถานะ" และในภายหลังแล้ว, เปลี่ยนชื่อเป็น "AFE สถานะ", "ภายในชื่อ" ไม่มีการเปลี่ยนแปลง. ภายในจะยังคงถูก "รหัส สถานะ" และต้องอ้างอิงเป็น "Status_x0020_Code". "ทรัพยากรอื่น ๆ" การเชื่อมโยงอาจช่วยวินิจฉัย และแก้ไขปัญหาลักษณะนี้.

เกี่ยวกับสี:

ฉันเลือก "สีแดง" เพราะพอฉันในขณะนี้. ไม่เป็นไรจะแสดงสีที่แตกต่างเพื่อให้มากกว่าเพียงแค่คำอธิบายภาพของตัวเลข, แต่ ต้องมี KPI ที่เป็นประโยชน์. ตัวอย่าง, ถ้าหยุดเปอร์เซ็นต์ของ "การทำงาน" เป็นของ AFE > 10% แล้ว แสดงสีแดง, หรือ แสดงในสีดำ. ใช้ <xsl:เลือก> เพื่อให้บรรลุนี้.

ทรัพยากรอื่น ๆ:

เปลี่ยนความสุข!

<สิ้นสุด />

สมัครสมาชิกไปยังบล็อกของฉัน!

SharePoint ไม่ได้ให้ “ผู้ที่สามารถเข้าถึง” รายงาน

โปรแกรมปรับปรุง 01/28/08: โครงการนี้ codeplex จัดการปัญหานี้: http://www.codeplex.com/AccessChecker. ฉันได้ใช้มัน, แต่มีลักษณะสัญญาถ้าเป็นปัญหาคุณจำเป็นต้องอยู่ในสภาพแวดล้อมของคุณ.

โปรแกรมปรับปรุง 11/13/08: Joel Oleson wrote ขึ้นประกาศในดีมากบนขนาดใหญ่รักษาความปลอดภัยการจัดการปัญหานี่: http://www.sharepointjoel.com/Lists/Posts/Post.aspx?รายการ = 0cd1a63d % 2D183c % 2D4fc2% 2 D 8320% 2Dba5369008acb&ID = 113. เชื่อมโยงกับหมายเลขทรัพยากรที่มีประโยชน์อื่น ๆ.

ผู้ใช้ forum และลูกค้ามักจะถามคำถามตามแนวเส้นเหล่านี้: "วิธีทำฉันสร้างรายชื่อของผู้ใช้ทั้งหมดมีการเข้าถึงไปยังไซต์" หรือ "วิธีสามารถฉันโดยอัตโนมัติเตือนผู้ใช้ทุกคนเข้าถึงรายการที่เกี่ยวกับการเปลี่ยนแปลงที่เกิดขึ้นในรายการ?"

มีไม่ออกของการแก้ปัญหากล่องนี้. หากคุณคิดเกี่ยวกับมันเลย, ไม่ยากที่จะเข้าใจเหตุผล.

ความปลอดภัยของ SharePoint มีความยืดหยุ่นมาก. มีอย่างน้อยสี่ประเภทที่สำคัญของผู้ใช้:

  • ผู้ใช้ที่ไม่ระบุชื่อ.
  • ผู้ใช้ของ SharePoint และกลุ่ม.
  • ผู้ใช้ไดเรกทอรีที่ใช้งานอยู่.
  • แบบฟอร์มโดยใช้การรับรองความถูกต้อง (FBA) ผู้ใช้.

ความคล่องตัวหมายความ ว่า จากมุมมองด้านความปลอดภัย, ไซต์ SharePoint กำหนดจะแตกต่างจากที่อื่นอย่าง. เพื่อสร้างรายงานรายการการเข้าถึง, หนึ่งต้องการสำรวจวิธีที่ไซต์การรักษาความปลอดภัย, สอบถามเก็บข้อมูลของโพรไฟล์ผู้ใช้ที่แตกต่างกันหลาย และปัจจุบันในประโยชน์. มีปัญหาหนักเพื่อแก้ปัญหาโดยทั่วไปใน.

อย่างไรเป็นองค์กรจัดการกับนี้? ฉันอยากได้ยินจากคุณในข้อคิดเห็น หรือ อีเมล.

</สิ้นสุด>

มอสบอกให้ฉันของฉันชื่อคอลัมน์เป็น Reserved หรือใช้ใน … แต่ไม่ใช่

โปรแกรมปรับปรุง 12/04/07: ดู นี้ Microsoft KB (http://support.microsoft.com/kb/923589) สำหรับข้อมูลที่เกี่ยวข้อง.

จริง, มันจะออกเป็น, แต่ tricksy มอสได้ทำให้มันยาก.

ลูกค้าของฉันทำงานพัฒนาบนเขามอไซต์ผ่านวันหยุด. เป็นบิตของ jumble เป็นสิ่งที่เขาจะได้, แต่นี่คือผลลัพธ์สุดท้าย:

  • เขาพยายามที่จะเพิ่มคอลัมน์ไซต์เรียกว่า "ปริมาณ" และมอสตอบกลับ: "ชื่อคอลัมน์ที่คุณได้ป้อนอยู่แล้ว ในการใช้ หรือสงวนไว้. เลือกชื่ออื่น"
  • เขาพยายามเพิ่มสิ่งแวดล้อมอื่นและผลงานนั้น. ดังนั้น, "ปริมาณ" ไม่ใช่ชื่อที่สงวนไว้.
  • เขาพยายามที่จะค้นหาคอลัมน์ไซต์ที่มีอยู่มีชื่อว่า "ปริมาณ" ในไซต์คอลเลกชันนั้น. เขาไม่พบ.

ไม่ได้บาง วิจัย, และบางรหัส, waxed ปรัชญา และสุดท้าย พบว่า คอลัมน์ชื่อปริมาณไม่ได้, อันที่จริง, มีอยู่. ใน "_Hidden" กลุ่ม. ดังนั้น, เราไม่สามารถหาทางอินเทอร์เฟสผู้ใช้ SharePoint.

วิธีไม่ได้มันจะมี? ฉันไม่รู้, แต่มีทฤษฎี (หรือ เป็นภรรยาของฉันจะเรียกว่า, "blah blah blah"). บางแห่งตามแนว, การ แม่เยี่ยมสี่สิบ เพิ่ม และคงเปิดใช้งานในเว็บไซต์ในไซต์คอลเลกชัน. มันถูกปิดใช้งานแล้ว (หรือเอาเว็บไซต์). คอลัมน์ไซต์, อย่างไรก็ตาม, ยังคงอยู่แต่ในการ "_Hidden" กลุ่ม. ถ้าคนที่รู้ดีกว่า, กรุณาแจ้งให้เราทราบผ่าน อีเมล หรือลงรายการบัญชีข้อคิดเห็น.

SharePoint บอกความจริง. จึงไม่น่าชี้ให้เห็นว่า ข้อความที่ไม่เป็นประโยชน์ที่อาจ. มันจะดีจะดูที่ส้อมข้อความลงในข้อความที่แตกต่างกันสองในอนาคต: 1) บอกว่า จองชื่อคอลัมน์ หรือไม่. 2) ถ้าไม่จองไว้, แสดงไซต์, หรือน้อยได้, ที่แล้วได้ใช้ชื่อคอลัมน์.

</สิ้นสุด>

นำเสนอข้อมูลการออมผ่านรายการแบบกำหนดเอง (หรือ, ยังอื่นออมข้อมูล Displayor [เช่น YACC, แต่แตกต่างกัน])

วันนี้, ผมใช้กำมือของชั่วโมงการเกิดรากอยู่เบื้องหลังข้อความ "ชื่อคอลัมน์ที่คุณป้อนถูกใช้ หรือสงวนไว้. เลือกชื่ออื่น"

สามารถสร้างคอลัมน์ในคำถาม, ลบ และสร้างอีกครั้งในสภาพแวดล้อมอื่น, ดังนั้นฉันรู้มันไม่ได้ชื่อที่สงวน. อย่างไรก็ตาม, ก็ไม่พบคอลัมน์ใดก็ได้ผ่านอินเทอร์เฟสผู้ใช้ SharePoint มาตรฐานใด ๆ เว็บไซต์ในไซต์คอลเลกชัน.

ลงไป ฟอรั่ม MSDN ที่นี่ และ indomitable แอนดรูวูดวาร์ด ฉันชี้ในทิศทางของข้อมูลแบบจำลองวัตถุต้นแบบ.

ผมก็ปิดไป codeplex หาเครื่องมือบางอย่างที่จะช่วยให้ฉันเพื่อนเป็นระเบียนออม และช่วยค้นหาปัญหา.

พยายามเครื่องมือต่าง ๆ และพวกเขาเย็นมาก และน่าสนใจ แต่ ในสุด, UI ไม่ดีพอสำหรับวัตถุประสงค์ของฉัน. ผมก็ไม่วิจารณ์พวกเขาก็, แต่ชัดเจนเครื่องมือผู้ไม่มีปัญหาของฉันในใจเมื่อสร้าง UI ของพวกเขา :). คนส่วนใหญ่ดูเหมือน จะลงทุนเวลาและความพยายามในการสร้างเวิร์กสเตชันสมควร / แอพลิเคชันไคลเอนต์ที่แสดงมุมมองแผนภูมิ, คลิกขวาที่เมนูบริบทและต่อ ๆ. มีดีและ, แต่การทำงานเพื่อสร้างประสบการณ์ผู้ใช้บนบรรทัดที่ยืดหยุ่นมาก.

จริง ๆ ต้องคำตอบปัญหานี้. มันเกิดขึ้นกับผมที่ถ้าไม่ได้รับทั้งหมดของคอลัมน์ไซต์ในไซต์คอลเลกชันรายการกำหนดเอง, ฉันไม่สามารถกรอง, จัดเรียง และสร้างมุมมองที่จะช่วยฉันหาคอลัมน์นี้คาดคะเนอยู่ (ซึ่งมันไม่ได้, BTW). ฉันไปข้างหน้า และไม่ได้ที่ และชั่วโมง หรือสองในภายหลัง, คอลัมน์ไซต์ของฉันได้โหลดในรายการจัดกลุ่มกำหนดเองหรือไม่, การเรียงลำดับและอื่น ๆ. พบคำตอบของฉันในภายหลัง 5 นาที.

ถ้าผมใช้ประสบความสำเร็จทั่วโลกและเมื่อ, ผมคิดว่า จะตั้งให้ ผู้ให้บริการเครื่องมือ SharePoint ทั้งหมดต้องพิจารณาอย่างจริงจังการซ่อมแซมผิวหน้าข้อมูลรูปแบบวัตถุในรายการแบบกำหนดเอง. วิธีการที่, มีอำนาจ การค้นหาใดๆ ทางอยาก (จำกัด, แน่นอน, โดยลักษณะการทำงานของ sharepoint มาตรฐาน).

SharePoint Designer ลำดับงานดำเนินการเอง — สังเกตเกี่ยวกับ <ตัวออกแบบแบบ FieldBind ชนิด =”StringBuilder” … />

เพียงการสังเกตการณ์อย่างรวดเร็วว่า มีความแตกต่างที่สำคัญระหว่างข้อกำหนดเหล่านี้สอง:

<ฟิลด์ FieldBind = "InParam1" DesignerType = "StringBuilder" รหัส = "2" ข้อความ = "ป้อนพารามิเตอร์ #1" />

เมื่อเทียบกับ:

<ฟิลด์ FieldBind = "InParam1" รหัส = "2" ข้อความ = "ป้อนพารามิเตอร์ #1" />

ครั้งแรกแสดงเช่นนี้ใน SPD:

รูปภาพ

ในขณะที่แสดงหลังเช่นนี้:

รูปภาพ

I’m not sure how helpful these screen shots are but I put in the effort to make them so you have to view them 🙂

สังเกตที่นี่: StringBuilder ช่วยให้คุณสามารถสร้างสตริงที่ (เห็นได้ชัด) โดยผสมกันสายอักขระตัวอักษรและลำดับข้อมูล (ผ่านการ "เพิ่มการค้นหา" ปุ่มซ้ายล่าง). เมื่อคุณใช้ปุ่มการค้นหาเพิ่ม, แทรกโทเค็นในแบบฟอร์ม"[%โทเค็น%]". เมื่อ SharePoint ที่เรียกใช้การกระทำแบบกำหนดเองของคุณ, (C# รหัสในกรณีของฉัน), SharePoint ผ่านโทเค็นการ, ไม่ค่าโทเค็นการ. ถ้าคุณใช้ชนิดการออกแบบเริ่มต้น (ชนิดที่สอง), SharePoint ขยายโทเค็น และผ่านค่าจริงของโทเค็นการการกระทำของคุณ.

StringBuilder =ด้อย, เริ่มต้นออกแบบชนิด =ดี.

แน่นอน, ก็ไม่จริงไง. เพียงได้ไม่ลอง และส่งผ่านพารามิเตอร์การกระทำของคุณเองเมื่อแบบพิมพ์ = StringBuilder. ใช้ชนิดการออกแบบเริ่มต้นและโซ่ StringBuilder จะขึ้นหน้าถ้าคุณต้องการสร้างสตริงการซับซ้อนในเวิร์กโฟลว์ของคุณ (ซึ่งบังเอิญเป็นสิ่งที่หนึ่งไม่สร้างเรื่องแบบไดนามิกสำหรับการดำเนินการอีเมล์, แต่ที่เรื่องรายการบล็อกอื่น, ฮาร์ฮาร์).

<สิ้นสุด />

เปิดใช้งานลำดับงานก่อนวัยอันควร — แก้ไขปัญหาไม่ใช่แพทย์

โปรแกรมปรับปรุง: ดูสนทนานี้ MSDN, โดยเฉพาะรายการสุดท้าย: http://forums.microsoft.com/MSDN/showpost.aspx?postid=2631057&siteid=1. อธิบายเงื่อนไขที่อาจสั้นวงจรเลย. ในระยะสั้น, มันอาจจะเป็นแค่ทำอย่างน้อยหนึ่งฟิลด์บังคับ.

มีไลบรารีเอกสารที่สนับสนุนเนื้อหาชนิด 8.

มีลำดับงาน SharePoint Designer ที่ต้องการคำนวณ และกำหนดวันแจ้งเตือน"" โดยเพียงแค่ลบ 30 วันจากคอลัมน์อื่น, "วัน". นี้จะเกิดขึ้นสำหรับเนื้อหาชนิดใดชนิดหนึ่งเท่านั้น, "ประกัน". วัตถุประสงค์ของธุรกิจคือการ ผลิต KPI ที่แสดงสองประเภทของเอกสารประกันภัย: "จะหมดอายุ" และ "หมด อายุ" (คุณสามารถอ่านเพิ่มเติม และเพิ่มเติมเกี่ยวกับชนิดของ KPI นี้พบลึก ที่นี่).

ฉันกำหนดค่าลำดับไฟ เมื่อสร้างสินค้าใหม่ และ เมื่อมีการปรับเปลี่ยนสินค้า. ความคิดคือเมื่ออัพโหลดเอกสารการประกันภัย, เราคำนวณวันเตือน"" ตามวันหมดอายุ. คู่ของมุมมองการทำงานกับรายการ KPI เน้นเงื่อนไขเหล่านี้เมื่อผู้ใช้กดหน้าของพวกเขา.

กลยุทธ์นี้ไม่ทำงานเมื่อฉันอัปโหลดเอกสาร.

Upload เอกสาร และฉันกำลังแสดงหน้าจอรายการข้อมูล meta. ณ จุดนี้, ฉันอยู่ในปัญหา. SharePoint ได้แล้ว, ก่อนกำหนดจากมุมมองของฉัน, ยิงลำดับ. ยังไม่มีโอกาสที่จะเลือกชนิดเนื้อหาถูกต้อง หรือกำหนดวันครบกำหนด. ในเวลาเดียวกัน, กระแสไฟเมื่อฉันกดปุ่มส่งในขณะนี้. มีตรรกะบางอย่างในตัวที่ "เชื่อ" ที่แรกถือเป็นส่วนหนึ่งของการ "สร้าง" เหตุการณ์. ดังนั้น … ลำดับงานของฉันได้ยิง และเมื่อการดำเนินการ, มันถูกส่งผ่านค่าข้อมูลเมตา.

สุดงานรอบผมรู้ว่าจะใส่เป็น "หยุดชั่วคราวจนกว่า" กิจกรรมในลำดับ. มีการหยุดลำดับงานสำหรับ 1 นาที. ในขณะที่มีการหยุด, เลือกชนิดเนื้อหาถูกต้อง, ใส่ข้อมูลเมตา และส่ง. หยุดชั่วคราวเสร็จสมบูรณ์ และดำเนินการลำดับงานตาม. (สังเกตว่า ในสภาพแวดล้อมของฉัน, กิจกรรมลำดับงานตัวจับเวลาจาก SPD ได้กล่อง. คุณอาจมีปัญหาเดียวกัน. ดู ที่นี่ สำหรับรายละเอียดเพิ่มเติม).

ฉันไม่ชอบ "วิเศษล่าช้า" งานสถาน. เกิดอะไรขึ้นถ้าผู้ใช้อัพโหลดเอกสาร และกริ่งโทรศัพท์ และการสนทนากันโดย outlasts หยุดชั่วคราว? ฉันสามารถทำให้หยุดชั่วคราวอีกต่อไป, แต่ยังไม่ชอบมัน.

ผมเขียนเกี่ยวกับเรื่องนี้ในฟอรั่ม MSDN ที่นี่: http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2430725&SiteID=1