powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Как получить результат нажатия кнопок "OK"/"Cancel" в MessageBox?
18 сообщений из 18, страница 1 из 1
Как получить результат нажатия кнопок "OK"/"Cancel" в MessageBox?
    #32986626
question1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть содранная из форума процедура:

private void ShowMessageOkCancel(string message)
{
String scriptString = "<script language=JavaScript>";
scriptString += "confirm('" + message + "');";
scriptString += "</script>";
Page.RegisterStartupScript("ShowMessageOKCancel", scriptString);
}

В ряде случаев она не работает (действия, которые должны отменяться, выполняются до того, как происходит нажатие OK/Cancel). Вопрос: можно ли каким-то образом сделать так, чтоб она возвращала значения, которые впоследствии проверялись в if. И вообще, как выйти из такой ситуации.
Спасибо!
...
Рейтинг: 0 / 0
Как получить результат нажатия кнопок "OK"/"Cancel" в MessageBox?
    #32986692
Фотография nex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ничего проверять не надо... Вот так это делается:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
private void Page_Load(object sender, System.EventArgs e)
{
   ...
   if (!IsPostBack) {
      ...
      btnDelete.Attributes.Add("onclick", "return confirm('Are you sure?');" );
   }				
}

"btnDelete" меняй на свою кнопку.

--
nexus
...
Рейтинг: 0 / 0
Как получить результат нажатия кнопок "OK"/"Cancel" в MessageBox?
    #32986764
question1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
nexНичего проверять не надо... Вот так это делается:
Код: plaintext
1.
2.
   if (!IsPostBack) {
      btnDelete.Attributes.Add("onclick", "return confirm('Are you sure?');" );
}
"btnDelete" меняй на свою кнопку.
--
nexus

спасибо! Но у меня не кнопка, а свойство грида "DeleteCommand", в котором кроме всего, выполняется удаление записей подчиненной таблицы, а в начале выполняется проверка на незавершенность изменений:

private void пкшв1_DeleteCommand(...)
{
if (IsChange != "NONE")
{
ShowMessageOK("Save or cancel your changes!");
}
else
{
MsgOKCancel("вы действительно хотите удалить запись?");
// если да, то удаляем запись из главной таблицы
// и все, что с ней связано из других таблиц
}
}

Как действовать в таком случае?
Спасибо.
...
Рейтинг: 0 / 0
Как получить результат нажатия кнопок "OK"/"Cancel" в MessageBox?
    #32987050
Фотография profil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
делаешь из столбца с кнопкой TemplateColumn.

добавляешь id:
Код: plaintext
1.
2.
3.
4.
<asp:TemplateColumn>
<ItemTemplate>
<asp:Button id="btnDel" runat="server" Text="Delete" CommandName="Delete" CausesValidation="false"></asp:Button>
</ItemTemplate>
</asp:TemplateColumn>

подписываешься на событие ItemDataBound

в обработчике добавляешь код, предлодженный nex:
Код: plaintext
1.
2.
3.
4.
if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
	Button btn = (Button)e.Item.FindControl("btnDel");
	btn.Attributes.Add("onclick","return confirm('Are you sure?');");
}
...
Рейтинг: 0 / 0
Как получить результат нажатия кнопок "OK"/"Cancel" в MessageBox?
    #32987097
question1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
profil:
Спасибо, сейчас попробую!
...
Рейтинг: 0 / 0
Как получить результат нажатия кнопок "OK"/"Cancel" в MessageBox?
    #32987099
Фотография profil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
удачи ;))
...
Рейтинг: 0 / 0
Как получить результат нажатия кнопок "OK"/"Cancel" в MessageBox?
    #32988600
question1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
попробовал. Частично работает, но при связывании грида с табличкой, заходит в этот обработчик событий и пытается выполнить содежимое.
Что надо изменить в
if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)

чтобы содержимое if отрабатывалось только в случае нажатия на кнопку?
Спасибо!
...
Рейтинг: 0 / 0
Как получить результат нажатия кнопок "OK"/"Cancel" в MessageBox?
    #32988665
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если надо чото удалить из грида, то делаю так
<asp:HyperLinkColumn DataNavigateUrlField="UID" DataNavigateUrlFormatString="javascript:dn('{0}')" DataTextField="UID"
DataTextFormatString="<img src="delete.gif" alt="Удалить новость" border="0">">
<HeaderStyle HorizontalAlign="Center" CssClass="GRIDHEADERROW"></HeaderStyle>
<ItemStyle CssClass="ROWDELIMITER1"></ItemStyle>
</asp:HyperLinkColumn>
<script language="javascript">
function dn(uid) {
if (window.confirm('Вы уверены ?')) {
void(window.open('../utils.aspx?Action=News&newsuid='+uid,'_self'));
}
}
а в utils обрабатываю querystring
...
Рейтинг: 0 / 0
Как получить результат нажатия кнопок "OK"/"Cancel" в MessageBox?
    #32988738
Фотография profil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
question1попробовал. Частично работает, но при связывании грида с табличкой, заходит в этот обработчик событий и пытается выполнить содежимое.
Что надо изменить в
if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)

чтобы содержимое if отрабатывалось только в случае нажатия на кнопку?
Спасибо!?!?!?!
код точно корректно работающий

выложи свою реализацию
...
Рейтинг: 0 / 0
Как получить результат нажатия кнопок "OK"/"Cancel" в MessageBox?
    #32988978
