Как добавить столбец библиотеки документов с именем «Тип (значок, связанный с документом)» в список? - PullRequest
1 голос
/ 19 апреля 2010

Я работаю с представлением списка. Я хочу, чтобы столбец выглядел аналогично столбцу библиотеки документов с именем «Тип (значок, связанный с документом)». Я также должен быть в состоянии указать путь, по которому должен открываться этот гиперссылочный значок. Я много пробовал с существующими колонками сайта, но все еще не мог понять, как это сделать. Кто-нибудь реализовал это ранее. Пожалуйста, поделитесь своим опытом. Заранее спасибо.

1 Ответ

0 голосов
/ 19 апреля 2010

С точки зрения готовых возможностей, вы не можете напрямую реализовать такой столбец.Тип (значок, связанный с документом) использует вычисляемый тип поля.Их настройка, особенно для такой простой цели, очень сложна и требует развертывания решений.Тем не менее, есть и другие способы сделать это.

Основная вещь, которую вы хотите достичь - это, по сути, связанная картина.Сочетание функциональности гиперссылки в поле URL и функциональности изображения.Существует два подхода к этому, которые могут быть реализованы без развертывания решения.Я перечислю и то, и другое, и вы можете попробовать тот или другой вариант, который вам больше по вкусу.


Вариант первый: изменение поля URL

Это включает в себя изменение FLDTYPES.XML, расположенного в 12 кусте на вашем сервере SharePoint.Естественно, рекомендуется сделать резервную копию вашего текущего файла, прежде чем делать это.Файл FLDTYPES.XML находится в папке \ Program Files \ Common Files \ Microsoft Shared \ Расширения веб-сервера \ 12 \ TEMPLATE \ XML.Это изменение позволит нам использовать поле URL по умолчанию в пользовательском интерфейсе SharePoint, когда оно настроено для отображения HyperLink, для показа изображения при определенных обстоятельствах.

После того, как вы создадите резервную копию файла как нечто вроде FLDTYPES.OLD или что-have-you, откройте FLDTYPES.XML в текстовом редакторе и найдите поле URL.Строка <Field Name="TypeName">URL</Field> будет в начале, так что просто ищите это.Теперь в большом определении типа поля будет переключатель поля.За исключением комментария, который я сейчас добавил вручную, он выглядит следующим образом:

<FieldSwitch>
    <Expr><Property Select="Format"/></Expr>
    <Case Value="Image">
        <FieldSwitch>
            <Expr><Property Select="Width"/></Expr>
            <Case Value="">
                <HTML><![CDATA[<IMG SRC="]]></HTML><Column HTMLEncode="TRUE"/><HTML>" ALT="</HTML><Column2 HTMLEncode="TRUE"/><HTML><![CDATA[">]]></HTML>
            </Case>
            <Default>
                <HTML><![CDATA[<IMG SRC="]]></HTML><Column HTMLEncode="TRUE"/><HTML>" ALT="</HTML><Column2 HTMLEncode="TRUE"/><HTML><![CDATA[" WIDTH="]]></HTML><Property Select="Width"/><HTML><![CDATA[" HEIGHT="]]></HTML><Property Select="Height"/><HTML><![CDATA["> ]]></HTML>
            </Default>
        </FieldSwitch>
    </Case>
    <Default>
        <HTML><![CDATA[<A HREF="]]></HTML><Column HTMLEncode="TRUE"/><HTML><![CDATA[">]]></HTML>
        <Switch>
            <Expr><Column2/></Expr>
            <Case Value="">
                <Column HTMLEncode="TRUE"/>
            </Case>
            <Default>                        
                <Column2 HTMLEncode="TRUE"/>   <!-- This is where we work -->               
            </Default>
        </Switch>
        <HTML><![CDATA[</A>]]></HTML>
    </Default>
</FieldSwitch>

