Hiển thị nội dung truy vấn Web một phần kết quả theo lưới / Bảng

Tổng quan và mục tiêu

Ra khỏi hộp, RÊU’ Nội dung truy vấn Web Part (CQWP) Hiển thị kết quả của nó trong một định dạng danh sách, tương tự như kết quả tìm kiếm. Nó cũng có thể hiển thị các kết quả trong một định dạng lưới (tức là. Định dạng bảng HTML). Định dạng lưới tốt hơn trong một số trường hợp. Tôi mô tả làm thế nào để đạt được có hiệu lực trong bài viết này.

Kinh doanh kịch bản

Tôi đã làm việc với một khách hàng ngày một buổi giới thiệu MOSS toàn doanh nghiệp. Chúng tôi đã thiết kế phân loại của họ như vậy mà dự án là các công dân hạng nhất trong hệ thống và có trang web riêng của họ cấp cao nhất. Quản lý dự án duy trì một danh sách singleton của thông tin tóm tắt dự án, chẳng hạn như tiêu đề, ngân sách, Ngày hoàn thành dự kiến, còn lại ngân sách và các lĩnh vực khác của loại tóm tắt. Bởi "singleton" Tôi có nghĩa là một danh sách SharePoint tùy chỉnh bảo đảm để chứa chỉ có một mục. Simplistically, nó trông như thế này:

hình ảnh

