2013-03-27 2 views
1
string LocalWorkSiteName = WorkSite.Site_Name; 

System.Windows.Forms.MessageBox.Show("Are you sure you want to delete invoice " for " + LocalWorkSiteName); 

1) Почему всплывающее окно всегда появляется за браузером? Я хочу, чтобы он загружался перед браузером.Использование MessageBox, изменение на «Да» или «Нет»

2) Как я могу добавить кнопку «Да» и «Нет» и удалить текущее «ОК»? Таким образом, в код позади, если «да» делать одно дело, если «нет» делают другие:

if(yesIsPressed) 
{ 
... 
} 
if(noIsPressed) 
{ 
... 
} 

Собираюсь ли я об этом правильный путь, или есть более подходящие способы?


EDIT Спасибо за ответ, ребята ... собирается пойти со стороной JS, но, возможно, потребуется некоторая помощь с ним. Так что моя кнопка:

<asp:Button runat="server" ID="RemoveInvoice" Text="Remove Invoice" OnClick="RemoveInvoice_Click" CssClass="FadeOutOnEdit" /> 

запускает код за функцией «RemoveInvoice_CLick» ... могу ли я получить его, чтобы запустить JS или мне нужно, чтобы изменить его на кнопку ввода, а затем сделать код за обновлениями оттуда

+2

Вы уверены, что это правильно? Вы выскакиваете на стороне сервера сообщений, когда я думаю, что вы должны появиться на стороне клиента. И если это так, вы не можете изменить клиентскую сторону кнопок, «ОК» и «Отмена» - ваша задача. – MadSkunk

ответ

1

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

$("#buttonid").click(function() { 
    var answer = confirm("Are you sure you want to delete invoice for " + LocalWorkSiteName + "?"); 
    if (answer) 
    { 
     // post to server-side 
    } 
}); 

Или, если вы хотите придерживаться с кнопки управления ASP.net, вы можете подключить обработчик события в теге:

<asp:Button id="RemoveInvoice" runat="server" Text="Remove Invoice" 
     OnClick ="RemoveInvoice_Click" 
     OnClientClick="return confirm('Are you sure you want to delete invoice?');" 
     CssClass="FadeOutOnEdit" /> 

OnClientClick атрибут предотвращает серверную события от стрельбы, если код возвращает ложь, что то, что происходит, если пользователь нажимает кнопку Отмена во всплывающем окне JavaScript из вызова confirm.

+0

спасибо, см. Мое редактирование – John

+0

ОК. Добавлен способ использования элемента управления ASP.net - сначала я использовал подход jQuery из-за того, как был помечен ваш вопрос. –

+0

no thats отлично пойдет с JQuery Спасибо – John

2

Может быть что-то вроде этого:

DialogResult result1 = System.Windows.Forms.MessageBox.Show("Are you sure you want to delete invoice for " + LocalWorkSiteName, 
     "Important Question", 
     MessageBoxButtons.YesNo); 

if(result1 == DialogResult.Yes) { ... } 
if(resutl1 == DialogResult.No) { ... } 

Примечание *

Но вы не должны делать это с Мессы geBox :), потому что это для настольного приложения (System.Windows.Forms), вы должны использовать для него некоторый код jQuery или javascript. Он даже не будет отображаться на вашей стороне клиента, он будет только popUp на вашем сервере.

Вы можете попробовать с jQueryUI Dialog

+0

Вы действительно не хотите смешивать элементы управления между ASP.net и Windows Forms. Это два разных мира. –

+0

Неверный язык! –

+0

@freshbm спасибо за помощь – John