2010年1月25日,星期一

将功能区项目添加到现有选项卡/组中(功能区定制第2部分)

[此帖子于2011年9月更新,其中包含修复程序和更多信息–详见文字]

在本系列文章中:

  1. 定制功能区– creating 标签, 团体 and controls
  2. 将功能区项目添加到现有选项卡/组中(本文)
  3. 功能区自双色球推荐一注-下拉控件,客户端对象模型和JavaScript页面组件
  4. 通过Web部件和现场控件以编程方式自双色球推荐一注功能区 
  5. ** 2011年10月-下载本系列(以及更多)中的代码示例** 

这是我有关功能区定制的系列文章中的第二篇。上次 我们详细介绍了如何创建自双色球推荐一注标签,并且在此过程中还研究了如何创建"groups"标签上,以及如何添加控件。我们提到容器层次结构是功能区> 标签 > group >控件,并在示例中演示了如何创建所有控件(在客户端OM中也使用了SP.UI.Status / SP.UI.Notify)。 XML相当广泛,但是在这篇文章中,我们’我会发现,如果您不这样做,事情会更简单’无需创建整个标签,而只需在其中添加一些内容即可 现有 area of the ribbon. 这里 we cover the two main scenarios:

  • 将组添加到现有选项卡
  • 在现有选项卡上将控件添加到现有组

另外,上一篇文章涵盖了创建新标签页的大量基础知识,但是我没有涵盖我想要的内容,因此我们将在这里进行介绍:

  • 创造 语境标签

方法概要–自双色球推荐一注现有功能区

为了将您的自双色球推荐一注内容放置到现有位置,使用以下方法(’已经分解,但实际上你’一旦了解了功能区XML的各个不同块与结果之间的关系,我可能会自动执行一些这种交叉引用):

  1. Identify the location 您 wish to add 您r 习俗ization(s) toDefault Ribbon Customization 位置s 有一个详细的列表,但我发现首先识别 标签 您’从下面的列表重新拍摄(取自CMDUI.XML):
    • 丝带阅读
    • 功能区.BDCAdmin
    • Ribbon.DocLibListFormEdit
    • 功能区清单Form.Display
    • 功能区清单Form.Edit
    • Ribbon.PostListForm.Edit
    • Ribbon.SvcApp
    • 功能区解决方案
    • 功能区使用报告
    • Ribbon.WikiPageTab
    • Ribbon.PublishTab
    • Ribbon.WebPartPage
    • Ribbon.WebApp
    • Ribbon.SiteCollections
    • Ribbon.CustomCommands     (请注意,这些只是‘standard’ 标签 – read on for 标签 in 语境 团体)
  2. 通过搜索字符串ID,在CMDUI.XML中找到此选项卡的声明。
  3. 如果你 haven’现在,在SharePoint UI中找到功能区位置-与XML比较 so 您 know what 您’re working with.
  4. 停止,在不收集以下信息的情况下不要通过go:
    1. 充分‘Location’ value of where 您 are targeting, i.e. the 位置 of the 标签 (if 您’重新添加组)或组(如果您’重新直接添加控件)
    2. 的‘Sequence’您要使用的号码– determined by looking 在 the 顺序 numbers of the surrounding elements and working out where exactly 您 want to put 您r 习俗ization. As 您’d expect, 顺序 is a left-to-right representation of how things come out on the page.
    3. 如果添加组,则‘GroupTemplate’由具有类似控件的现有组使用。
    4. 的‘TemplateAlias’由与您要添加的控件相同类型(例如按钮)和大小(例如大)的控件使用。
  5. 在生成用于自双色球推荐一注的XML时使用这些值。

因此,考虑到这一过程,’看一下我列出的方案所需的XML。

将组添加到现有选项卡:

在此示例中,我配置了一个按钮(从上周开始’的示例)进入我的新组,然后将其添加到Wiki页面编辑标签(‘Ribbon.WikiPageTab’)。即使您只有一个控件,组在视觉上仍然非常有用‘categorize’ 您r button so it’s函数与其分离’的邻居。在这里,我选择了‘15’介于‘Ribbon.WikiPageTab.EditAndCheckout’ group (10) and ‘Ribbon.WikiPageTab.Manage’ (20):

Ribbon.WikiPageTab

