Вы пробовали использовать DataFormWebPart (DFWP) раньше? Это в основном самый простой из веб-частей с привязкой к данным, но, как ни странно, самый настраиваемый.
Чтобы попробовать, откройте дизайнер SharePoint и создайте фиктивную страницу aspx, с которой можно поиграть / поиграть. Затем откройте панель источников данных и найдите список, который вы хотите использовать. затем нажмите на этот список и выберите «просмотреть данные». Перетащите соответствующие поля на страницу aspx. Теперь у вас есть (очень) базовая сетка, отображающая ваши данные.
Крутая вещь, хотя, все макеты управляются xsl, так что полностью настраиваемые. Вы даже можете сделать xsl повторно используемым, переключившись в режим просмотра исходного кода, вырезать и вставить xs, l в отдельный файл xsl. Чтобы затем использовать этот файл вместо встроенного xsl, после перемещения встроенного xsl измените свойство DFSWP xsl (содержащее встроенный xsl) с
<xsl><!-- .... this is where the moved inline xsl used to be... --></xsl>
до
<xsllink>/server relative url to xsl file</xsllink>
Единственная оставшаяся проблема заключается в том, что источник данных DFWP теперь связан одним списком. Чтобы выполнить сворачивание семейства сайтов (например, если вы хотите включить несколько списков событий, которые вы хотите включить), вам нужно изменить запрос выбора SPDataSource в DFWP и режим источника данных. Как это сделать, объяснено здесь .
Теперь обратимся к вашему актуальному вопросу: (после моего откровенного плагина недооцененного DFWP :-D) SPDataSource DFWP в основном использует SPQuery или SPSiteDataQuery (в зависимости от режима источника данных) для получения данных , и вы можете сделать гораздо более мудрым фильтром. Либо в самом запросе CAML, либо просто отфильтруйте ненужные строки, используя что-то вроде следующего:
<xsl:if test="not(contains(@Title, 'Deleted:'))">
<xsl:apply-templates />
</xsl:if>