Các phương pháp kỹ thuật là giống như được mô tả Ở đây (http://paulgalvin.spaces.live.com/blog/cns!1CC1EDB3DAA9B8AA!447.entry). CQWP sử dụng một biến đổi XSL để phát ra HTML cho trình duyệt để hiển thị.

Tôi luôn luôn hình dung kết quả trước khi lặn vào XSL vì XSL là một cơn ác mộng. Đây là kết quả mong muốn của tôi:

hình ảnh

HTML như thế này tạo ra kết quả đó:

<HTML>
 <cơ thể>
 <Trung tâm>
 <Bàn biên giới= 1>

<!-- Nhãn-->
 <tr BGColor= màu xanh>
 <TD><phông chữ màu sắc= trắng><b>Tên dự án</b></phông chữ></TD>
 <TD sắp xếp= right><phông chữ màu sắc= trắng><b>Ngày tháng đầy đủ</b></phông chữ></TD>
 <TD sắp xếp= right><phông chữ màu sắc= trắng><b>Ngân sách</b></phông chữ></TD>
 <TD sắp xếp= right><phông chữ màu sắc= trắng><b>Chi phí thực tế</b></phông chữ></TD>
 <TD><phông chữ màu sắc= trắng><b>Tổng thể trạng thái</b></phông chữ></TD>
 </tr>

<tr>
 <TD>Phòng máy tính Re-wire.</TD>
 <TD sắp xếp= right>02/01/08</TD>
 <TD sắp xếp= right>22,500.00</TD>
 <TD sắp xếp= right>19,000.00</TD>
 <TD>Trong tiến trình</TD>
 </tr>

<tr>
 <TD>Cung cấp máy chủ cho SQL nâng cấp</TD>
 <TD sắp xếp= right>04/01/08</TD>
 <TD sắp xếp= right>7,500.00</TD>
 <TD sắp xếp= right>0.00</TD>
 <TD>Kế hoạch</TD>
 </tr>

</Bàn>
 </Trung tâm>
 </cơ thể>
</HTML>

Phương pháp tiếp cận

Thực hiện theo các bước sau để tạo ra mạng lưới:

  1. Xác định các thành phần của lưới điện (hàng/cột).
  2. Xác định và tạo ra các trang web cần thiết cột.
  3. Tạo ra các trang web phụ cho các dự án và danh sách singleton.
  4. Thêm CQWP vào một trang web và cấu hình nó để tìm kiếm các danh sách của bạn.
  5. Sửa đổi của CQWP XML để thu thập các cột bổ sung.
  6. Sửa đổi XSL để tạo ra một bảng.

Tôi sẽ tập trung vào thứ sáu. Con số một thông qua bốn là thẳng về phía trước và một cái gì đó bất kỳ người sử dụng CQWP đã thực hiện. Thứ năm đã được các tài liệu bởi người khác trong đó này bài viết laden ảnh chụp màn hình đầy đủ từ MSDN Ở đây (http://msdn2.microsoft.com/en-us/library/bb897399.aspx) và Heather Solomon blog Ở đây (http://www.heathersolomon.com/blog/articles/CustomItemStyle.aspx).

Nuts và bu lông

Bắt đầu và thực hiện bước 1 đến 5 theo các tài liệu MSDN và bài viết của Heather Solomon.

Tại thời điểm này, bạn đã thêm CQWP của bạn vào trang web và bạn có của bạn <CommonViewFields> cấu hình cần thiết.

Theo các bước thông thường, Tôi nhận được các kết quả trung gian:

1. Tạo ra một loại nội dung, một danh sách tùy chỉnh templatized cho rằng loại nội dung và hai trang web. Dưới đây là các loại nội dung:

hình ảnh

Dưới đây là cấu trúc trang web:

hình ảnh

2. Thêm CQWP sau khi tạo dự án SubSite và singleton của tôi danh sách tóm tắt dự án:

hình ảnh

3. Thêm tất cả các thông tin bổ sung mà tôi muốn thông qua các <CommonViewFields>:

        <bất động sản Tên="CommonViewFields" loại="chuỗi">Project_x0020_Name;Project_x0020_Expenses;Project_x0020_Status;Project_x0020_Start_x0020_Date;Project_x0020_End_x0020_Date;Project_x0020_Budget</bất động sản>

Lưu ý rằng tôi đã có để giữ cho tất cả các lĩnh vực bất động sản trên một dòng, hoặc nó sẽ không làm việc (CQWP sẽ cho tôi biết các truy vấn trở lại không có khoản mục).

4. Tại thời điểm này, chúng tôi đã sẵn sàng để di chuyển vượt ra ngoài các bài viết MSDN và flip trên bài viết của Heather Solomon. Làm theo các bước của mình bắt đầu gần bước #5 để tạo ra một tùy chỉnh / Phiên bản unghosted của ItemStyle.xsl. Tôi làm theo lời khuyên của Heather, lên qua bước 11 và nhận được các kết quả trung gian:

4.1: Tên của tôi mẫu XSL như sau:

<XSL:tiêu bản tên = "lưới điện" phù hợp với = "hàng[@Style = 'Lưới']" chế độ = "itemstyle">

Tôi cũng hơi sửa đổi của mình đề nghị <XSL:cho mỗi …> bằng cách thêm một <BR /> các từ khóa để cung cấp một danh sách sạch hơn:

    <XSL:cho mỗi chọn="@*">
      P:<XSL:giá trị của chọn="Tên()" /><BR/>
    </XSL:cho mỗi>

4.2: Sửa đổi phần web, đi đến sự xuất hiện và lựa chọn của tôi "lưới điện" phong cách:

hình ảnh

Áp dụng thay đổi và đây là kết quả:

hình ảnh

Chúng tôi có thể nhìn thấy từ trên các lĩnh vực chúng tôi muốn (Tên dự án, chi phí, tình trạng, vv) có sẵn cho chúng tôi sử dụng khi chúng tôi phát ra HTML. Không chỉ vậy, nhưng chúng tôi thấy tên mà chúng tôi phải tham khảo những cột trong XSL. Ví dụ:, chúng tôi tham khảo tình trạng dự án như "Project_x005F_x0020_Name".

Tại thời điểm này, chúng tôi khởi hành từ blog của Heather và từ vai những người khổng lồ, Tôi thêm riêng của tôi ít.

ContentQueryMain.xsl

LƯU Ý: Khi thực hiện thay đổi cho cả hai ContentQueryMain.xsl cũng như ItemStyle.xsl, bạn cần phải kiểm tra các tập tin đó trở lại trước khi bạn nhìn thấy hiệu quả của các thay đổi.

Cho các mục đích thực hiện lưới điện, MOSS sử dụng hai tập tin XSL khác nhau để tạo ra kết quả chúng ta thấy từ một CQWP. Để tạo ra các bit trước của đầu ra, chúng tôi sửa đổi ItemStyle.xsl. MOSS thực sự sử dụng một XSL tập tin, ContentQueryMain.xsl để kết hợp với ItemStyle.xsl để tạo ra HTML của nó. Như tên gọi của nó, ContentQueryMain.xsl là "chính" XSL điều khiển lưu lượng tổng thể của bản dịch. Nó iterates thông qua tất cả các mục tìm thấy và vượt qua họ từng người một để mẫu trong ItemStyle.xsl. Chúng tôi sẽ sửa đổi ItemStyle.xsl để tạo ra mở <Bàn> thẻ trước khi phát ra các dòng đầu tiên của dữ liệu và đóng cửa <Bàn> các từ khóa sau đợt phát ra hàng cuối cùng. Để thực hiện việc này, ContentQueryMain.xsl được sửa đổi để vượt qua hai tham số cho chúng tôi "lưới điện" mẫu trong ItemStyle.xsl, "hàng cuối cùng" và "hàng hiện tại". ItemStyle.xsl sử dụng này để có điều kiện phát ra các thẻ cần thiết.

Sử dụng kỹ thuật của Heather Solomon, chúng tôi xác định vị trí ContentQueryMain.xsl. Sân bay này nằm trong cùng một vị trí như ItemStyle.xsl. Ảnh chụp màn hình này sẽ giúp:

hình ảnh

Chúng tôi cần phải thực hiện những thay đổi sau:

  • Sửa đổi một mẫu xsl, "CallItemTemplate" mà thực sự invokes mẫu lưới điện của chúng tôi tại ItemStyle.xsl. Chúng tôi sẽ gửi hai tham số cho các mẫu lưới điện như vậy mà nó sẽ có dữ liệu cần thiết để tạo ra có điều kiện mở và đóng cửa <Bàn> Download.
  • Sửa đổi một chút ContentQueryMain.xsl rằng các cuộc gọi "CallItemTemplate" để vượt qua nó "LastRow" tham số để LastRow rằng có thể được thông qua ngày cho chúng tôi mẫu lưới điện.

Xác định vị trí các mẫu đặt tên là "OuterTemplate.CallItemTemplate" xác định bằng chuỗi:

  <XSL:tiêu bản Tên="OuterTemplate.CallItemTemplate">

Thay thế mẫu toàn bộ như sau:

  <XSL:tiêu bản Tên="OuterTemplate.CallItemTemplate">
    <XSL:param Tên="CurPosition" />

    <!--
      Thêm "LastRow" tham số.
      Chúng tôi chỉ sử dụng nó khi vượt qua phong cách mục trong "Mạng lưới".
    -->
    <XSL:param Tên="LastRow" />

    <XSL:chọn>
      <XSL:Khi kiểm tra="@Style = 'NewsRollUpItem'">
        <XSL:áp dụng mẫu chọn="." chế độ="itemstyle">
          <XSL:với param Tên="EditMode" chọn="$cbq_iseditmode" />
        </XSL:áp dụng mẫu>
      </XSL:Khi>
      <XSL:Khi kiểm tra="@Style = 'NewsBigItem'">
        <XSL:áp dụng mẫu chọn="." chế độ="itemstyle">
          <XSL:với param Tên="CurPos" chọn="$CurPosition" />
        </XSL:áp dụng mẫu>
      </XSL:Khi>
      <XSL:Khi kiểm tra="@Style = 'NewsCategoryItem'">
        <XSL:áp dụng mẫu chọn="." chế độ="itemstyle">
          <XSL:với param Tên="CurPos" chọn="$CurPosition" />
        </XSL:áp dụng mẫu>
      </XSL:Khi>

      <!--
              Vượt qua vị trí hiện tại và lastrow với các mạng lưới itemstyle.xsl mẫu.
              ItemStyle.xsl sẽ sử dụng để phát ra mở và đóng cửa <Bàn> Download.
      -->
      <XSL:Khi kiểm tra="@Style = 'Lưới'">
        <XSL:áp dụng mẫu chọn="." chế độ="itemstyle">
          <XSL:với param Tên="CurPos" chọn="$CurPosition" />
          <XSL:với param Tên="Cuối cùng" chọn="$LastRow" />
        </XSL:áp dụng mẫu>
      </XSL:Khi>

      <XSL:Nếu không>
        <XSL:áp dụng mẫu chọn="." chế độ="itemstyle">
        </XSL:áp dụng mẫu>
      </XSL:Nếu không>
    </XSL:chọn>
  </XSL:tiêu bản>

Các ý kiến mô tả mục đích của những thay đổi.

Tất nhiên, "OuterTemplate.CallItemTemplate" chính nó được gọi là từ một mẫu. Xác định vị trí mẫu đó bằng cách tìm kiếm chuỗi văn bản này:

<XSL:tiêu bản Tên="OuterTemplate.Body">

Di chuyển qua các hướng dẫn trong OuterTemplate.Body và chèn các tham số LastRow như sau (Hiển thị như là một bình luận trong nghiêng):

<XSL:cuộc gọi, mẫu Tên="OuterTemplate.CallItemTemplate">
  <XSL:với param Tên="CurPosition" chọn="$CurPosition" />
  <!-- Chèn các tham số LastRow. -->
  <XSL:với param Tên="LastRow" chọn="$LastRow"/>
</XSL:cuộc gọi, mẫu>

Sau khi tất cả điều này, chúng tôi cuối cùng có những thứ được thiết lập đúng cách để ItemStyle.xsl chúng tôi có thể phát ra <Bàn> khoá đúng nơi.

ItemStyle.Xsl

LƯU Ý: Một lần nữa, kiểm tra trong ItemStyle.xsl sau khi thực hiện bất kỳ thay đổi để cho bạn thấy tác động của những thay đổi.

Chúng tôi có hai nhiệm vụ ở đây:

  • Thay thế toàn bộ lưới điện mẫu. Bạn có thể sao chép/dán từ dưới đây.
  • Thêm một số mumbo jumbo bên ngoài định nghĩa mẫu cho phép "formatcurrency" mẫu để làm việc. (Bạn có thể nói rằng tôi có một xử lý mỏng manh trên XSL).

Đầu tiên, gần đầu ItemStyle.xsl, Thêm dòng này:

  <!-- Một số mumbo jumbo cho phép chúng tôi để hiển thị Hoa Kỳ. thu. -->
  <XSL:định dạng số thập phân Tên="nhân viên phục vụ" chữ số="D" />

  <XSL:tiêu bản Tên="Mặc định" phù hợp với="*" chế độ="itemstyle">

Lưu ý rằng tôi đã thêm nó trực tiếp trước các <XSL:tiêu bản tên = "mặc định" …> định nghĩa.

Tiếp theo, trở lại của chúng tôi mẫu lưới điện. Thay thế mẫu lưới toàn bộ với mã dưới đây. Nó là hoàn toàn nhận xét, nhưng đừng ngần ngại gửi email cho tôi hoặc để lại ý kiến trên blog của tôi nếu bạn có thắc mắc.

  <XSL:tiêu bản Tên="Mạng lưới" phù hợp với="Hàng[@Style = 'Lưới']" chế độ="itemstyle">

    <!--
      ContentMain.xsl qua CurPos và cuối cùng.
      Chúng tôi sử dụng các điều kiện phát ra mở và đóng cửa <Bàn> Download.
    -->
    <XSL:param Tên="CurPos" />
    <XSL:param Tên="Cuối cùng" />

    <!-- Các yếu tố sau đây được chưa sửa đổi từ ItemStyle.xsl tiêu chuẩn -->
    <XSL:biến Tên="SafeImageUrl">
      <XSL:cuộc gọi, mẫu Tên="OuterTemplate.GetSafeStaticUrl">
        <XSL:với param Tên="UrlColumnName" chọn="'ImageUrl'"/>
      </XSL:cuộc gọi, mẫu>
    </XSL:biến>
    <XSL:biến Tên="SafeLinkUrl">
      <XSL:cuộc gọi, mẫu Tên="OuterTemplate.GetSafeLink">
        <XSL:với param Tên="UrlColumnName" chọn="'LinkUrl'"/>
      </XSL:cuộc gọi, mẫu>
    </XSL:biến>
    <XSL:biến Tên="DisplayTitle">
      <XSL:cuộc gọi, mẫu Tên="OuterTemplate.GetTitle">
        <XSL:với param Tên="Tiêu đề" chọn="@Title"/>
        <XSL:với param Tên="UrlColumnName" chọn="'LinkUrl'"/>
      </XSL:cuộc gọi, mẫu>
    </XSL:biến>
    <XSL:biến Tên="LinkTarget">
      <XSL:Nếu kiểm tra="@OpenInNewWindow = 'True'" >_blank</XSL:Nếu>
    </XSL:biến>

    <!--
      Ở đây chúng ta định nghĩa một biến, "tableStart".  Điều này chứa mã HTML mà chúng tôi sử dụng để xác định việc mở bảng cũng như các nhãn cột.  Lưu ý rằng nếu CurPos = 1, nó bao gồm HTML trong một thẻ CDATA.
      Nếu không, nó sẽ được sản phẩm nào.

      Giá trị của tableStart là emited mỗi khi ItemStyle được gọi là thông qua ContentQueryMain.xsl.
    -->
    <XSL:biến Tên="tableStart">
      <XSL:Nếu kiểm tra="$CurPos = 1">
        <![CDATA[
        <biên giới bảng = 1>
          <tr bgcolor = "màu xanh">
            <TD><màu sắc font = "trắng"><b>Tên dự án</b></phông chữ></TD>
            <TD align = "quyền"><màu sắc font = "trắng"><b>Ngày tháng đầy đủ</b></phông chữ></TD>
            <TD align = "quyền"><màu sắc font = "trắng"><b>Ngân sách</b></phông chữ></TD>
            <TD align = "quyền"><màu sắc font = "trắng"><b>Chi phí thực tế</b></phông chữ></TD>
            <TD><màu sắc font = "trắng"><b>Tổng thể trạng thái</b></phông chữ></TD>
          </tr>
        ]]>
      </XSL:Nếu>
    </XSL:biến>

    <!--
      Một biến, tableEnd đơn giản chỉ cần xác định đóng bàn từ khóa.

      Như với tableStart, nó luôn luôn là emited.  Đây là lý do tại sao giá trị của nó được phân công có điều kiện dựa trên cho dù chúng tôi đã được thông qua dòng cuối bởi ContentQueryMain.xsl.
    -->
    <XSL:biến Tên="tableEnd">
      <XSL:Nếu kiểm tra="$CurPos = $Last">
        <![CDATA[ </Bàn> ]]>
      </XSL:Nếu>
    </XSL:biến>

    <!--
      Luôn luôn phát ra các nội dung của tableStart.  Nếu đây không phải là dòng đầu tiên được thông qua cho chúng tôi bởi ContentQueryMain.xsl, sau đó chúng tôi biết giá trị của nó sẽ được để trống.

      Vô hiệu hóa đầu ra thoát bởi vì khi tableStart nó không trống, nó bao gồm HTML thực tế mà chúng tôi muốn được thực hiện bởi trình duyệt.  Nếu chúng tôi không nói cho XSL phân tích cú pháp để vô hiệu hóa đầu ra thoát, nó sẽ tạo ra các công cụ như"&LT;Bàn&gt;" thay vì của"<Bàn>".
    -->
    <XSL:giá trị của chọn="$tableStart" vô hiệu hoá-đầu ra-thoát=""/>


    <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:giá trị của chọn="@Project_x005F_x0020_Name"/>
      </TD>

      <TD sắp xếp="quyền">
        <XSL:giá trị của chọn="@Project_x005F_x0020_End_x005F_x0020_Date"/>
      </TD>

      <TD sắp xếp="quyền">
        <XSL:cuộc gọi, mẫu Tên="formatcurrency">
          <XSL:với param Tên="giá trị" 
chọn="@Project_x005F_x0020_Budget"></XSL:với param> </XSL:cuộc gọi, mẫu> </TD> <TD sắp xếp="quyền"> <XSL:cuộc gọi, mẫu Tên="formatcurrency"> <XSL:với param Tên="giá trị" chọn="@Project_x005F_x0020_Expenses">
</XSL:với param> </XSL:cuộc gọi, mẫu> </TD> <TD> <XSL:giá trị của chọn="@Project_x005F_x0020_Status"/> </TD> <!-- Tất cả những điều sau đây nhận xét ra để làm rõ sự vật. Tuy nhiên, mang nó trở lại và công cụ nó thành một <TD> để xem hiệu quả của nó. --> <!-- <DIV id = "linkitem" lớp = "mã"> <XSL:Nếu thử nghiệm = "chuỗi dài($SafeImageUrl) != 0"> <div class = "thời gian còn lại khu vực hình ảnh"> <một href = "{$SafeLinkUrl}" mục tiêu = "{$LinkTarget}"> <img lớp = "hình ảnh cố định-chiều rộng" src = "{$SafeImageUrl}"
Alt = "{@ImageUrlAltText}"/> </một> </div> </XSL:Nếu> <div class = "liên kết-mục"> <XSL:cuộc gọi, mẫu
name="OuterTemplate.CallPresenceStatusIconTemplate"/> <một href = "{$SafeLinkUrl}"
mục tiêu = "{$LinkTarget}" tiêu đề = "{@LinkToolTip}"> <XSL:giá trị của chọn = "$DisplayTitle" /> </một> <div class = "mô tả"> <XSL:giá trị của select="@Description" /> </div> </div> </div>
--> </tr> <!-- Phát ra đóng bàn từ khóa. Nếu chúng tôi không phải là trên dòng cuối cùng, Điều này sẽ được để trống. --> <XSL:giá trị của chọn="$tableEnd" vô hiệu hoá-đầu ra-thoát=""/> </XSL:tiêu bản> <XSL:tiêu bản Tên="formatcurrency"> <XSL:param Tên="giá trị" chọn="0" /> <XSL:giá trị của chọn='định dạng số($giá trị, "$DDD,DDD,DDD.DD", "nhân viên")' /> </XSL:tiêu bản>

22 Những suy nghĩ trên "Hiển thị nội dung truy vấn Web một phần kết quả theo lưới / Bảng

  1. Andreas

    Aah… đó là bởi vì tôi đặt tên là phong cách danh sách của tôi một cách khác nhau và đã không nhận ra rằng trong ContentQueryMain.xsl, nó kiểm tra cho "phong cách":

    <XSL:Khi test="@Style='NameOfMyStyle'">

    Với điều đó được đổi tên thành nó làm việc. 🙂

  2. Andreas

    Nó gần như đã làm việc cho tôi: Tôi quản lý để ra các </Bàn> kết thúc từ khóa một cách chính xác, nhưng các từ khóa bắt đầu bị thiếu. Có vẻ như thử nghiệm = "$CurPos = 1" không trở lại đúng. Nhưng tại sao?

  3. Anand singh Rawat

    Great đăng bài. Paul, tôi đã làm tất cả những điều trên. Tôi có một truy vấn, làm thế nào có thể tôi đạt được số tiền của "tất cả thực tế Expences" hoặc tổng giá trị của hai cột.

  4. Lisa

    Bạn đã làm bất cứ công việc với việc tạo ra các tùy chỉnh ContentQueryMain và ItemStyle tập tin xsl? Lý do tôi yêu cầu là tôi không muốn phải lo lắng về phong cách tùy chỉnh của tôi được ghi đè với bất kỳ bản vá lỗi hoặc nâng cấp. Bạn có có những ví dụ? Tôi đã cố gắng làm cho một bản sao giống hệt nhau của ContentQueryMain.xsl và tải lên bản sao tuỳ chỉnh mới vào thư viện phong cách. Khi đặt một tham chiếu đến tập tin xsl này trong .webpart MainXslLink bất động sản, Tôi nhận được 401 Chưa được kiểm chứng. Các tập tin tùy chỉnh xsl là một phiên bản được xuất bản và tất cả mọi người có quyền truy cập đọc vào nó.

  5. Greg Sheridan

    Chào bạn, đây là một bài viết thực sự hữu ích. Tôi có nó làm việc tất cả, và cũng thực hiện Mike Brown thay đổi vì vậy nó nhóm
    Các kết quả trong bảng bởi bất cứ điều gì tôi chọn là nhóm bởi số trong tài sản của CQWB.
    Tôi đã thực hiện các tiêu đề liên kết cũng, Vì vậy, nó hoạt động độc đáo. Tôi vẫn còn có một vấn đề, mặc dù. Tôi nhóm các kết quả trang web tên. Bên trong bảng, nó nhóm họ độc đáo, và nó sẽ rất tốt, nhưng nó vẫn còn là in ra tất cả nhóm
    tên(trong trường hợp của các tên trang web) phía trên bảng. Có ai biết làm thế nào để thoát khỏi đây?
    Cảm ơn,
    Greg

  6. Không tên

    Bài viết tốt đẹp. Tôi quản lý để cung cấp cho bàn của tôi giao diện mặc định Sharepoint liệt kê bằng cách phân tích mã nguồn của danh sách. Dưới đây là các khối HTML chính cần thiết để phù hợp với ItemStyle:

    <BẢNG chiều rộng = "100%" lớp = "ms-listviewtable" biên giới = 0 cellspacing = 0 cellpadding = 1 dir = "None">

    <!–TIÊU ĐỀ–>
    <TR lớp = "ms-viewheadertr" VALIGN = TRÊN CÙNG>
    <TH nowrap phạm vi = "đại tá" lớp = "ms-vh2"><div phong cách = "width:100%;vị trí:tương đối;bên trái:0;đầu trang:0;">
    <BẢNG phong cách = "width:100%;" CtxNum = "1" chiều cao = "100%" cellspacing = 1 cellpadding = 0 class = "ms-unselectedtitle">
    <TR>
    <TD chiều rộng = "100%" Lớp = "ms-BB" nowrap>
    Texte du thị ici

    </TD>
    <Phong cách TD = "vị trí:Tuyệt đối;">
    </TD>
    </TR>
    </BÀN></div>
    </TH>

    <!–Lặp lại cho tất cả các tế bào tiêu đề–>
    </TR>

    <!– Bảng dữ liệu –>
    <TR lớp = "">
    <!–Dữ liệu cột, sử dụng của Paul mã cho người đầu tiên với các siêu liên kết –>
    <TD Class = "ms-vb2">Dữ liệu ở đây</TD>

    <!–Cột rỗng–>
    <TD Class = "ms-vb2">
    <khoảng dir = không có gì></khoảng><
    /TD>

    <!–Cột ngày–>
    <TD Class = "ms-vb2">
    <NOBR>11/12/2008</NOBR>
    </TD>
    </TR>

    <!–***Thay thế hàng – Sử dụng một biến XSL mới sẽ đưa các lớp học khác dựa trên dòng hiện tại theo modulo 2–>
    <TR lớp = "ms xen kẽ">

    </TR>
    </BÀN>

  7. Mike Brown
    Zoltan,
    Tôi đã làm việc về vấn đề tương tự như bạn. Tôi muốn tất cả các mục của tôi hiển thị trong một cách nhóm chứ không phải là chỉ một lít. Ở đây là làm thế nào tôi đạt được nó.
    ContentQueryMain.xsl
    <XSL:Khi test="@Style='Grid'">
    <XSL:áp dụng mẫu chọn = "." chế độ = "itemstyle">
    <XSL:với param tên = "CurPos" chọn = "$CurPosition" />
    <XSL:với param tên = "Last" chọn = "$LastRow" />
    <!–Thêm phần này mới để vượt qua trong các tham số cho thấy một nhóm mới đã bắt đầu–>
    <XSL:với param tên = "StartNewGroup" Select="@__begingroup" />
    </XSL:áp dụng mẫu>
    </XSL:Khi>
    ItemStyle.xsl
    Thêm tham số của bạn
    <XSL:param tên = "StartNewGroup" />
    Thêm văn bản này như là dòng đầu tiên của dữ liệu
    <XSL:chọn>
    <XSL:khi kiểm tra = "$StartNewGroup = 'True'">
    <tr>
    <TD >
    <XSL:cuộc gọi-mẫu name="OuterTemplate.GetGroupName">
    <XSL:với param tên = "GroupName" Select="@*[Tên()= $Group]"/>
    <XSL:với param tên = "GroupType" chọn = "$GroupType" />
    </XSL:cuộc gọi, mẫu>
    </TD>
    </tr>
    </XSL:Khi>
    <XSL:Nếu không>
    </XSL:Nếu không>
    </XSL:chọn>
    Điều này nên chăm sóc của vấn đề của bạn nhóm trong mạng lưới của bạn. Mỗi nhóm bây giờ sẽ bắt đầu với một hàng mới chỉ ra tên nhóm. Trong giải pháp của tôi, tôi thực sự được một trống <TD /> trong dữ liệu để thụt lề cũng vì vậy nhóm đứng ra hơn.
    Site1
    datacolumn1 datacolumn2 datacolumn3 vv

    datacolumn1 datacolumn2 datacolumn3 vv
    Site2
    datacolumn1 datacolumn2 datacolumn3 vv
    Site3

    datacolumn1 datacolumn2 datacolumn3 vv

    datacolumn1 datacolumn2 datacolumn3 vv
    vv.
  8. Zoltan
    Xin chào Paul,
    Cảm ơn bạn đã đăng bài, tôi quản lý để sắp xếp các kết quả truy vấn của tôi trong một mạng lưới, đó là rất hữu ích. Tuy nhiên, Tôi nên đi xa hơn và nhóm các kết quả của tôi dựa trên các trang web. Tại thời điểm này, Tên trang web được liệt kê đầu tiên, và sau đó là có chỉ có một mạng lưới lớn, thu thập tất cả các hàng từ các trang web khác nhau. Một cái gì đó như thế này:
    Site1 tên
    Site2 tên
    Các dữ liệu trong các mạng lưới cho tất cả các trang web
    Bất kỳ ý tưởng về những gì tôi nên thay đổi để có được dữ liệu của tôi như sau:
    Site1 tên
    Các dữ liệu trong các mạng lưới cho Site1
    Site2 tên
    Các dữ liệu trong các mạng lưới cho Site2
    Cảm ơn trước,
    Zoltan
  9. Pierre Joubert
    Logo đăng bài, giải quyết vấn đề của tôi, tôi đã có.
    Vấn đề duy nhất của tôi hiển thị trường AssignedTo, Cấu hình với người dùng"" lĩnh vực loại và webpart nhập khẩu sau đó hiển thị các lỗi sau:
    "Đã có lỗi lấy dữ liệu để hiển thị trong phần trang Web này."
    Tôi đã cố gắng sử dụng tất cả các lĩnh vực có thể loại, với bất cứ điều gì khác "người dùng" nó không hiển thị các lỗi, nhưng nó không hiển thị bất cứ điều gì trong lĩnh vực. Vì vậy, tôi giả định người sử dụng trường loại là chính xác, Vì vậy, tôi phải mất một thiết lập một nơi nào đó.
    Bất cứ ý tưởng về điều này?
    Thân
    Pierre
  10. Charftong
    Great đăng bài!!! Rất rất hữu ích.
    Câu hỏi nhanh chóng, bạn đã làm bất cứ công việc trên Hiển thị các lĩnh vực AssignedTo hoặc ModifiedBy với sự hiện diện? Đối với một số lý do, bất cứ khi nào tôi cố gắng để dipslay chỉ định cho trường trong CQWP, nó luôn luôn hiển thị với ví dụ "203;#Charf Tông". Tôi không thể tìm thấy một khoảng cách này.
  11. Jennifer Davis
    Paul
    Bài viết tuyệt vời, Cảm ơn bạn. Tôi đang làm một cái gì đó rất giống nhau, nhưng muốn hiển thị một liên kết đến các trang web dự án chứ không phải là mục trong danh sách. Ví dụ:, Chúng tôi có 25 dự án cấp hàng đầu các trang web và mỗi chứa một danh sách với loại nội dung. Đây là những tên dự án, Bộ phận, Mô tả. Tôi muốn sử dụng một phần trang web nội dung truy vấn để kéo dữ liệu này và đã thành công ngoại trừ rằng theo mặc định URL đưa tôi đến mục nhập trong danh sách và tôi thực sự cần nó để đưa tôi đến các trang web dự án. bạn có thể cho tôi lời khuyên nào?
    Cảm ơn bạn
    Jen
  12. Paul Galvin
    Kier,
    Tôi luôn luôn sử dụng visual studio để chỉnh sửa XSL. Nó cung cấp màu sắc mã hóa và nó cũng có một số hỗ trợ tốt intellisense.
    –Paul
  13. Kieran đã viết:

    Hi Paul,

    Khi làm việc với các truy vấn xml/xsl và nội dung web phần, bạn đã tìm thấy bất kỳ cách tốt để định dạng xslt của bạn? Cố gắng để thực hiện thay đổi và thử nghiệm thiết kế chứng minh đau phải ở trong một ** chỉ bằng cách sử dụng một trình soạn thảo văn bản…

    Chúc những Lời chúc tốt đẹp nhất

  14. Michael Dipay
    Liên quan đến vấn đề tôi đã có thời gian qua nơi nó không hiển thị hình ảnh từ lưới xem nhưng thay vào đó sẽ hiển thị văn bản (https://myweb.com/Marketing/images/icn-order.gif,). Tôi quản lý để giải quyết nó với sự giúp đỡ của SharePoint Designer bằng cách tạo xem tuỳ chỉnh và chọn tuỳ chỉnh cột mà tôi muốn hiển thị. Tôi phát hiện ra rằng loại cột của hình ảnh được hiển thị như là URL(dấu phẩy) (Ví dụ như. https://myweb.com/Marketing/images/icn-order.gif,). Dạng thức hiện thời là văn bản, Vì vậy, tôi phải thay đổi nó để hình ảnh từ xsl phổ biến:giá trị của công việc-> Định dạng như hình ảnh. Điều này thay đổi màn hình để các hình ảnh tùy chỉnh mà tôi muốn hiển thị. Tôi đã sao chép mã để hiển thị hình ảnh ( <IMG biên giới ="0" src = "{xâu con-trước khi(@IcnOrder, ‘, ‘)}" /> ) Và trong tập tin ItemStyle.xsl tôi có thể thay đổi @PICTURECOLUMNNAME để mã <IMG biên giới ="0" src = "{xâu con-trước khi(@IcnOrder, ‘, ‘)}" /> . Sau đó lưu nó. Bây giờ tôi kết quả lưới bảng để hiển thị văn bản cũng như hình ảnh tùy chỉnh loại cột.
  15. Helen
    Hi Paul,
    Cảm ơn bài viết tuyệt vời!
    Bạn đề cập đến định dạng có điều kiện – "Bạn cũng có thể đặt trong định dạng có điều kiện, chẳng hạn như hiển thị dự án những người đã vượt quá ngân sách của họ trong màu đỏ." Bạn có xảy ra để có một hiệu ứng cho rằng?
    Cảm ơn một lần nữa!
    Helen
  16. Michael Dipay
    Hi Paul,
    Nó là một bài viết tuyệt vời và đã có thể tạo ra kết quả tương tự như mong đợi. Tôi có một yêu cầu để hiển thị một hình ảnh trong lưới điện như là một trong các cột. Nó không hiển thị hình ảnh trên lưới điện, nhưng thay vào đó sẽ hiển thị url cho hình ảnh với một (,) dấu phẩy vào cuối.
    (Ví dụ như. https://myweb.com/Marketing/images/icn-order.gif, )
    Tôi nên sử dụng hình ảnh hoặc hình ảnh trong các lĩnh vực CommonViewFields loại? (Ví dụ như. InternalColumnName, Hình ảnh)
    Cảm ơn,
    Mike
  17. Duong Ijiyemi

    Bài viết của bạn là chính xác những gì tôi đang tìm kiếm. Tuy nhiên, Tôi không thể làm cho nó làm việc.

    Tôi có tài liệu được lưu trữ trong các tài liệu. thư viện nhưng phân loại bằng cách sử dụng một lớp tùy chỉnh cột (sự lựa chọn: 1 hoặc 2. Tôi muốn sử dụng CQWP để hiển thị các tài liệu này dựa trên lớp học của mình.
    Tôi đã có thể để thêm CQWP, xuất khẩu nó để SPD, cấu hình itemStyle.xls để hiển thị các lĩnh vực tùy chỉnh trong chế độ xem danh sách. Tuy nhiên, Tôi có thể không thực hiện thành công những gì bạn mô tả ở đây.

    Đây là những cột mà tôi muốn để hiển thị trong CQWP của tôi:

    Loại tệp (để hiển thị biểu tượng)
    Tập tin tiêu đề
    Ngày thay đổi
    Sửa đổi bởi những người
    Kiểm tra để
    Kiểm tra trong ý kiến

    Tôi hiện đang có kết quả trong một định dạng danh sách. Làm thế nào để thay đổi nó vào một định dạng talble.

    Cảm ơn.

    Duong

Để lại câu trả lời

Địa chỉ email của bạn sẽ không được công bố. Các trường bắt buộc được đánh dấu *