question1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
[quot profil
?!?!?!
код точно корректно работающий

выложи свою реализацию[/quot]
дык, а кто говорит, что не работает? Просто в моем случае дополнительное условие нужно.
Есть процедура
protected void MyDataBinding()
{
cnMyConnect.Open();
SqlDataAdapter daTest = new SqlDataAdapter("SELECT * FROM Test", cnMyConnect);
dsMySet = new DataSet();
daTest.Fill(dsMySet , "Test");
dgTest.DataSource = dsMySet ;
dgTest.DataMember = "Test";
dgTest.DataBind();
dgTest.DataBind();
cnMyConnect.Close();
}

вызываемая в Page_Load() и заполняющая грид конкретными данными. Вот, она вероятно и возбуждает событие ItemDataBound. Т.е. мне, если я правильно понимаю, надо в ItemDataBound проверку поставить, была ли нажата кнопка на удаление или нет. так?
...
Рейтинг: 0 / 0
Как получить результат нажатия кнопок "OK"/"Cancel" в MessageBox?
    #32989061
Фотография profil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
question1дык, а кто говорит, что не работает? Просто в моем случае дополнительное условие нужно.ну так скажи чего за условие... может предложенный подход и вовсе не подойдет для его проверки
question1Т.е. мне, если я правильно понимаю, надо в ItemDataBound проверку поставить, была ли нажата кнопка на удаление или нет. так?нет, не правильно понимаешь
в ItemDataBound регистрируется клиентский скрипт, который при нажатии на кнопку выдает диалог подтверждения. И если пользователь нажал cancel форма вообще на сервер отправляться не будет
...
Рейтинг: 0 / 0
Как получить результат нажатия кнопок "OK"/"Cancel" в MessageBox?
    #32989384
question1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
нет, не правильно понимаешь
в ItemDataBound регистрируется клиентский скрипт, который при нажатии на кнопку выдает диалог подтверждения. И если пользователь нажал cancel форма вообще на сервер отправляться не будет
//////////////////////////////////////////////////////////
у меня тут интересная фигня получается. Если после
btn.Attributes.Add("onclick", ...

идет cnConnect1.Open(); то при загрузке данными грида вылазит сообщение об ошибке - "соединение уже открыто" с указанием строки в этой процедуре(непонятно только почему и как оно туда заходит и если заходит, то почему не вызывается MessageBox?), а если я cnConnect1.Open(); комментирую (и все, что с ним связано) , то оно туда не заходит, потому как другие инструкции не выполняются.
Реальный код выглядит так

private void dgGrid1_ItemDataBound(object sender, ...
{
if (IsChange != "NONE")
{
ShowMessageOK("Save or cancel your changes!");
}
else
{
lbUserName.Text = "";

if(e.Item.ItemType == ListItemType.Item || ...)
{
Button btn = (Button)e.Item.FindControl("btDel");
btn.Attributes.Add("onclick", .....);
lbUserName.Text = "User ist gelöscht!!!";
cnConnect1.Open();
SqlCommand cmd = new SqlCommand();
string strQUERY = "DELETE FROM ...
...
...
если я комментирую cnConnect1.Open(); - просто ничего не происходит, если нет - при считывании данных в грид возникает вышеупомянутая ошибка.
...
Рейтинг: 0 / 0
Как получить результат нажатия кнопок "OK"/"Cancel" в MessageBox?
    #32989393
question1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
забыл добавить, все вышесказанное касается момента, когда грид еще только заполняется данными. Вполне возможно, что при удалении все работает нормально (но я не могу это проверить...)
пардон, за путанные объяснения...
...
Рейтинг: 0 / 0
Как получить результат нажатия кнопок "OK"/"Cancel" в MessageBox?
    #32989454
Фотография profil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
question1, без обид, но ты написал полнейшую чушь....

поясняю:
в ItemDataBound происходит привязка данных и формирование грида.
в коде, который привел я, кнопка на удаление снабжается клиентским скриптом, для подтверждения этого удаления (сорри за каламбур)

само удаление должно быть реализовано в обработчике события OnDeleteCommand

ps. что ты хотел сказать этим: if (IsChange != "NONE") ?
...
Рейтинг: 0 / 0
Как получить результат нажатия кнопок "OK"/"Cancel" в MessageBox?
    #32991016
question1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
>>question1, без обид, но ты написал полнейшую чушь....

никаких обид. последний коммент был очень в тему! Наконец-то немного
прояснилось, что делал и понимал не так, и как надо делать. Просто после WinForms писать на ASP несколько затруднительно (другая идеология все-таки), а литературы хорошей под рукой нет, а в инете лазить нет времени, вот и получается, что застреваю на базовых вещах.
Спасибо.
...
Рейтинг: 0 / 0
Как получить результат нажатия кнопок "OK"/"Cancel" в MessageBox?
    #32991066
question1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
profil
само удаление должно быть реализовано в обработчике события OnDeleteCommand

Последний вопрос: чей обработчик события - OnDeleteCommand? Я так понял, что грида (dgGrid1_DeleteCommand?) но туда программа почему-то не заходит, несмотря на то, что я нажимаю "OK". Где зарыты грабли и на какую собаку я опять наступил?
...
Рейтинг: 0 / 0
Как получить результат нажатия кнопок "OK"/"Cancel" в MessageBox?
    #32991163
Фотография profil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
question1Просто после WinForms писать на ASP несколько затруднительно (другая идеология все-таки)да, знакомо, проходили)))
успехов в осовении новой идеологии ;-))
...
Рейтинг: 0 / 0
Как получить результат нажатия кнопок "OK"/"Cancel" в MessageBox?
    #32991172
Фотография profil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Как получить результат нажатия кнопок "OK"/"Cancel" в MessageBox?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]