2011-12-22 139 views
2

我是问一个双待很抱歉,但我与发现无解搞砸了一个列表项开始从自定义按钮/动作的工作流 - 或失踪理解答案。在SharePoint 2010(所有与Visual Studio 2010)

我的问题是像descrided:

我有一个按钮一些自我构建的自定义功能区。如果我点击设计好的按钮,我喜欢开始一个工作流程。

好了,更多设置:

这是一个通用的清单,是指,我elemets.xml看起来像这样:

<CustomAction 
    Id="MyCustomRibbonTab" 
    Location="CommandUI.Ribbon.ListView" 
    RegistrationId="100" 
    RegistrationType="List"> 
    <CommandUIExtension> 
    <CommandUIDefintions> 
     <CommandUIDefinition 
     Location="Ribbon.Tabs._children"> 
     <Tab Id="Ribbon.CustomTab" Sequence="501"> 
     ... (Scaling) 
      <Groups Id="Ribbon.CustomTab.Groups"> 
      <Group 
       Id="Ribbon.CustomTab.GroupOne" 
       Sequence="52"> 
       <Controls Id="Ribbon.CustomTab.GroupOne.Controls"> 
       <Button 
        Id="Ribbon.CustomTab.GroupOne.ButtonOne" 
        Command="CustomTab.ButtonOneCommand" 
        Sequence="11"> 
       </Controls> 
      </Group> 
      </Groups> 
     </Tab> 
     </CommandUIDefinition> 
    </CommandUIDefinitions> 
    <CommandUIHandlers> 
     <CommandUIHandler 
     Command="CustomTab.ButtonOneCommand" 
     CommandAction="javascript:alert('how start workflow here?');" /> 
     /> 
    </CommandUIHandlers> 
    </CommandUIExtension> 
    <!-- what about starting workflow here? How? --> 
</CustomAction> 

希望这是清楚我的XML-立柱装置。好吧,如果我把CommandAction =“javascript:alert('应该启动一个工作流程');” 。我的意思是,这个警报弹出,我可以点击好的,没有别的。

现在我在同一个项目中我的工作流程而设计的。有两种类型,一种是在asp中启动的形式,另一种是没有的,都在选定的项目上运行。我可以在使用标准功能区“Workflows”时启动它们,然后单击它们。目前一切都很好。

但我想通过点击我的按钮,没有更多的点击,因为它是从现在开始每个工作流程。谢谢你帮助我。

我很新的SharePoint。所以请在你的答案中包括“添加新的......空元素/ JavaScript文件”或任何需要的东西来获得我的假设。

如果您对我的工作流设计更多的问题,我会尽快答复。

非常感谢你,

danbruc

注:是的,我只希望,甚至我的Elements.xml是好的。我从网上拿走了所有的东西所以如果你有重新设计的建议,我是开放的。只是盲目地看到解决方案。 此外,我可以把这个选项卡放在ListView的ContextualTab中,但是即使javascript不工作。

回答

6

你阅读Customizing and Extending the SharePoint 2010 Server Ribbon的文档?

这是非常简洁的,并告诉您关于您的问题,一个重要的点: 你需要做一个回发到发起通过服务器端代码的工作流程:

<CommandUIHandler Command="WebPartContextualTabs.OnPostback" 
CommandAction="javascript:__doPostBack('StartMyWorkflowPostBack','');" /> 

现在要放什么StartMyWorkflowPostBack开始你工作流程?这有几个资源,你会发现很多更通过谷歌:

让我在很短解释:你没有​​告诉我们是什么样的流程。基于列表的工作流程或站点工作流程,启动方法因此而异。以列表的工作流程作为一个例子,你需要只启动工作流,像这样:

SPWorkflowProperties.Site.WorkflowManager.StartWorkflow(listItem, associationTemplate, initData); 

但正如你所看到的,你将需要为这个有很多的东西:在SPListItem,则SPWorkflowAssociationTemplate以及一些启动数据。

+0

亲爱的moontear, 非常感谢您的快速回答。我会看看你的链接,他们听起来很有用。 而且看起来我无法为Google提出正确的问题。因为我发现了大量工作流程的演练,同样吨的自定义操作,但没有合并。 参考您的问题: 一)所有的工作流程是针对特定列表 B)有些人发起的形式,有的则没有 谢谢你,我会后了解你的链接 – 2011-12-22 13:25:13

+0

你想后做什么不容易,但可以实现。理解您的自定义操作在MSDN上的Postback示例,并在后面的代码中调用一个'StartWorkflow' - 基本上就是这个过程:-) – 2011-12-22 14:11:50

+0

ATM我可以从另一个启动工作流程,同时全部由我部署。这是伟大的,供以后使用。回寄的东西将是下一个,但现在我不在办公室,并希望你度过愉快的周末愉快的时光。 (不是每个人都属于圣诞节)。 – 2011-12-22 15:50:06