Теперь мы хотим заменить <Column2 HTMLEncode="TRUE"/> в строке, к которой я добавил комментарий.Это логика для того, что отображается для поля URL, когда оно установлено в HyperLink, и описание заполнено, и в данный момент это описание будет просто отображаться.Мы хотим изменить его так, чтобы, когда это описание является URL-адресом изображения, оно отображало это изображение.Ниже приведен пример того, что я использую.

<Switch>
    <Expr>
        <GetFileExtension>
            <Column2/>
        </GetFileExtension>
    </Expr>
    <Case Value="pnG">
        <HTML><![CDATA[<IMG STYLE="border:0" SRC="]]></HTML>
        <Column2 HTMLEncode="TRUE"/>
        <HTML><![CDATA[">]]></HTML>
    </Case>
    <Default>
        <Column2 HTMLEncode="TRUE"/>
    </Default>
</Switch>

По сути, оно обрабатывает описание как имя файла, проверяет, имеет ли оно расширение, и в случае совпадения оно будет отображаться какизображение без рамки.Теперь я использую pnG, потому что это сравнение регистра переключателей чувствительно к регистру, а исходный URL для изображения - нет.Итак, когда я создаю поле и указываю описание как "/_layouts/images/FlagRed.pnG", то оно покажет изображение FlagRed, которое я сохранил как "/_layouts/images/FlagRed.png".Таким образом, когда я хочу показать фактический текстовый URL-адрес изображения, я могу просто не использовать заглавные буквы в конце.Конечно, вам придется заменить «pnG» в выражении case на любое расширение файла, которое вы используете, и добавить дополнительные случаи, когда у вас есть больше.Сохраните файл, когда закончите.

После завершения всех настроек запустите IISRESET на машине.Как только это будет завершено, ваши поля URL теперь смогут отображать ссылки на изображения.Все, что вам нужно сделать при создании нового поля URL, это указать его как тип HyperLink, поместить ссылку назначения в качестве URL и указать URL-адрес источника изображения в качестве Описание.Добавьте столбец URL в представление списка так же, как и для любого другого типа поля.


Вариант второй: вычисляемые поля HTML

вместовозиться с сервером, вместо этого вы можете использовать некоторый JavaScript в веб-части редактора контента.По сути, вставьте веб-часть редактора контента на страницу с представлением списка, убедитесь, что она находится ниже представления списка.Вводя скрипт в этом CEWP, вы можете запустить его, чтобы изменить отображение для представления списка.В этом конкретном случае мы используем сценарий, который позволяет отображать HTML в виде столбца «Вычисляемый» как HTML.

Следующие элементы должны иметь все ресурсы, необходимые для получения сценария: Использование вычисляемых столбцов для записи HTML.Здесь много читают, но есть большой потенциал, который вы можете получить от реализации этого скрипта, поэтому я рекомендую его.Когда вы наконец настроите CEWP с помощью скрипта, нам понадобятся два поля в вашем списке.

  • Одно из них - текстовое поле, оно не будет отображаться в списке, но будет отображаться в форме редактирования. Это будет место, где они указывают путь гиперссылки.
  • Затем вам нужно создать вычисляемый столбец, который выводится в виде одной строки текста. Используйте формулу, подобную следующей: =CONCATENATE("<a href='",{0},"'><img src='",{1},"' style='border:0' /></a>")
    • Замените {0} именем текстового поля, которое вы создали в квадратных скобках. Итак, если вы назвали его «Путь», то это должно быть [Путь].
    • Замените {1} URL-адресом источника изображений для ваших значков. Если для изображения есть несколько вариантов, вам нужно либо добавить другое текстовое поле для указания URL-адреса изображения, либо использовать некоторую логику IF. Проверьте в этой статье синтаксис формул вычисляемого столбца для настройки этой логики.

Добавьте вычисляемый столбец в список. Теперь, когда текстовое поле заполнено, вы получите ссылку на изображение.


Надеюсь, что хотя бы один из этих двух поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...