Csegrollup

Недавно наткнулся на интересную компоненту csegRollUp 3.5 испанского автора Карлоса Сегуры. Веб-часть позволяет агрегировать данные из списков и библиотек документов на портале. Позволяет делать аналитические выборки и отображать в наиболее удобном виде.

Я случайно наткнулся на данную компоненту, когда возникла необходимость вывода списка документов с портала, находящихся в различных областях, по классовому признаку. Для решения данной задачи, для библиотек документов завел новые атрибуты, являющиеся классификатором. Например, атрибуты "информационные системы", "безопасность", "сбыт", "управление" (для примера список укорочен). И каждый документ, соответственно, попадал в одну или более из этих классов. При помощи данной компоненты, появилась возможность вывода аналитического отчета по различным срезам. Например, вывод всех документов, относящихся к безопасности и информационным технологиям.

Для отбора данных в csegRollUp указывается через запятую список необходимых библиотек документов в формате /<имя подсайта>/<имя подсайта>/<и т.д.>/:<имя библиотеки документов> (/C13/Документы:Общие документы). Далее через запятую указывается список полей, которые необходимо вывести (например, ID,DocIcon,EncodedAbsUrl,Title,Тема). Как отобразить данные, определяется через XSLT:
<!--c1-->

CODE
<!--ec1--><?xml version='1.0' encoding='utf-8'?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" />
    <xsl:template match="/">  
        <table class="ms-summarycustombody">  
            <tbody>    
                <xsl:for-each select="Rows/Row">    
                    <xsl:sort select="Modified" order="descending" />    
                    <tr>
                        <td>
                            <img src="/_layouts/images/ic{DocIcon}.gif" /></td><td width="75%">
                            <a href="{EncodedAbsUrl}">
                            <xsl:value-of select="Title" />      
                            </a>      
                        </td>
                    </tr>    
                </xsl:for-each>    
            </tbody>  
        </table>
    </xsl:template>
</xsl:stylesheet> <!--c2-->
<!--ec2-->
И самое интересное и загадочное на текущий момент это CAML-запрос на выборку данных. А загадочность заключается в том, что информации по этой тематике очень мало. Простые запросы можно составить инуитивно, но вот с более сложными могут возникнуть проблемы. Например, нигде в документации и примерах не удалось найти как делать выборку по полю с типом "множественный выбор" (когда атрибут с более сложной структурой чем линейные типы, такие как число, строка и т.п.).

Кстати, на сайте Сегуры есть еще одна веб-часть, которая стоит рассмотрения: <!--coloro:#000099--> <!--/coloro--> csegInfoPathViewer<!--colorc--><!--/colorc-->, для отображения в веб-части инфопат-формы.

Источник: Vorant's Blog ( Блоги на Realcoding.NET )



Опубликовал admin
2 Окт, Понедельник 2006г.



Программирование для чайников.