Интересует вопрос следующего плана — можно ли отменить скрипты объявленные через RegisterStartupScript?
Ситуация в следующем.
Имеется GridView по событию SelectedIndexChanged вызывается редактирование указанной строки.
При чем редактирование идет через window.open и вызывается примерно так:
ClientScriptManager cs = Page.ClientScript;
Type cstype = this.GetType();
string str = string.Format("<script language= \'javascript\'> window.open(\'blablabla.aspx?id={0}'," +
"\'{1}\', \'width=30,height=40,toolbar=0\') </script>", lNumber, lScriptName);
if (!cs.IsStartupScriptRegistered(lScriptName))
{
cs.RegisterStartupScript(cstype, lScriptName, str);
}
это необходимо для задания фиксированной формы редактирования в отдельном окне (основная форма активная и периодически обновляет содержимое, потому редактирование приходится выносить отдельно), но суть даже не в этом.
Проблема в том, в ходе работы из основного окна по ссылкам приходится переходить на другие страницы. Так вот при возвращении на неё (через Back в браузере) даже без возникновения события SelectedIndexChanged запускается то же окно редактирования.
Вопрос в следующем:
1. Можно ли после срабатывания скрипта отменить этот скрипт? Удалить из кода?
2. Есть ли возможность запустить window.open без создания скрипта (вариант Responce.Write не предлагать) ?
Вопрос снят, пусть немного коряво, но работает!
string str = string.Format("<script language= \'javascript\'> window.open(\'blablabla.aspx?id={0}'," +
"\'{1}\', \'width=30,height=40,toolbar=0\'); document.forms[0].submit(); </script>", lNumber, lScriptName);
плюс сбрасываем выделение в гриде
BasicView.SelectedIndex = -1;
Смысл прост. Делаем принудительный сабмит. Который сбрасывает код скрипта.