这里’用于获取此内容的XML-您会注意到’与上周相比,数量要少得多’s ‘full ribbon’ example:

   1: <?xml version="1.0" encoding="utf-8"?>
   2: <Elements xmlns="http://schemas.microsoft.com/sharepoint/">
   3:   <CustomAction    
   4:       Id="COB.SharePoint.Ribbon.NewGroupInExistingTab"   
   5:       位置="CommandUI.Ribbon">
   6:     <CommandUIExtension>
   7:       <CommandUIDefinitions>
   8:         <CommandUIDefinition 位置="Ribbon.Templates._children">
   9:           <组模板 Id="Ribbon.Templates.NewGroupInExistingTab.OneLargeExample">
  10:             <Layout Title="NewGroupInExistingTabOneLarge" LayoutTitle="NewGroupInExistingTabOneLarge">
  11:               <Section Alignment="Top" Type="OneRow">
  12:                 <Row>
  13:                   <ControlRef DisplayMode="Large" 模板别名="Button1" />
  14:                 </Row>
  15:               </Section>
  16:             </Layout>
  17:           </组模板>
  18:         </CommandUIDefinition>
  19:         <CommandUIDefinition 位置="Ribbon.WikiPageTab.Scaling._children">
  20:           <最大尺寸         
  21:             Id="COB.SharePoint.Ribbon.NewGroupInExistingTab.NotificationGroup.MaxSize"         
  22:             顺序="15"         
  23:             GroupId="COB.SharePoint.Ribbon.NewGroupInExistingTab.NotificationGroup"            
  24:             Size="NewGroupInExistingTabOneLarge" />
  25:         </CommandUIDefinition>
  26:         <CommandUIDefinition 位置="Ribbon.WikiPageTab.Groups._children">
  27:           <Group        
  28:             Id="COB.SharePoint.Ribbon.NewGroupInExistingTab.NotificationGroup"       
  29:             顺序="15"     
  30:             Description="Used to demo adding a group"      
  31:             Title="Chris's 习俗 group!"   
  32:             Template="Ribbon.Templates.NewGroupInExistingTab.OneLargeExample">
  33:             <Controls Id="COB.SharePoint.Ribbon.NewGroupInExistingTab.NotificationGroup.Controls">
  34:               <Button          
  35:                 Id="COB.SharePoint.Ribbon.NewGroupInExistingTab.NotificationGroup.NotifyHello"     
  36:                 Command="COB.NewGroupInExistingTab.Command.Notify"   
  37:                 顺序="10"
  38:                 Image16by16="/_layouts/images/NoteBoard_16x16.png" 
  39:                 Image32by32="/_layouts/images/NoteBoard_32x32.png"     
  40:                 Description="Uses the notification area to display a message."  
  41:                 LabelText="Notify hello"               
  42:                 模板别名="Button1" />
  43:             </Controls>
  44:           </Group>
  45:         </CommandUIDefinition>
  46:       </CommandUIDefinitions>
  47:       <CommandUIHandlers>
  48:         <CommandUIHandler       
  49:           Command="COB.NewGroupInExistingTab.Command.Notify"      
  50:           CommandAction="javascript:  SP.UI.Notify.addNotification('Hello from the notification area'); " />
  51:       </CommandUIHandlers>
  52:     </CommandUIExtension>
  53:   </CustomAction>
  54: </Elements>

注意事项:

  • 的Location of ‘Ribbon.WikiPageTab.Groups._children’ on the main CommandUIDefinition tells the framework I am adding to the 团体 collection to the ‘Ribbon.WikiPageTab’标签。当我添加一个组时,这很有意义。
  • 添加组时,必须决定是否使用现成的GroupTemplate(双色球推荐一注控件的布局方式),或者是否提供双色球推荐一注。在这个样本中’m using ‘Ribbon.Templates.Flexible’这适用于像这样的简单布局(一个按钮!),而在上一篇文章中,我展示了创建一个 习俗 组模板。它’值得花一些时间在CMDUI.XML上创建自己的模板之前先检查各种各样的现有通用模板,但是出于同样的原因,有时创建一个模板而不是找到一个与您的控件匹配的模板可能更简单。’重新尝试布置。 [2011年9月–我同意安德鲁·康奈尔’声明始终最好双色球推荐一注自己的GroupTemplate。这是因为,当您期望OOTB模板可能不会始终由框架提供时。] 不过,很快就可以清楚XML在这里的工作方式-我上周使用的类比是使用HTML双色球推荐一注表。
    • 请记住‘TemplateAlias’控件上的控件必须与GroupTemplate中双色球推荐一注的控件匹配–在上面的示例中,我’m using a 模板别名 of ‘o1’我知道的双色球推荐一注在'Ribbon.Templates.Flexible’
  • A ‘MaxSize’必须将双色球推荐一注提供给适当的Scaling集合(即‘Ribbon.WikiPageTab.Scaling._children’ in this case), 虽然看起来‘Scale’双色球推荐一注是可选的(例如,如果您希望在可用空间较少时使用不同的控件) [2011年9月– in fact, ‘Scale’ is invalid here. Specify 最大尺寸 only.]

