CommandUIHandler 元素

适用于:SharePoint 2016 |SharePoint Foundation 2013 |SharePoint Online |SharePoint Server 2013

定义命令处理程序。

定义

<CommandUIHandler
  Command = "Text"
  CommandAction = "Text"
  EnabledScript = "Text"
 />

元素和属性

下面各部分介绍了属性、子元素和父元素。

Attributes

属性 说明
命令 必填。 命令的名称。 此属性的值与定义控件的元素上的 Command 属性的值相匹配。
CommandAction

必填。 要在调用此处理程序时执行的脚本语句。 Microsoft SharePoint Foundation 调用 eval 方法,并传入此属性的值。

属性的值可包含在呈现时转换的替代标记。 可识别以下标记:

  • {ItemId} - 从列表视图获取的 ID (GUID) 。
  • {ItemUrl} - 列表项的相对于 Web 的 URL (url) 。
  • {RecurrenceId} - 定期项的 ID (RecurrenceID) 。
  • {SiteUrl} - 网站的完全限定 URL (url) 。
  • {ListId} - id (GUID) 列表 (ID) 。
  • {ListUrlDir} - 站点的相对于服务器的 URL 以及列表的文件夹。
  • {Source} - 完全限定的请求 URL。
  • {SelectedListId} - 当前从列表视图中选择的列表的 ID (GUID) 。
  • {SelectedItemId} - 当前从列表视图中选择的项的 ID。
EnabledScript

注意EnabledScript 属性不适用于 SharePoint 外接程序部署到主机 Web 的自定义操作。

一个脚本语句,用于确定命令是启用或禁用的。 脚本表达式应返回一个 布尔 值;如果启用命令,则返回 true ;否则返回 false 。 如果禁用功能区,命令将灰显且不可单击。

对于 CommandAction 属性,调用 eval 方法时会使用此属性的值作为参数。 EnabledScript 属性不支持为 CommandAction 属性介绍的替代标记。

子元素

父元素

CommandUIHandlers

出现次数

最小值:1

最大值:无限制

示例

下面的示例定义一个按钮命令和相应的处理器。

    <Elements xmlns="http://schemas.microsoft.com/sharepoint/">
      <CustomAction
       Id="EmailContacts"
       RegistrationType="List"
       RegistrationId="105"
       Location="CommandUI.Ribbon">
        <CommandUIExtension>
          <CommandUIDefinitions>
            <CommandUIDefinition
             Location="Ribbon.ListItem.Actions.Controls._children">
              <Button
                Id="Ribbon.ListItem.Actions.Email"
                Alt="$Resources:core,E-Mail;"
                Sequence="55"
                Command="emailContacts"
                LabelText="$Resources:core,E-Mail;"
                Description="$Resources:core,E-Mail;"
                TemplateAlias="o1"/>
            </CommandUIDefinition>
          </CommandUIDefinitions>
          <CommandUIHandlers>
            <CommandUIHandler
             Command="emailContacts"
             CommandAction="javascript:
               function getItemIds()
               {
                 var itemIds = '';
                 var items = SP.ListOperation.Selection.getSelectedItems();
                 var item;
                 for(var i in items)
                 {
                   item = items[i];
                   if(itemIds != '')
                   {
                     itemIds = itemIds + ',';
                   }
                   itemIds = itemIds + item.id;
                 }
                 return itemIds;
               }
               function handleReadyStateChange()
               {
                 if (client.readyState == 4)
                 {
                   if (client.status == 200)
                   {
                     // client.responseText is mailto string
                     window.location = ('mailto:' + client.responseText);
                   }
                 }
               }
               function invokeEmailContacts()
               {
                 var params = 'itemids=' + getItemIds();
                 // Posting to EmailContacts.ashx to get the mailto string
                 var site='{SiteUrl}';
                 var url = site + '/_layouts/emailcontacts.ashx?listId={ListId}';
                 client = null;
                 client = new XMLHttpRequest();
                 client.onreadystatechange =  handleReadyStateChange;
                 client.open('POST', url, true);
                 client.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
                 client.setRequestHeader('Content-length', params.length);
                 client.send(params);
               }
               invokeEmailContacts();"

          EnabledScript="javascript:
               function enableEmailContacts()
               {
                 var items = SP.ListOperation.Selection.getSelectedItems();
                 return (items.length > 0);
               }
               enableEmailContacts();"/>
          </CommandUIHandlers>
        </CommandUIExtension>
      </CustomAction>
    </Elements>