คลังเก็บหมวดหมู่: พัฒนาของ SharePoint

ระวังการแตกหักการเปลี่ยนแปลงไปยัง ItemStyle.xsl

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

ไม่สามารถแสดง Web Part นี้. เมื่อต้องการแก้ไขปัญหา, เปิดหน้าเว็บนี้ในตัวแก้ไข HTML ที่เข้ากันได้กับ Windows SharePoint Services เช่น Microsoft Office SharePoint Designer. ถ้าปัญหายังคงอยู่, ติดต่อผู้ดูแลเซิร์ฟเวอร์ของเว็บ.

ผมตำหนิการไคลเอ็นต์ (ไม่รู้ตัวว่ายังว่า มันเป็นความผิดของฉันณจุดนี้) แต่ในที่สุดพบ intellisense studio แสดงผลที่ถูกเตือนฉันว่า ผมมีรูปแบบ XSL. ฉันแก้ไขทุกอย่างเริ่มทำงาน.

ระวัง darned เมื่อทำงานกับ ItemStyle.xsl (และแฟ้ม XSL สากลใด ๆ) — การแบ่งดังกล่าวมีผลต่อสิ่งประดิษฐ์หลายอย่างในไซต์คอลเลกชัน.

<สิ้นสุด />

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

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

กล่อง, มอส’ 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:

สร้างกราฟแท่งใน 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:เลือก> เพื่อให้บรรลุนี้.

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

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

<สิ้นสุด />

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

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

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

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

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

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

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

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

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