将控件添加到现有组:

如果我们需要做的就是在现有选项卡上的一个现有组中添加一个或两个控件,那么事情就更简单了。我们需要做的就是双色球推荐一注控件/指定其位置(CommandUIDefinition)并添加JavaScript行为(对于简单情况,使用CommandUIHandler元素–该复杂案例的方法将在本系列的后面部分进行讨论)。对于这个例子’m adding to ‘Ribbon.ListForm.Display.Manage.Controls._children’ –这是DispForm.aspx(列表项显示表单),很好地提醒了功能区存在于应用程序页面中,也可以在其中自双色球推荐一注功能区:

功能区清单Form.Display.Manage

..和这里’s the relevant XML:



<?xml version="1.0" encoding="utf-8"?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
  <CustomAction
   Id="COB.SharePoint.Ribbon.NewControlInExistingGroup"
   位置="CommandUI.Ribbon" 顺序="20">
    <CommandUIExtension>
      <CommandUIDefinitions>
        <CommandUIDefinition 位置="Ribbon.ListForm.Display.Manage.Controls._children">
          <Button Id="COB.SharePoint.Ribbon.NewControlInExistingGroup.Notify"
                  Command="COB.Command.NewControlInExistingGroup.Notify"
                  顺序="5" Image16by16="/_layouts/images/NoteBoard_16x16.png" Image32by32="/_layouts/images/NoteBoard_32x32.png"
                  Description="Uses the notification area to display a message."
                  LabelText="Notify hello"
                  模板别名="o1"/>
        </CommandUIDefinition>
      </CommandUIDefinitions>
      <CommandUIHandlers>
        <CommandUIHandler
          Command="COB.Command.NewControlInExistingGroup.Notify"
          CommandAction="javascript:
          
          SP.UI.Notify.addNotification('Hello from the notification area'); 
          " />
      </CommandUIHandlers>    
    </CommandUIExtension>
  </CustomAction>
</Elements>

注意事项:

  • 缩放说明,例如‘MaxSize’不需要,也不需要‘Group' or ‘GroupTemplate’ – since all these apply to 团体, which we are not creating
  • 如上所述,请确保‘TemplateAlias’ on 您r controls matches one defined somewhere in the 组模板 for the parent group. 如果你’re using one of the ‘Flexible’ templates, ‘o1’给一个大按钮,而‘o2’ gives a medium one. [2011年9月– see earlier comment; always define 您r own 组模板.] 尽管始终检查目标组的XML,但可能会有所不同。

的‘Custom Commands’ 标签

在着手创建新选项卡之前,请考虑SharePoint 2010已经提供了一个可能适合您自双色球推荐一注的主页, 用于列表页面 至少 –自双色球推荐一注命令标签。它仅显示在列表页面上,在正常情况下仅包含一个孤独的按钮。此选项卡实际上是您拥有的任何SharePoint 2007 CustomAction的升级后主页– assuming 您 don’在升级过程中引入更改,包括任何自双色球推荐一注操作’以欧洲央行为目标。无论如何,它可以帮助避免标签扩散,所以不要’构建定制时不要忘记它:

自双色球推荐一注命令 

创造 上下文标签

所以本节不’t 相当 符合本文的主题(向SharePoint功能区的现有区域添加项目),但是我投票我们很方便地掩盖了这一事实。无论如何,除了常规标签’会注意到功能区还显示了很多 语境 标签仅在相关时显示。实际上,这些都是上下文相关的 团体 可以包含任意数量的标签–也许最常见的是‘List Tools’(蓝色,如上一个屏幕截图所示)和‘Library Tools’它们分别出现在列表和库中。如果我们有自双色球推荐一注的功能区控件,我们只想呈现 有条件的, a 语境 group could be a good design choice since it would fit well with 现有 ribbon semantics. They also look rather sexy. As 您 might expect, we can amend 现有 语境 团体 or create our own:

语境小组

