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

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

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

22 คิดเกี่ยวกับ“แสดงเนื้อหาแบบสอบถามเว็บส่วนผลลัพธ์ในเส้นตาราง / ตาราง

  1. Andreas

    Aah… เพราะผมชื่อลักษณะของรายการของฉันแตกต่าง และไม่ได้ตระหนักว่า ใน ContentQueryMain.xsl จะตรวจสอบ "รูปแบบ":

    <xsl:เมื่อ test="@Style='NameOfMyStyle'">

    ที่เปลี่ยนชื่อ จะทำงาน. 🙂

  2. Andreas

    มันเกือบจะทำงานให้ฉัน: ฉันจัดการเพื่อผลการ </ตาราง> จบแท็กอย่างถูกต้อง, แต่แท็กเริ่มต้นขาดหายไป. ดูเหมือนว่าการทดสอบ = " $CurPos = 1" ไม่กลับเป็นจริง. แต่ทำไม?

  3. นายสิงห์ Rawat

    โพสต์มาก. พอเสร็จกิจกรรมข้างต้นทั้งหมด. มีการสอบถาม, วิธีสามารถฉันให้บรรลุผลรวมของ "ผลรวมจริง Expences" หรือผลรวมของค่าของคอลัมน์ที่สอง.

  4. ลิซ่า

    คุณทำงานกับการสร้างแบบกำหนดเอง ContentQueryMain และ ItemStyle แฟ้ม xsl? เหตุผลที่ผมถามคือ ว่า ฉันไม่ต้องการกังวลเกี่ยวกับลักษณะแบบกำหนดเองของฉันถูกเขียนทับ ด้วยการอัพเกรดหรือปรับปรุงใด ๆ. มีตัวอย่างไหม? ฉันพยายามทำเป็นสำเนาที่เหมือนกันของ ContentQueryMain.xsl และอัปโหลดสำเนาที่กำหนดเองใหม่ในลักษณะไลบรารี. เมื่อวางการอ้างอิงไปยังแฟ้ม xsl นี้ในคุณสมบัติ MainXslLink ของ.webpart, ฉันได้รับ 401 ไม่ได้รับอนุญาต. แฟ้ม xsl เองรุ่นเผยแพร่ และทุกคนได้เข้าอ่านได้.

  5. เชอริดานกา

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

  6. ไม่มีชื่อ

    บทความที่ดี. ฉันจัดการเพื่อทำให้ตารางลักษณะของรายการ Sharepoint เริ่มต้น โดยการวิเคราะห์รหัสแหล่งที่มาของรายการ. นี่คือ HTML บล็อกหลักต้องพอดีกับ ItemStyle:

    <ความกว้างของตาราง = "100%" คลาส = "ms listviewtable" ขอบ = 0 cellspacing = 0 cellpadding = 1 dir = "ไม่มี">

    <!–หัวข้อ–>
    <คลาส TR = "ms viewheadertr" VALIGN =ด้านบน>
    <ขอบเขต nowrap TH = "คอลัมน์" คลาส = "ms vh2"><สไตล์ div = "ความกว้าง:100%;ตำแหน่ง:ญาติ;ซ้าย:0;ด้านบน:0;">
    <ลักษณะตาราง = "ความกว้าง:100%;" CtxNum = "1" ความสูง = "100%" cellspacing = 1 cellpadding =ระดับ 0 = "ms-unselectedtitle">
    <TR>
    <ความกว้างของ TD = "100%" คลาส = "ms vb" nowrap>
    เหมา titre du Texte

    </TD>
    <สไตล์ TD = "ตำแหน่ง:แน่นอน;">
    </TD>
    </TR>
    </ตาราง></div>
    </TH>

    <!–ทำซ้ำสำหรับเซลล์ส่วนหัวทั้งหมด–>
    </TR>

    <!– ตารางข้อมูล –>
    <คลาส TR = "">
    <!–คอลัมน์ข้อมูล, ใช้รหัสของ Paul สำหรับครั้งแรกกับการเชื่อมโยงหลายมิติ –>
    <คลาส TD = "ms vb2">ข้อมูลที่นี่</TD>

    <!–คอลัมน์ว่าง–>
    <คลาส TD = "ms vb2">
    <ขยาย dir =ไม่มี></ขยาย><
    /TD>

    <!–คอลัมน์วัน–>
    <คลาส TD = "ms vb2">
    <NOBR>11/12/2008</NOBR>
    </TD>
    </TR>

    <!–***แถวอื่น – ใช้ตัวแปร XSL ใหม่ที่จะแทรกตามแถวปัจจุบัน modulo 2 ชั้นอื่น–>
    <คลาส TR = "สลับ ms">

    </TR>
    </ตาราง>

  7. ไมค์บราวน์
    Zoltan,
    ผมทำงานเกี่ยวกับเรื่องเดียวกันเป็น. ต้องการสินค้าของฉันแสดงในลักษณะถูกจัดกลุ่มแทนที่เป็นเพียง lits. นี่คือวิธีที่ฉันทำ.
    ContentQueryMain.xsl
    <xsl:เมื่อ test="@Style='Grid'">
    <xsl:เลือกแม่แบบที่ใช้ = "" โหมด = "itemstyle">
    <xsl:มีพารามิเตอร์ชื่อ = "CurPos" เลือก "$CurPosition =" />
    <xsl:มีพารามิเตอร์ชื่อ = "ล่าสุด" เลือก "$LastRow =" />
    <!–เพิ่มส่วนใหม่นี้ผ่านในพารามิเตอร์ที่บ่งชี้ว่า กลุ่มใหม่ได้เริ่มขึ้น–>
    <xsl:มีพารามิเตอร์ชื่อ = "StartNewGroup" select="@__begingroup" />
    </xsl:แม่แบบที่ใช้>
    </xsl:เมื่อ>
    ItemStyle.xsl
    เพิ่มพารามิเตอร์ของคุณ
    <xsl:ชื่อพารามิเตอร์ = "StartNewGroup" />
    เพิ่มข้อความนี้เป็นข้อมูลแถวแรก
    <xsl:เลือก>
    <xsl:เมื่อทดสอบ = " $StartNewGroup = 'จริง' ">
    <tr>
    <td >
    <xsl:แม่โทร name="OuterTemplate.GetGroupName">
    <xsl:มีพารามิเตอร์ชื่อ = "GroupName" select="@*[ชื่อ()= $Group]"/>
    <xsl:มีพารามิเตอร์ชื่อ = "GroupType" เลือก = "$GroupType" />
    </xsl:เรียกแม่>
    </td>
    </tr>
    </xsl:เมื่อ>
    <xsl:มิฉะนั้น>
    </xsl:มิฉะนั้น>
    </xsl:เลือก>
    นี้ควรดูแลปัญหาของกลุ่มในตารางของคุณ. แต่ละกลุ่มจะเริ่มแถวใหม่ที่ระบุชื่อกลุ่มตอนนี้. ในโซลูชันของฉัน จริงเพิ่มช่องว่าง <td /> ในข้อมูลเยื้องด้วยดังนั้น การจัดกลุ่มยืนออกมาก.
    โครงการ 1
    datacolumn1 datacolumn2 datacolumn3 เป็นต้น

    datacolumn1 datacolumn2 datacolumn3 เป็นต้น
    Site2
    datacolumn1 datacolumn2 datacolumn3 เป็นต้น
    Site3

    datacolumn1 datacolumn2 datacolumn3 เป็นต้น

    datacolumn1 datacolumn2 datacolumn3 เป็นต้น
    ฯลฯ.
  8. Zoltan
    สวัสดี พอล,
    ขอบคุณสำหรับการโพสต์, ฉันจัดการเพื่อจัดของฉันผลลัพธ์แบบสอบถามในตาราง, ซึ่งเป็นประโยชน์มาก. อย่างไรก็ตาม, ผมควรไปเพิ่มเติม และจัดกลุ่มผลลัพธ์ตามไซต์. ในขณะนี้, ชื่อเว็บไซต์ดำเนินอยู่ก่อน, และเส้นใหญ่เดียวรวบรวมแถวทั้งหมดจากเว็บไซต์ต่าง ๆ โดยมีการ. บางสิ่งบางอย่างเช่นนี้:
    ชื่อโครงการ 1
    ชื่อ Site2
    ข้อมูลในตารางสำหรับไซต์ทั้งหมด
    ความคิดเห็นใด ๆ สิ่งที่ฉันควรปรับเปลี่ยนเพื่อให้ได้ข้อมูลดังนี้:
    ชื่อโครงการ 1
    ข้อมูลในตารางสำหรับโครงการ 1
    ชื่อ Site2
    ข้อมูลในตารางสำหรับ Site2
    ขอบคุณล่วงหน้า,
    Zoltan
  9. Pierre Joubert
    โพสต์ที่ยอดเยี่ยม, แก้ไขปัญหาของฉันผม.
    ปัญหาของฉันเท่านั้นจะแสดงฟิลด์ AssignedTo, กำหนดค่ากับผู้ใช้"" ชนิดฟิลด์และ webpart บ่งชี้ว่านำเข้ามาแล้วแสดงข้อผิดพลาดต่อไปนี้:
    "มีข้อผิดพลาดในการเรียกข้อมูลให้แสดงใน Web Part นี้"
    ได้พยายามใช้ชนิดเขตข้อมูลที่เป็นไปได้ทั้งหมด, กับสิ่งอื่น ๆ ที่ผู้ใช้"" มันไม่แสดงข้อผิดพลาด, แต่มันไม่แสดงข้อมูลใด ๆ ในฟิลด์. ดังนั้นฉันทะลึ่ง ชนิดของฟิลด์ผู้ใช้จะถูกต้อง, ดังนั้นฉันต้องหายไปเป็นบางแห่ง.
    ความคิดเห็นใด ๆ เกี่ยวกับเรื่องนี้?
    ขอแสดงความนับถือ
    Pierre
  10. Charftong
    โพสต์มาก!!! ดีมากมาก.
    คำถามอย่างรวดเร็ว, คุณทำงานใด ๆ ในการแสดงเขตข้อมูล AssignedTo หรือ ModifiedBy มีสถานะ? เหตุผลบางประการ, เมื่อใดก็ตามพยายาม dipslay ฟิลด์มอบหมายให้ใน CQWP, มันแสดงด้วยเป็นตัวอย่าง "203;#Charf ทอง". หาวิธีมา.
  11. เจนนิเฟอร์ Davis
    พอล
    บทความที่ดี, ขอบคุณ. ฉันทำอะไรคล้ายกันมาก แต่ต้องการแสดงการเชื่อมโยงไซต์โครงการแทนที่เป็นสินค้าในรายการ. ตัวอย่าง, เรามี 25 เว็บไซต์ของโครงการระดับชั้นและแต่ละรายการที่ มีชนิดเนื้อหาประกอบด้วย. ได้แก่ชื่อโครงการ, ส่วน, คำอธิบาย. ต้องการใช้แบบสอบถามเนื้อหา web part เพื่อดึงข้อมูลนี้ และประสบความสำเร็จแต่ว่าตามค่าเริ่มต้น URL จะฉันรายการในรายการ และจริง ๆ ต้องให้พาฉันไปเว็บไซต์โครงการ. คุณสามารถให้ฉันคำแนะนำใด ๆ?
    ขอบคุณ
    เฉินโต
  12. เขียน Kieran:

    Hi Paul,

    เมื่อทำงานกับ xml/xsl และเนื้อหาแบบสอบถาม web part, คุณพบใด ๆ วิธีการรูปแบบ xslt ของคุณที่ดี? พยายามที่จะทำการเปลี่ยนแปลง และทดสอบการออกแบบเป็นการพิสูจน์ปวดด้านขวาเป็น ** เพียงใช้ตัวแก้ไขข้อความ…

    ส่วนทั้งหมด

  13. Michael Dipay
    เกี่ยวกับปัญหา ที่ฉันมีเวลาล่าสุดที่ไม่แสดงรูปภาพจากมุมมองของตาราง แต่แสดงข้อความแทน (https://myweb.com/Marketing/images/icn-order.gif,). ฉันจัดการเพื่อแก้ไขปัญหานี้ โดยใช้ SharePoint Designer โดยการสร้างมุมมองกำหนดเอง และเลือกคอลัมน์ที่กำหนดเองที่ต้องการแสดง. ฉันพบว่า ชนิดของคอลัมน์ภาพแสดงเป็น URL(เครื่องหมายจุลภาค) (เช่น. https://myweb.com/Marketing/images/icn-order.gif,). รูปแบบเป็นข้อความ, เพื่อให้มีการเปลี่ยนรูปภาพจาก xsl ทั่วไป:ค่าของงาน-> รูปแบบเป็นรูปภาพ. เปลี่ยนการแสดงรูปแบบกำหนดเองที่อยากจะแสดง. ฉันคัดลอกรหัสเพื่อแสดงรูปภาพ ( <เส้นขอบใช้ได้ img ="0" src = "{ด้วย-ก่อน(@IcnOrder, ‘, ‘)}" /> ) และในแฟ้ม ItemStyle.xsl ที่มีการเปลี่ยน @PICTURECOLUMNNAME ในรหัส <เส้นขอบใช้ได้ img ="0" src = "{ด้วย-ก่อน(@IcnOrder, ‘, ‘)}" /> . แล้ว บันทึก. ตอนนี้ ผลลัพธ์ของฉันเส้นตารางเพื่อแสดงข้อความเป็นรูปแบบกำหนดเองพิมพ์คอลัมน์.
  14. เฮเลน
    Hi Paul,
    ขอบคุณสำหรับบทความดี!
    คุณกล่าวถึงรูปแบบตามเงื่อนไข – "คุณสามารถทำในรูปแบบตามเงื่อนไข, เช่นการแสดงโครงการที่เกินงบประมาณสีแดง" คุณเกิดขึ้นจะมีตัวอย่างรหัสที่?
    ขอขอบคุณอีกครั้ง!
    เฮเลน
  15. Michael Dipay
    Hi Paul,
    มันเป็นบทความดี และสามารถสร้างผลลัพธ์เดียวกันตามที่คาดไว้. มีความต้องการแสดงรูปภาพในตารางเป็นหนึ่งคอลัมน์. มันไม่แสดงรูปภาพบนตาราง แต่แสดง url รูปแทน ตัว (,) เครื่องหมายจุลภาคที่สิ้นสุด.
    (เช่น. https://myweb.com/Marketing/images/icn-order.gif, )
    ควรใช้ภาพหรือรูปภาพในชนิดของฟิลด์ CommonViewFields? (เช่น. InternalColumnName, รูปภาพ)
    ขอขอบคุณ,
    ไมค์
  16. Saji Ijiyemi

    โพสต์ของคุณคือ อะไรค่ะ. อย่างไรก็ตาม, ไม่ได้ไปทำงาน.

    มีเอกสารที่เก็บอยู่ในเอกสารต่าง ๆ. ไลบรารีแต่ประเภทใช้คอลัมน์คลาสที่กำหนดเอง (ทางเลือก: 1 หรือ 2. ต้องใช้ CQWP ให้แสดงเอกสารเหล่านี้ตามนัก.
    ผมสามารถเพิ่ม CQWP, ส่งออกให้ SPD, ตั้งค่าคอนฟิก itemStyle.xls การแสดง fileds กำหนดเองในมุมมองรายการ. อย่างไรก็ตาม, ฉันอาจไม่เสร็จเรียบร้อยแล้วนำสิ่งที่คุณอธิบายที่นี่.

    เหล่านี้เป็นคอลัมน์ที่ต้องการแสดงใน CQWP ของฉัน:

    ชนิดแฟ้ม (แสดงไอคอน)
    ชื่อแฟ้ม
    วันปรับเปลี่ยนล่าสุด
    แก้ไขตามที่
    เช็คเอาท์
    ตรวจสอบในข้อคิดเห็น

    ขณะนี้มีผลในรูปแบบรายการ. ฉันเปลี่ยนมันไปเป็นรูปแบบ talble.

    ขอขอบคุณ.

    Saji

ทิ้งคำตอบไว้

ที่อยู่อีเมลของคุณจะไม่ถูกเผยแพร่. ช่องที่ต้องการถูกทำเครื่องหมาย *