CommandUIHandler 元素

上次修改时间: 2015年3月9日

适用范围: SharePoint Foundation 2010

本文内容
属性
子元素
父元素
出现次数

定义命令处理程序。

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

属性

属性

说明

Command

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

CommandAction

必需。要在调用此处理程序时执行的脚本语句。Microsoft SharePoint Foundation 可调用 eval 方法以传递此属性的值。

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

  • {ItemId} – 列表视图中使用的 ID (GUID)。

  • {ItemUrl} – 列表项的相对于网站的 URL (Url)。

  • {RecurrenceId} – 重复项的 ID (RecurrenceID)。

  • {SiteUrl} – 网站的完全限定 URL (Url)。

  • {ListId} – 列表的 ID (GUID) (ID)。

  • {ListUrlDir} – 网站及列表文件夹的相对于服务器的 URL。

  • {Source} – 完全限定请求 URL。

  • {SelectedListId} – 当前从列表视图中选择的列表的 ID (GUID)。

  • {SelectedItemId} – 当前从列表视图中选择的项目的 ID。

EnabledScript

可选。执行以确定命令是处于启用状态还是禁用状态的脚本语句。该脚本表达式应返回一个 Boolean 值。如果该命令为启用状态,则为 true,否则为 false。如果禁用功能区,则这些命令将灰显且不可单击。

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

子元素

父元素

CommandUIHandlers

出现次数

最小值:1

最大值:无限制

示例

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

<Elements xmlns="https://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>