为此,只需将Tab元素包装在‘ContextualGroup’ element (notice the CustomAction element has no RegistrationId/RegistrationType 在 tributes, meaning it is scoped globally) and write some code which runs when the group should be shown. First the declaration of the 语境小组 and Tab:


<?xml version="1.0" encoding="utf-8"?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
  <CustomAction
   Id="COB.SharePoint.Ribbon.ContextualTab"
   位置="CommandUI.Ribbon">
    <CommandUIExtension>
      <CommandUIDefinitions>
        <CommandUIDefinition 位置="Ribbon.ContextualTabs._children">
          <语境小组  Id="COB.SharePoint.Ribbon.ContextualGroup" 顺序="50" Color="Orange" Command="COBContextualGroupCommand" 语境小组 Id="COB.Contextual" Title="Chris's Contextual Group">
            <Tab Id="COB.SharePoint.Ribbon.ContextualTab" Title="Chris's 习俗 标签" Description="Groups and controls will go in here" 顺序="501">
            <!-- Add Scaling, Groups, 组模板s, CommandUIHandlers etc. in here as per creating a normal 标签 -->
            </Tab>
          </语境小组 >
        </CommandUIDefinition>
      </CommandUIDefinitions>
    </CommandUIExtension>
  </CustomAction>
</Elements>

我在这’m编写服务器端代码(例如,从Web部件,自双色球推荐一注字段控件或其他自双色球推荐一注控件),您所需要做的就是调用SPRibbon.MakeTabAvailable()和SPRibbon.MakeContextualGroupInitiallyVisible(),后者假设您要组在页面加载后立即可见:

protected override void OnPreRender(EventArgs e)
{
    SPRibbon currentRibbon = SPRibbon.GetCurrent(this.Page);
    currentRibbon.MakeTabAvailable("COB.SharePoint.Ribbon.ContextualTab");
    currentRibbon.MakeContextualGroupInitiallyVisible("COB.SharePoint.Ribbon.ContextualGroup", string.Empty);
    
    base.OnPreRender(e);
}

在没有文档的情况下,等效的客户端代码是’立即显而易见,但我 ’找到后,我会继续挖掘并更新此帖子。 [2011年9月–似乎只能通过服务器端代码使上下文选项卡/组可用,并且还要注意,沙盒中不提供SPRibbon。]

In terms of updating an 现有 语境 group or child 标签, the following are defined in CMDUI.XML (contextual 团体 在 level 1, child 标签 在 level 2), and 您 can probably identify some of them with things 您’在您的SharePoint 2010行程中看到:

  • 功能区。编辑工具
    • 功能区。编辑工具.CPEditTab
    • 功能区。编辑工具.CPInsert
  • 功能区图像
    • 功能区图像.Image
  • 色带库ContextualGroup
    • 功能区文件
    • 色带库
  • 功能区清单ContextualGroup
    • 功能区清单Item
    • 功能区清单
  • 功能区链接
    • 功能区链接.Link
  • 色带表
    • 色带表.Layout
    • 功能区表设计
  • Ribbon.WebPartInsert
    • Ribbon.WebPartInsert.Tab
  • Ribbon.WebPartCtx
    • Ribbon.WebPartOption
  • 丝带日历
    • 丝带日历.Events
    • 丝带,日历,日历
  • 功能区权限ContextualGroup
    • 功能区权限

概要

功能区是SharePoint 2010解决方案的关键构建块,在您看到功能区选项卡的任何位置都可以对其进行自双色球推荐一注。这意味着列表页面,页面编辑体验,特定的应用程序页面,管理中心和许多其他位置可以以相同的方式定位-从CMDUI.XML识别位置的ID,然后在声明您的功能区自双色球推荐一注的XML中使用此ID 。除了将项目添加到现有的选项卡和组之外,我们还查看了上下文组,并展示了如何使用代码有条件地显示它们。

下次– 超越了JavaScript页面组件的简单按钮自双色球推荐一注

24条评论:

未知说过...

伟大的文章克里斯。您能否解释一下如何实现Javascript来激活功能区并启用/禁用某些按钮。例如,我想在我的自双色球推荐一注Webpart中创建一个链接来激活功能区。另外,我想单击Web部件中的任意位置并激活功能区。我注意到的一件事是,OOB Webparts在div上有一个onclick事件,我想这需要以某种方式实现。

克里斯·奥'Brien说过...

好问题,我认为这可能是一个 相当 常见情况。这有一些要素,我'm afraid 我没有'尚未亲自触及所有这些-但那'这个系列的目的是我

在此期间,有几点建议:

