none
Нумерация строк в списке RRS feed

  • Вопрос

  • Здравствуйте, есть список, который забирает данные с другого списка, в том числе и ИД, к нему необходимо прикрепить нумерация строк по порядку, при этом чтобы при удалении элемента из списка нумерация сохранялась. как реализовать данную нумерацию?
    14 июля 2014 г. 10:40

Ответы

  • К сожалению, я не силен в XSL, поэтому опишу только примерное направление куда копать без работающего примера, т.к. для экспериментов особо нет времени. 

    В общем задача состоит из двух этапов.

    1. Написать XSL файл, который будет использоваться для рендеринга

    2. Заставить шарик при рендеринге использовать ваш кастомный XSL.

    Для первого этапа в библиотеке стилей (или другом месте) создаем XSL файл со следующим содержимым. 

    <xsl:stylesheet xmlns:x="http://www.w3.org/2001/XMLSchema" xmlns:d="http://schemas.microsoft.com/sharepoint/dsp" version="1.0" exclude-result-prefixes="xsl msxsl ddwrt" xmlns:ddwrt="http://schemas.microsoft.com/WebParts/v2/DataView/runtime" xmlns:asp="http://schemas.microsoft.com/ASPNET/20" xmlns:__designer="http://schemas.microsoft.com/WebParts/v2/DataView/designer" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:SharePoint="Microsoft.SharePoint.WebControls" xmlns:ddwrt2="urn:frontpage:internal" xmlns:o="urn:schemas-microsoft-com:office:office">    
    <xsl:include href="/_layouts/xsl/main.xsl"/>
    	<xsl:include href="/_layouts/xsl/internal.xsl"/> 
    	<xsl:template name="RowNumber" match="FieldRef[@Name='ID']" mode="body">
    			 <a href="http://google.com">Google</a>    
    	</xsl:template>
    </xsl:stylesheet>

    Этот файл будет рендерить все поля за исключением поля ID стандартными средствами. А вместо поля ID будет рендериться ссылка на Гугл. 

    2. Добавляем в наше представление списка показ поля ИД (для того, чтобы проверить как оно будет рендериться). Затем, для того, чтобы Шарик подхватил наш файл, заходим на страницу с представлением списка в режим редактирования и далее в настройки вэб-части списка. Там в самом низу в разделе Разное есть поле "Ссылка на XSL", в которое надо вставить ссылку на созданный нами файл. После сохранения страницы у нас везде в поле ИД должна быть ссылка на Гугл.

    Ну а дальше наступает собственно подгонка XSL, в которой я не силен. Возможно прокатит замена в лоб тега А, который ссылается на Гугл на <xsl:value-of select="position()"/>, но не факт, т.к. надо еще позаботиться о контексте, в котором будет вызываться этот участок. Попробуйте, поэкспериментируйте, возможно что-то получится.

    PS: у вас SharePoint 2010? Или 2013?

    14 июля 2014 г. 15:31

Все ответы

  • Если я правильно понял вопрос, то вы можете просто использовать поле ИД списка. Для этого сделайте его видимым в настройках представления.
    14 июля 2014 г. 10:48
  • Не совсем так, поле ИД используется как номер заявки, а мне необходимо сделать построчную нумерацию, наглядный пример

    ИД

    2456

    2435

    1234

    2314

    А нужно чтобы была нумерация этих строк

    № ИД

    1  2456

    2  2435

    3  1234

    4  2314

    14 июля 2014 г. 10:58
  • В этом случае вы можете посмотреть в сторону доработки XSLT: 

    Use SharePoint List row number

    Либо если это SharePoint 2013, вы можете использовать JSLink для рендеринга списка.

    Using JSLink to change the UI of a SharePoint list/view

    А так вообще не уверен, что это хорошая идея показывать номер строки. Проблема в том, что нумерация будет разная при разных параметрах фильтров, что может вызвать путаницу. Могли бы вы сказать для каких целей планируете использовать нумерацию? Возможно сможем предложить какое-то более подходящее решение.

    14 июля 2014 г. 11:15
  • спасибо за ваш ответ, но мне как и предыдущему интересующемуся данным вопросом непонятно куда вставлять кусок данного кода, в SH Designer, помогите разобраться
    14 июля 2014 г. 12:50
  • К сожалению, я не силен в XSL, поэтому опишу только примерное направление куда копать без работающего примера, т.к. для экспериментов особо нет времени. 

    В общем задача состоит из двух этапов.

    1. Написать XSL файл, который будет использоваться для рендеринга

    2. Заставить шарик при рендеринге использовать ваш кастомный XSL.

    Для первого этапа в библиотеке стилей (или другом месте) создаем XSL файл со следующим содержимым. 

    <xsl:stylesheet xmlns:x="http://www.w3.org/2001/XMLSchema" xmlns:d="http://schemas.microsoft.com/sharepoint/dsp" version="1.0" exclude-result-prefixes="xsl msxsl ddwrt" xmlns:ddwrt="http://schemas.microsoft.com/WebParts/v2/DataView/runtime" xmlns:asp="http://schemas.microsoft.com/ASPNET/20" xmlns:__designer="http://schemas.microsoft.com/WebParts/v2/DataView/designer" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:SharePoint="Microsoft.SharePoint.WebControls" xmlns:ddwrt2="urn:frontpage:internal" xmlns:o="urn:schemas-microsoft-com:office:office">    
    <xsl:include href="/_layouts/xsl/main.xsl"/>
    	<xsl:include href="/_layouts/xsl/internal.xsl"/> 
    	<xsl:template name="RowNumber" match="FieldRef[@Name='ID']" mode="body">
    			 <a href="http://google.com">Google</a>    
    	</xsl:template>
    </xsl:stylesheet>

    Этот файл будет рендерить все поля за исключением поля ID стандартными средствами. А вместо поля ID будет рендериться ссылка на Гугл. 

    2. Добавляем в наше представление списка показ поля ИД (для того, чтобы проверить как оно будет рендериться). Затем, для того, чтобы Шарик подхватил наш файл, заходим на страницу с представлением списка в режим редактирования и далее в настройки вэб-части списка. Там в самом низу в разделе Разное есть поле "Ссылка на XSL", в которое надо вставить ссылку на созданный нами файл. После сохранения страницы у нас везде в поле ИД должна быть ссылка на Гугл.

    Ну а дальше наступает собственно подгонка XSL, в которой я не силен. Возможно прокатит замена в лоб тега А, который ссылается на Гугл на <xsl:value-of select="position()"/>, но не факт, т.к. надо еще позаботиться о контексте, в котором будет вызываться этот участок. Попробуйте, поэкспериментируйте, возможно что-то получится.

    PS: у вас SharePoint 2010? Или 2013?

    14 июля 2014 г. 15:31