Отображение результатов SPLongOperation - PullRequest
0 голосов
/ 16 февраля 2011

Я использую SPLongOperation для выполнения длительной операции.После завершения страница передач перенаправляется обратно на исходную страницу, с которой была запущена длительная операция.Я не могу ничего написать на страницу oriignal, используя SPLongOperation.Endscript.Вот код, который я использую

using (SPLongOperation operation = new SPLongOperation(this.Page))
{
//.......................
//.......................
StringBuilder endScript = new StringBuilder();
endScript.Append("document.write('Success!!');");

operation.End(Request.Url.ToString(), SPRedirectFlags.UseSource, HttpContext.Current, String.Empty, endScript.ToString());
}

Ответы [ 3 ]

0 голосов
/ 12 декабря 2011

Попробуйте предупреждение - это сработало для меня ..

Script.Append("alert('Success!!');");
0 голосов
/ 26 февраля 2013

Это может помочь: http://www.sharepoint -tips.com / 2012/07 / report-code-errors-when-running-code.html

SPLongOperation longOp = new SPLongOperation(this.Page);
StringBuilder sbErrors = new StringBuilder();
longOp.Begin();try
{
throw new Exception("Sample");
}
catch(Exception ex)
{ 
  sbErrors.Append("An error occurred: " + ex.MEssage);
}

if
(sbErrors.Length > 0)
{
longOp.EndScript("document.getElementById('s4-simple-card-content').innerHTML = \"Errors have occurred during the submission. Details: " + sbErrors.ToString() + " \";");
}
//close the dialog if there were no errors
longOp.EndScript("window.frameElement.commitPopup();");
0 голосов
/ 24 февраля 2011

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

Самый простой способ показать сообщение об успехе - это передать определенную строку запроса на ваш вызывающий URL, заменив параметр string.empty чем-то вроде

operation.End(Request.Url.ToString(), SPRedirectFlags.UseSource, HttpContext.Current, "success=1");

http://msdn.microsoft.com/en-us/library/ms450341.aspx

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

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...