-内置的get_webPartIsSelected()函数可以帮助您完成click事件
- 如果它'■启用/禁用所需的按钮,您可以将上述功能与按钮命令附带的EnabledScript属性中的代码结合起来。这样,仅当您的Web部件处于焦点位置时,您才能启用按钮。

我没有't找到了一种方便的客户端方法来显示功能区或上下文组(即,相当于本文中服务器端代码的客户端),但是我'm sure there is one as OOTB 语境 团体 appear without postbacks. I'找到后一定要写下来!

谢谢,

克里斯。

彼得·克奈尔说过...

哇,辛苦了我要亲自开始这项工作,您的文档比MS的文档更好!

未知说过...

在显示表单示例中,我尝试了
javascript:alert('{ListId}')

希望提示我当前的列表ID,并且总是提示'null'

不是't {ListId}和其他标记在运行时被替换了吗?

当从Sharepoint Designer以显示形式添加相同的脚本作为自双色球推荐一注操作(而不是来自自双色球推荐一注功能)时,它可以正常工作。

我猜想当我们使用功能添加自双色球推荐一注操作时'的上下文为null。

知道为什么会这样吗?
我只想使用具有listid作为url参数的自双色球推荐一注操作重定向到其他页面。

克里斯·奥'Brien说过...

@Nirav,

可能是代币更换没有'这不会在CustomAction框架内发生-我当然可以相信。

我觉得你'将需要使用SP.ClientContext编写一些JavaScript来获取要重定向到的列表的URL。我的另一篇文章显示 如何在功能区中使用JavaScript页面组件 可能会有所帮助。

祝好运,

克里斯。

未知说过...

