Пользовательское действие после отправки формы Infopath - PullRequest
0 голосов
/ 18 августа 2011

Я использую форму Infopath с поддержкой браузера в Sharepoint 2010 и хочу показать модальное всплывающее окно или даже перенаправить на другую страницу после нажатия кнопки «Отправить», говоря «Спасибо ... Ваша форма отправлена ​​... ».

Я не могу использовать представление (и изменить на это представление при отправке), потому что форма находится на вкладке на странице. Я имею в виду, что страница содержит 5 DIV, доступных через 5 кнопок. DIV, который открыт по умолчанию, является первым. Форма находится внутри 5-го DIV. После действия отправки (обратной передачи) страница перезагружается и отображается 1-й DIV, поэтому пользователь не может видеть представление с помощью «Спасибо ....»

Есть идеи, как это решить? Заранее спасибо!

РЕДАКТИРОВАТЬ 2

Я попробовал решение Андреаса, но не сработало. Это мой код кнопки "Отправить".

    public void CTRL114_5_Clicked(object sender, ClickedEventArgs e)
            {

             try
             {
                SPSecurity.RunWithElevatedPrivileges(delegate()
                {
                    this.Submit();                             
                    HttpContext.Current.Response.Redirect("ThankYou.aspx");
                });
             } catch (Exception ex)
             {
                  System.Console.Write(ex.toString());
             }

            }

Когда я нажимаю Отправить, ничего не происходит. Нет перенаправления страниц, нет переключения просмотра, нет отправки данных. Есть идеи? Спасибо!

Ответы [ 2 ]

0 голосов
/ 29 августа 2011

Другой способ перенаправления - использование параметра «Источник» строки запроса. Однако перенаправление возможно только на страницы в том же семействе сайтов, что и форма. Э.Г.

http://[site]/_layouts/FormServer.aspx?XsnLocation=/sites/[site]/formservertemplates/[form].xsn<b>&Source=/sites/[site]/pages/[page]</b>

Если ThankYou.aspx находится за пределами текущей коллекции сайта, вы можете перенаправить на промежуточную страницу, которая перенаправляет на ThankYou.aspx. Я не слышал ни о каком другом способе обойти это.

0 голосов
/ 19 августа 2011

Всплывающие окна не работают с браузерными формами, ваша единственная возможность - пользовательский код. В своем коде отправки вы можете перенаправить на статическую страницу благодарности.

HttpContext.Current.Response.Redirect("ThankYou.aspx");

Редактировать: в редакторе VSTA убедитесь, что у вас есть ссылка на System.Web. Без фактического исключения действительно трудно сказать, что не работает. Попробуйте следующий код и опубликуйте вывод, пожалуйста -

try
{
     SPSecurity.RunWithElevatedPrivileges(delegate()
     {
           this.Submit();
           HttpContext.Current.Response.Redirect("ThankYou.aspx");
     });
}
catch(Exception ex)
{
     //implement your logging logic here
}

Редактировать 2: Можете ли вы открыть форму в режиме предварительного просмотра и отладить код? Также подумайте об изменении кода регистрации на что-то вроде этого:

catch(Exception ex)
{
     using(var writer = new StreamWriter(@"C:\log.txt",true))
        writer.WriteLine("{0}\t{1}", DateTime.Now, ex.Message);
}

потому что Console.WriteLine не работает с InfoPath, и вы никогда не получите фактическое исключение. Боюсь, что без сообщения об ошибке будет довольно сложно устранить проблему.

...