doPostBack не стреляет - PullRequest
       17

doPostBack не стреляет

0 голосов
/ 13 февраля 2012

Я слежу за следующим проектом: http://www.thorntontechnical.com/tech/sharepoint/sharepoint-2010-context-menu-item-with-custom-code

Elements.xml

   <?xml version="1.0" encoding="utf-8"?>
   <Elements xmlns="http://schemas.microsoft.com/sharepoint/">
     <CustomAction Id="SPTest.CustomMenuItem.ButtonClicked"
             RegistrationType="FileType"
            RegistrationId="dtsx"
            Location="EditControlBlock"
            ImageUrl="/_layouts/IMAGES/DOCLINK.GIF"
            Sequence="600"
            Title="Execute Package"
            Description="Executed Selected Package"
            ControlAssembly="SPTest.CustomMenuItem, Version=1.0.0.0, Culture=neutral,    PublicKeyToken=beb14bc625e99e7f"
            ControlClass="SPTest.CustomMenuItem.CustomItemAction"
            >
<UrlAction Url="javascript:__doPostBack('SPTest.CustomMenuItem.CustomItemAction',  {ItemId});" />
</CustomAction>
 </Elements>

PACKAGE.TEMPLATE.XML

    <?xml version="1.0" encoding="utf-8"?>
 <Solution xmlns="http://schemas.microsoft.com/sharepoint/">
 <Assemblies>
  <Assembly Location="SPTest.CustomMenuItem.dll"  DeploymentTarget="GlobalAssemblyCache">
    <SafeControls>
      <SafeControl Assembly="SPTest.CustomMenuItem, Version=1.0.0.0, Culture=neutral, PublicKeyToken=beb14bc625e99e7f" 
                 Namespace="SPTest.CustomMenuItem" TypeName="*" Safe="True"        SafeAgainstScript="False" />
    </SafeControls>
  </Assembly>
</Assemblies>
</Solution>

Итак ... В файле Web.config мы можем найти нашу сборку в SafeControl

КЛАСС ВЫПОЛНИТЬ

   using System.IO;
   using System;
   using System.Collections.Generic;
   using System.Linq;
   using System.Text;
   using Microsoft.SharePoint;
   using Microsoft.SharePoint.WebControls;

    namespace SPTest.CustomMenuItem
    {
        public class CustomItemAction : SPLinkButton
        {
            protected override void OnLoad(EventArgs e)
            {
                this.EnsureChildControls();
                base.OnLoad(e);
                if (this.Page.Request["__EVENTTARGET"] ==   "SPTest.CustomMenuItem.ButtonClicked")
                {
                    int itemId = Convert.ToInt32(this.Page.Request["__EVENTARGUMENT"]);
                    System.IO.TextWriter writer = new  StreamWriter(@"C:\XXXXX\XXXXX\XXXXX\custommenuoutput.txt", true);
                    writer.WriteLine("Event Fired at:" + DateTime.Now.ToLongTimeString() + ": Item ID:" + itemId.ToString());
                    writer.Close();
                }
            }
        }
    } 

Как видите, цель состоит в том, чтобы выполнить пакет служб SSIS, который размещен на Sharepoint. Меню ECB с параметром «Выполнить пакет» появилось во всех файлах типа dtsx. Поэтому, когда я щелкнул в этой нижней части, событие не работает ... Я не знаю, что я должен делать ... Любая помощь будет вознаграждена. Спасибо !!

Ответы [ 2 ]

0 голосов
/ 26 октября 2012

Повторно посетите страницу, которую вы упоминаете:

http://www.thorntontechnical.com/tech/sharepoint/sharepoint-2010-context-menu-item-with-custom-code

Его правка (16/02/2012) устраняет эту проблему («Нам также нужно сообщить SharePoint для загрузки элемента управления»)):

<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
<Control ControlAssembly="SPTest.CustomMenuItem, Version=1.0.0.0, Culture=neutral, PublicKeyToken={PublicKeyToken}"
ControlClass="SPTest.CustomMenuItem.CustomItemAction" Sequence="50" Id="AdditionalPageHead"/>
<CustomAction ...

Затем вы можете опустить атрибуты ControlAssembly и ControlClass в элементе CustomAction.Это не сделано в его сообщении, но упомянуто в комментарии (я попробовал, и это работает).

Обратите также внимание на то, что другие комментарии в его посте говорят: «Недостаток в том, что элемент управления будет загружаться вездеТеперь вам нужно убедиться, что нет другого кода, кроме кода, который вы фильтруете при помощи __EVENTTARGET. "Это уже реализовано в его примере, но все же noteworty.

0 голосов
/ 13 февраля 2012

Попробуйте создать отдельное действие в меню SiteAction:

Диспетчер пользовательских действий

Меню ECB заполняется динамически с использованием асинхронного запроса, поэтому при публикации страницы элементы управления для меню ECB не создаются и события для них не запускаются.Хотя элементы управления действиями сайта всегда отображаются, можно обрабатывать обратную передачу.

...