嗨,我复制了您的代码,用于将自双色球推荐一注组添加到“站点”选项卡,但是部署后,那里没有显示任何内容:-(
有任何想法吗?

问候
马丁

克里斯·奥'Brien说过...

@Hypheroth,

您是否回收了应用程序池并清除了浏览器缓存?我发现在进行功能区开发时,这两个都是必要的。

HTH,

克里斯。

未知说过...

克里斯,感谢您的精彩文章!

每当我显示我的应用程序页面时,我都试图显示一个上下文选项卡。为此,我在页面上添加了一个用户控件,该控件在OnPreRender方法中注册并显示(MakeTabAvailable和MakeContextualGroupInitiallyVisible)上下文选项卡。

我设法在功能区中看到了上下文选项卡,但是每当我单击此选项卡使其成为当前选项卡时,该选项卡便立即消失。

我想念什么?

克里斯·奥'Brien说过...

@Markus,

我没有't经历过这种行为,所以不确定建议什么-当然,您需要在每次加载页面时进行这些调用,所以如果您'在你们之间做回发'd需要确保这种情况正在发生。

否则,如果没有回发,是否会遇到JavaScript错误?

克里斯。

尼克说过...

@克里斯,@ 马库斯
I'我看到了与马库斯类似的问题。

的contextual 标签 shows up, but no controls within it. (I'我可以肯定功能区XML是有效的-只是一个简单的测试按钮)

单击选项卡无效。

@Chris-gr8文章顺便说一句,鉴于MS的文档稀疏,这确实很有帮助。

您是否可以发布一个工作示例,以获取一个使用自双色球推荐一注字段或应用程序页面显示的全局上下文选项卡。 (我能够获得上下文选项卡以与Web部件和IWebPartPageComponentProvider一起使用)?这将不胜感激。

未知说过...

@克里斯,

我在(我的用户控件的)OnPreRender方法中完成了所有代码,该方法也应该在回发时调用,但是很明显,如果我单击任何功能区选项卡,都不会发生回发事件。单击任何选项卡后,我的上下文选项卡都消失了。我不'没有任何JavaScript错误。我一定想念什么,但是呢?
I could send 您 my code if 您 want to take a look 在 it.

谢谢,
马库斯

克里斯·奥'Brien说过...

@Markus,

我想到的一件事是,我想知道我们是否正在开发不同的版本?如果您在公开测试版中,而我是在以后的版本中进行此工作的(99%的确定是我这样做的),则可以解释。

如果您可以等到SharePoint Evolutions会议之后,我可以花更多的时间尝试深入了解它。直到那时,我'm afraid I'我准备为我的演讲准备演示:(

对不起,我可以'目前不会有更多帮助。

克里斯。

大黄蜂说过...

克里斯,你好

很棒的文章,写得好又精确。
但是,我'm遇到了与Marcus相同的问题。
I'在SharePoint的RTM版本上。
我的上下文群组和我的标签正确显示,当我单击该标签时,所有内容都会消失。
如果我执行Ribbon.NormalizeContextualGroup我的选项卡显示正确O_o".
有点奇怪。

克里斯·奥'Brien说过...

@大黄蜂,

嗯,也许那个'是我样本中缺少的东西。不幸的是我没有'无法访问用于构建这些示例的预发行版VM,但是我'我会尽快验证ribbon.NormalizeContextualGroup。

同时,如果其他人发现这确实是缺失的部分,那么如果您发表评论以确认,那就太好了。

非常感谢,

克里斯。

雅各布 said...

真是内容丰富的文章。

I did run into one issue. 的remove status buttons never get enabled. I looked through the code and put some alerts. 的EnabledScript code does not get fired again after the first evaluation when the page loads. Any idea what I am doing wrong?

杰克

克里斯·奥'Brien说过...

@杰克

这可能与MS在我编写这些示例的预发行版本和RTM版本之间进行的微小更改有关。我认为您现在需要(自己)打一个额外的电话,以前'是必要的-不幸的是我可以'记得名字(RefreshRibbon ??)和避风港'还需要在RTM上进行操作。

对不起,我可以'寻求更多帮助。其他人可以加入吗?

谢谢,

克里斯。

ddNils说过...

@ Cris,@ 马库斯,
I am experiencing the exact same Problem as 马库斯 did. I am working on a usual SP2010 (as it is used in these days). After a lot of problems I can now finally see my Tab (not the contents of it though). - 的key here was to use 您r provided 顺序s in 语境小组 AND Tab (in Tab concat 1).
回到我的问题:单击ContextualTab时,它只是消失了。艰难的NormalizeContextualGroup有助于不断显示标签,它隐藏了我要保留的上下文部分。

我希望有人可以对此提供帮助...或可以为我指明正确的方向。我将不胜感激,谢谢。

道格说过...

克里斯,
很棒的文章。我现在可以设置自双色球推荐一注按钮!但是,如果我设置它并希望通过增强代码或更改放置按钮的图标或组来添加它,则不会'不会发生。我尝试重新启动服务器并清除缓存,但没有帮助。您可以列出要迭代开发按钮代码的步骤吗?

谢谢。

克里斯·奥'Brien说过...

@道格

那'一个好问题-碳带发展可能是持久性。这里'是我一次做的事情'在迭代开发过程中进行了更改:

-使用VS2010重新部署解决方案,确保功能被重新激活
-确保发生应用程序池回收(通常由以上内容处理,具体取决于您的VS部署配置)
-确保浏览器缓存被禁用(IE开发人员工具和Firefox的Firebug均允许您执行此操作)或已清除

最后一个通常是人们忘记做的那件事。

HTH,

克里斯。

未知说过...

Good walkthrough but I am having a problem when I try to add a button to the controls. I actually get the same error if I have any 团体 in the section or not. 的wrror is:
Sys.ArgumentException: Cannot deserialize. 的data does not correspond to valid JSON.
参数名称:数据
赢了'不要让我在这里发布我的代码。

克里斯·奥'Brien说过...

@Darrell,

我的怀疑是'是您代码中某处的错字。如果你可以的话't在此处将代码作为注释发布,建议在您的电子邮件地址中再留下一个注释(我赢了)'t发布到博客)。一世'然后,将通过电子邮件与您联系,以了解我们是否可以解决该问题。

HTH,

克里斯。

保罗·高曼说过...

很棒的文章。这确实帮助我在自双色球推荐一注SharePoint功能区方面前进。我在自双色球推荐一注组中显示控件时遇到问题,我想知道您是否可以帮助我。

我在EditingTools.Insert上下文选项卡下添加了一个新组,该组在您编辑页面时显示。我的组标题显示正常。我在小组中的XML下双色球推荐一注了一个部分,但是控件不会显示。

我尝试从我的Elements文件中发布XML,但不会'不要让我。如果有帮助的话,请给我您的电子邮件,我会把它发送给您。

Thank 您 in advance.
保罗

克里斯·奥'Brien说过...

@保罗,

当然,很高兴看看。建议用您的电子邮件地址和我再发表评论'll get in touch.

谢谢,

克里斯。

鲁道夫·佩雷斯G说过...

克里斯,你好!谢谢你的帖子!
我想知道,当用户在文档库中选择文件时,要显示自双色球推荐一注上下文组和选项卡该怎么办?