2013-09-10 5 views
0

У меня есть некоторый код яваскрипта на моей главной странице, которая открывает всплывающее окно при нажатии на ссылку на:Как закрыть модальное окно после сохранения в ASP.Net WebForms

<script language="javascript"> 

function OpenResidentialAddressWin(subscriberContactRelationGid, routeId, btn) { 
    window.showModalDialog("SubscriberResidentialAddress.aspx" + BuildQueryStringValuesForSubscriber(subscriberContactRelationGid, routeId, returntxtReceiptDate().value), this, strWindowFeatures + ";scroll:no;dialogWidth:442px;dialogHeight:350px"); 
    location.href = location.href; 
} 

</script> 

Таким образом, приведенный выше код открывает страницу SubscriberResidentialAddress.aspx в модальном окне (а также передачу ряда переменных на эту страницу)

Теперь эта страница устроена так, что она отображает или редактирует информацию. (Они находятся в отдельных divs, которые отображаются или скрыты, зависят от того, какие кнопки только что были нажаты в окне).

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

Коллега предположил, что я использую литеральный контроль на странице aspx модального окна и записываю javascript в него после успешного сохранения. Таким образом, я поместил следующее в головной части страницы SubscriberResidentialAddress.aspx:

<asp:Literal runat="server" ID="litCloseWind"></asp:Literal> 

А затем в код в функции, которая вызывается, когда экономия осуществляется

protected void btnAddSave_Click(object sender, EventArgs e) 
{ 

////// code related to saving 

if (status.IsSuccessful) 
      { 
       litCloseWind.Text = "<script>this.close()</script>"; 
       Response.Redirect(Request.Url.AbsoluteUri, false); 
      } 


} 

У меня есть попробовал выше, а также litCloseWind.Text = "window.close()"; но ни одна из них не была успешна в закрытии модального окна после сохранения.

Является ли этот план логически обоснованным, и я только что сделал ошибку где-то или это был плохой способ сделать это для начала?

+0

Я не говорю, что это была плохая идея, чтобы начать с, я не знаю точно, что вам нужно сделать, но я бы посоветовал вам чтобы не создавать всплывающие окна, которые работают с фактическими окнами браузера, а скорее делают плавающие элементы 'div' отображаться поверх других вещей просто потому, что очень вероятно, что какой-то браузер где-то (и я говорю о' Chrome', 'Firefox', и т. д.) будут работать совсем по-другому, чем вы экспериментировали при разработке приложения в IE (например: они не позволят всплывать в первую очередь) –

+0

Спасибо за совет. Это некоторая унаследованная система, где это используется повсюду для внутреннего сайта, который будет отображаться только в Internet Explorer. Я уверен, что в этом есть много вещей, которые не были выполнены правильно, но перепроектировать его сейчас, к сожалению, не является приоритетом :) – Sperick

ответ

0

Почему вы не зарегистрировать скрипт здесь, например:

ClientScript.RegisterStartupScript(typeof(Page), "CLOSEWINDOW", "window.close();"); 

Нет необходимости класть любые алфавитные управления здесь.

Так что ваш код будет выглядеть примерно так:

protected void btnAddSave_Click(object sender, EventArgs e) 
{ 
    if (status.IsSuccessful) 
    { 
     ClientScript.RegisterStartupScript(typeof(Page), "CLOSEWINDOW", "window.close();"); 
    } 
} 
+0

Спасибо за ответ. Я попытался заменить мой код на это, но он тоже не работает. Он попадает в него в отладчик, но после него окно не закрывается. – Sperick

+0

Извините, я пропустил ModalDialog, я думаю, что это то, что невозможно, но вы можете попробовать этот пост, возможно, он будет работать: http://sharepoint.stackexchange.com/questions/43569/how-to-close- a-modal-using-javascript-from-code-behind –

+0

Спасибо. Я попробовал это. Теперь, хотя он выходит из строя со следующей ошибкой: «Ошибка выполнения JavaScript: невозможно получить свойство« commitPopup »неопределенной или нулевой ссылки». – Sperick

Смежные вопросы