从SharePoint 2010中列表项上的自定义按钮/操作启动工作流(全部使用Visual Studio 2010)

从SharePoint 2010中列表项上的自定义按钮/操作启动工作流(全部使用Visual Studio 2010),sharepoint,workflow,code-behind,custom-action,Sharepoint,Workflow,Code Behind,Custom Action,很抱歉,我问了两个问题,但我找不到解决方案,或者对答案缺乏理解,这让我很困惑 我的问题如下所述: 我有一些自制的带纽扣的丝带。如果我点击“设计”按钮,我会启动一个工作流 好的,有关设置的更多信息: 这是一个通用列表,意味着我的elemets.xml如下所示: <CustomAction Id="MyCustomRibbonTab" Location="CommandUI.Ribbon.ListView" RegistrationId="100" RegistrationTy

很抱歉,我问了两个问题,但我找不到解决方案,或者对答案缺乏理解,这让我很困惑

我的问题如下所述:

我有一些自制的带纽扣的丝带。如果我点击“设计”按钮,我会启动一个工作流

好的,有关设置的更多信息:

这是一个通用列表,意味着我的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('should start a workflow');”放进去,这就行了。我的意思是,这个警报会弹出,我可以点击OK,没有别的

现在我在同一个项目中设计了我的工作流程。有两种类型,一种在asp中具有初始化形式,另一种不具有初始化形式,都对所选项目进行操作。我可以在使用标准功能区“工作流”时启动它们,然后单击它们。到目前为止一切都很好

但我希望通过单击我的按钮来启动每个工作流,而不是像现在这样进行更多的单击。谢谢你一直以来对我的帮助

我对SharePoint非常陌生。所以,请在你的回答中包括“添加新的……空元素/JavaScript文件”或任何我认为必要的东西

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

多谢各位

丹布鲁克

注意:是的,我只是希望即使是我的Elements.xml也可以。我从网络上获取了所有信息。所以,如果你有重新设计的建议,我是开明的。只是看不见解决办法。
此外,我可以将此选项卡放在ListView的ContextAltab中,但即使是javascript也无法工作。

您是否阅读了上的文档

它非常简洁,并向您展示了与您的问题相关的要点: 您需要通过服务器端代码执行回发以启动工作流:

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

但是正如你所看到的,你需要很多东西来完成这项工作:
SPListItem
SPWorkflowAssociationTemplate
,以及一些入门数据。

亲爱的moontear,非常感谢你的快速回答。我会看看你的链接,它们听起来很有用。看起来我没能为谷歌提出正确的问题。因为我发现一个工作流有很多演练,同样,自定义操作也有很多演练,但没有一个合并在一起。参考您的问题:a)所有工作流都针对特定列表b)有些有入会申请表,其他人不感谢您,我会在理解您的链接后发布。您尝试做的事情并不容易,但可以实现。了解MSDN上用于自定义操作的回发示例,只需在代码隐藏中调用
StartWorkflow
——这基本上就是流程:-)ATM我能够从另一个启动工作流,而所有工作流都是由我部署的。这是伟大的,供以后使用。下一步是回邮,但现在我不在办公室,祝你周末愉快,有愉快的时刻。(并不是每个人都属于圣诞节)。事实上,我发现你可以通过JS对象模型直接启动工作流:非常有趣,不会涉及代码隐藏:-)嗨,月亮泪,非常感谢你的研究工作。对不起,最近几天没有再看。但祝你新年快乐。下次我会尝试你的建议并给出反馈。
SPWorkflowProperties.Site.WorkflowManager.StartWorkflow(listItem, associationTemplate, initData);