Невозможно добавить кнопку ленты в пользовательский список - PullRequest
7 голосов
/ 15 сентября 2010

Редактировать: Обновлено с помощью ввода Omlin

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

Ниже приведены примеры моего кода, работающего с существующим списком и не работающего с настраиваемым списком. Я также прикрепил ссылки на рабочий и нерабочий код, который создает пользовательский список и кнопку ленты. В этих решениях предполагается, что у вас есть сайт, созданный по адресу http://intranet.contoso.com.. Возможно, вам потребуется изменить URL-адрес сайта проекта, чтобы запустить код.


Работа со встроенным списком (общие документы):

Элементы XML:

<?xml version="1.0" encoding="utf-8"?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
       <CustomAction
              Id="CustomRibbonTab"
              Location="CommandUI.Ribbon.ListView"
              RegistrationId="101"
              RegistrationType="List"
              Title="My Custom UI"
              Sequence="5"
              >
              <CommandUIExtension>
                     <CommandUIDefinitions>
                           <CommandUIDefinition Location="Ribbon.Documents.New.Controls._children">
                                  <Button
                                         Id="Ribbon.Items.New.RibbonTest"
                                         Alt="Test Button"
                                         Sequence="5"
                                         Command="Test_Button"
                                         LabelText="Click me!"
                                         Image32by32="/_layouts/images/ribbon_blog_32.png"
                                         Image16by16="/_layouts/images/ribbon_blog_16.png"
                                         TemplateAlias="o1"
                                         />
                           </CommandUIDefinition>
                     </CommandUIDefinitions>
                     <CommandUIHandlers>
                           <CommandUIHandler Command="Test_Button"
                                                         CommandAction="javascript:alert('I am a test!');">

                           </CommandUIHandler>
                     </CommandUIHandlers>
              </CommandUIExtension>
       </CustomAction>
</Elements>

Рабочий пример Working Example

Полное решение Visual Studio : http://employees.claritycon.com/pwalke/blogs/working.zip


Не работает

Элементы XML : я изменил 2 строки из приведенного выше кода.
Строка 28: свяжите кнопку со списком пользовательских продуктов, идентификатором 10001, указанным в шаблоне списка ниже по почтовому индексу.

RegistrationId="10001"

Строка 85: сообщить SharePoint о размещении элемента в меню «Элементы».

<CommandUIDefinition Location="Ribbon.ListItem.New.Controls._children">

Снимок экрана - Я ожидал, что пользовательская кнопка ленты будет добавлена ​​слева от Нового элемента. Not Working

Полное решение Visual Studio : http://employees.claritycon.com/pwalke/blogs/notworking.zip

Ответы [ 3 ]

7 голосов
/ 15 сентября 2010

Ribbon.Items.New.Controls._children

Согласно MSDN , просто нет такого расположения ленты:)

У меня сейчас нет SharePoint для тестирования, но я чувствую, что вам нужно использовать Ribbon.ListItem.New.Controls._children


Обновление: до сих пор я тестировал кнопку добавления в Ribbon.ListItem.New.Controls._children. Это прекрасно работает для меня (я еще не использовал тип регистрации и регистрационный идентификатор). Пример кода, который я использовал:

  <CustomAction
  Id="ChangeBrowseTabTitle"
  Location="CommandUI.Ribbon">
    <CommandUIExtension>
      <CommandUIDefinitions>
        <CommandUIDefinition
          Location="Ribbon.ListItem.New.Controls._children">
          <Button
            Id="Ribbon.ListItem.New.RibbonTest"
            Alt="Test Button"
            Sequence="5"
            Command="Test_Button"
            LabelText="Click me!"
            Image32by32="/_layouts/SharePointTestProject/avatar32.png"
            TemplateAlias="o1"
              />
        </CommandUIDefinition>
      </CommandUIDefinitions>
      <CommandUIHandlers>
        <CommandUIHandler Command="Test_Button" CommandAction="javascript:alert('I am a test!');" />
      </CommandUIHandlers>
    </CommandUIExtension>
  </CustomAction>

Результат:

alt text

Итак, сейчас я попытаюсь протестировать пользовательский список.


Обновление: я взял ваш проект "notworking.zip" и попробовал код. Без удачи. Но когда я создал пустое новое определение списка (Решение -> щелкните правой кнопкой мыши -> Добавить -> Новый элемент -> Определение списка из типа содержимого), присвоил ему собственный идентификатор (10012) и изменил ссылку на ленте, он начал работать:

alt text


Окончательный результат

Так что что-то не так с вашим определением списка, на самом деле. У меня нет достаточно времени, чтобы проверить все xml, поэтому я просто создал новый список с такими же столбцами, как я описал выше, удалил старый и все работает. Вы можете скачать окончательное решение, перейдя по этой ссылке:

https://sites.google.com/site/omlinfiles/StackOverflow.RibbonCustomList.zip?attredirects=0&d=1

P.S. не забудьте изменить URL сайта

2 голосов
/ 25 января 2012

Если вы хотите добавить кнопку ленты в пользовательский список, который был создан через интерфейс меню действий сайта без функции на vs2010, вы можете сделать это, установив для атрибута RegistrationId значение 100 (общий список).

Пример:

    <?xml version="1.0" encoding="utf-8"?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
  <CustomAction
    Id="ListFolderSecurityButton"
    RegistrationType="List"
    RegistrationId="100"
    Location="CommandUI.Ribbon">
    <CommandUIExtension>
      <CommandUIDefinitions>
        <CommandUIDefinition
         Location="Ribbon.ListItem.New.Controls._children">
          <Button
           Id="Ribbon.ListItem.New.Controls.ListFolderSecurity"
           Alt="Gestiona los permisos de acceso de lectores en el folder"
           Sequence="10"
           Image32by32="/_layouts/images/Permissions32.png"
           Command="ManageSecurityFolder"
           LabelText="Folder Permissions"
           TemplateAlias="o2"/>
        </CommandUIDefinition>
      </CommandUIDefinitions>
      <CommandUIHandlers>
        <CommandUIHandler
         Command="ManageSecurityFolder"
         CommandAction="/CustomPages/PMS_AdminSecurityFolder.aspx" />
      </CommandUIHandlers>
    </CommandUIExtension>
  </CustomAction>
  <!--<HideCustomAction Id="Ribbon.ListItem.New.Controls.ListFolderSecurityButton" Location="Ribbon.ListItem.New.Controls._children">
  </HideCustomAction>-->
</Elements>
0 голосов
/ 22 сентября 2010

Мне удалось решить эту проблему.Спасибо Омлину за то, что он помог мне в этом.

Это была проблема, состоящая из двух частей.

1: По предложению omlin я изменил

Ribbon.Items.New.Controls._children 

на

Ribbon.ListItem.New.Controls._children

2Мне пришлось изменить объявления панели инструментов schema.xml с

<ToolBar />

на

<Toolbar Type="Regular"/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...