powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / рефреш. дважды удаляется запись
20 сообщений из 20, страница 1 из 1
рефреш. дважды удаляется запись
    #33549859
Alex Tyutyunik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообщем ситуация такая... Прошу вашего солюшена.
На форме кучка (30 примерно) контролов, кпопки ADD, EDIT, DELETE
и некая общая кнопка SUBMIT.
Юзер может ввести данные нажать ADD, и данные добавятся в DataSet
Представим что юзер удалил одну запись из датасета, и нажал рефреш на тулбаре IE.
Получается при OK на запрос о post data, юзер удаляет дважды запись!

Это ж несерьезно... как сего избежать ?
теги meta и редирект на самого себя не предлагать (не помогли).
а при редиректе я не собираюсь передавать все данные через параметры.
...
Рейтинг: 0 / 0
рефреш. дважды удаляется запись
    #33550239
Фотография vladgrig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторПолучается при OK на запрос о post data, юзер удаляет дважды запись!

а как можно удалить то - ЧЕГО УЖЕ БОЛЬШЕ НЕТ???
...
Рейтинг: 0 / 0
рефреш. дважды удаляется запись
    #33550274
Alex Tyutyunik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да я просто не так выразился... сути вопроса не меняет.

у меня датасет для вводимых данных. Подгружается из сессии в Page_Load. а в DropDownList появляется нечто типа ID.
Соответсвенно, если записей > 1, то удалится следующая.
если записей = 1, то во второй раз вылетит exception.
...
Рейтинг: 0 / 0
рефреш. дважды удаляется запись
    #33550288
Фотография vladgrig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторСоответсвенно, если записей > 1, то удалится следующая.
если записей = 1, то во второй раз вылетит exception.
ясно выражать свою мысль - это искусство...
чего желаем? что бы при рефреше строки не удалялись или проблема с последней не удалённой записью???
...
Рейтинг: 0 / 0
рефреш. дважды удаляется запись
    #33550434
Alex Tyutyunik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чтобы при рефреше не проводилось никаких действий.
Как будто рефреша и не было.
То есть, все контролы имели тоже значение до рефреша.
Ничего в датасет не добавлялось, ничего из него удалялось.

То есть, если юзер удалил запись, потом нажал рефреш, запись не удалялась.

Как вариант придумал, оба датасета в Session, для всех контролов их состояние читать в объект некоего класса, потом это объект в Session.
К примеру: после удаления, загоняем все вышеуказанное в сессию, делаем редирект на самого себя, и из сессии читаем.
Это нормальный вариант, или не пройдет номер ?
...
Рейтинг: 0 / 0
рефреш. дважды удаляется запись
    #33550440
Фотография vladgrig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторЭто нормальный вариант, или не пройдет номер ?
попробуй - потом нам расскажешь... ;)
...
Рейтинг: 0 / 0
рефреш. дважды удаляется запись
    #33550451
Alex Tyutyunik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да я сегодня не успею уже :))
Хочу успеть еще одну тулзу доделать...
Завтра утром обязательно буду пробовать...
По крайней мере сейчас у меня имеющиеся датасеты нормально бегают при редиректе. осталось дело за классом да контролами
...
Рейтинг: 0 / 0
рефреш. дважды удаляется запись
    #33551620
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Никогда бы не подумал, что это может быть такой проблемой. Вы изобретаете вилосипед. Во-первых, используя для решения данной своей проблемы 2 датасета, а во-вторых нагружая Session, хотя он предназначен совсем не для подобных задач.
Первое что приходит в голову, сильно не переделывая вашу систему - делайте просто проверку на дубликаты, что добавлено и проверку на то, что уже удалено. Хотя я не до конца, наверное, понял вашу задумку.
...
Рейтинг: 0 / 0
рефреш. дважды удаляется запись
    #33551788
Фотография vladgrig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторХотя я не до конца, наверное, понял вашу задумку.
мне кажеться, что чел подошёл к решению вопроса как бы из win - что видим - то удаляем. то есть у него есть некие id забитые в дропдаун - при удалении записи в дропдауне соответственно появляется следующий за удалённым id и опять (при postback) удаляется строка уже с этим id - решение наверное заключается в пересмотре логики удаления записей...
...
Рейтинг: 0 / 0
рефреш. дважды удаляется запись
    #33552704
Alex Tyutyunik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хорошо... давайте начнем сначала... я просто спрошу у вас как усе в целом сделать правильнее...
Суть:
есть на форме кучка контролов, разбитых по секциям div'aми.
Есть пара секций, которые называются locations и clients.
locations максимум 15, clients максимум 10.
Мне надо сделать так, чтобы юзер мог ввести поля в locations, потом жмакнуть кнопку, и это где-то сохранилось (но не в базе).
Потом еще добавить, или отредактировать, или удалить. Все это без базы, в некоем хранилище.
Аналогично с clients.
И только, когда юзер нажмет кнопку Submit All, тогда уже все все все данные -запихнуть в базу данных.

И отдельный вопрос, как обработать мне refresh в броузере, чтоб не было никаких проблем :))
Расскажите пожалуста, что и как делать..
P.S. Да, мировоззрение десктоповское, на ASP.NET это мой первый проект начинается.
...
Рейтинг: 0 / 0
рефреш. дважды удаляется запись
    #33552955
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Один из вариантов:
Создать по одной DataTable для locations и clients с соответствующими для них полями и одно поле autoincrement типа int. Сам DataTable при перегрузках страницы хранить в ViewState.
При добавлении спрашивать есть ли в соотвт. табличке уже введённый клиент или локация. Если есть, не добавлять больше и предупредить юзера. При редактировании и удалении проверить, если ли подобная запись в таблице. Если есть, то редактируем или удаляем. Если нет, не делаем ничего и предупреждаем юзера. Когда всё готово, перегоняем данные из таблиц в базу.
...
Рейтинг: 0 / 0
рефреш. дважды удаляется запись
    #33553163
Alex Tyutyunik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не понимаю что сделал не так..
с Session работало.
а с ViewState.. вот я добавил пару записей клиентов... их можно удалять, редактировать, добавлять еще.
А нажал F5 и у меня в ViewState нет моего DataTable
читаю из ViewState по типу

DataTable clientsDT = (DataTable)ViewState["clientsDT"]
получаю null

на странице ViewState разрешен...
Куда смотреть ?
...
Рейтинг: 0 / 0
рефреш. дважды удаляется запись
    #33553201
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здесь храним DataTable в момент Postback
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
#region ViewState
private DataTable AnswerPages
{
   get
   {
      if (ViewState["AnswerPages"] != null)
         return (DataTable)ViewState["AnswerPages"];
      else
         return CreateAnswerPagesTable();
   }
   set
   {
      ViewState["AnswerPages"] = value;
   }
}
#endregion

Здесь получаем DataTable из ViewState
Код: plaintext
1.
2.
3.
4.
private void Page_Load(object sender, System.EventArgs e)
{
   mAnswerPages = AnswerPages;
}

Здесь сохраняем DataTable в ViewState
Код: plaintext
1.
2.
3.
4.
private void Page_PreRender(object sender, System.EventArgs e)
{
   AnswerPages = mAnswerPages;
}
...
Рейтинг: 0 / 0
рефреш. дважды удаляется запись
    #33553222
Alex Tyutyunik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Та да, я прогнал с вопросом предыдущим, просто забыл подгружать в Page_Load записи. :)

> При добавлении спрашивать есть ли в соотвт. табличке уже введённый
> клиент или локация. Если есть, не добавлять больше и предупредить юзера. > При редактировании и удалении проверить, если ли подобная запись в
> таблице. Если есть, то редактируем или удаляем. Если нет, не делаем
> ничего и предупреждаем юзера. Когда всё готово, перегоняем данные из
> таблиц в базу.

Эти проверки как я понимаю вставлять в обработчики ADD, EDIT, DELETE ?
А то как я погляжу, при рефреше срабатывает Page_Load, ну а в мои обработчики кнопок уже отладчик не заходит.

для EDIT проблем нет.
для DELETE тоже, проверю есть в ли в datatable указанная запись.

А как быть с ADD ?
Если ID есть autoincrement ? добавится ведь еще одна запись. как тут решить вопрос ?
...
Рейтинг: 0 / 0
рефреш. дважды удаляется запись
    #33553277
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А проверяйте не на id, а просто сравнивайте значения всех нововведённых полей с тем, что есть в коллекйии Rows соответствующей DataTable. Т.е. вполне может быть, что можно и обойтись без autoincrement полей.
...
Рейтинг: 0 / 0
рефреш. дважды удаляется запись
    #33553322
Alex Tyutyunik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, я тоже так подумал, как альтернатива.

Расскажите мне, где это все проверять надо ?
Вот юзер нажал F5. куда мне вставить проверки ?
да и как ? (как определять, что счас будет удаление, и удаление чего)

p.s. видать я фундаментальных понятий не понимаю :)
...
Рейтинг: 0 / 0
рефреш. дважды удаляется запись
    #33553378
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проверять в обработчиках событий Add, Edit, Delete.
И забудьте об этом F5 - не пойму что за мода пихать всё операции на submit формы, ибо только проблем себе же больше. Просто прописывайте для каждой из кнопок в html разделе страницы свой обработчик (btnAdd_Click, btnDelete_Click, btnEdit_Click) и создавайте этот обработчик в codebehind с модификатором доступа public. Тогда на F5 у вас будет просто перегражаться страница, а не вызываться обработчики копок.
...
Рейтинг: 0 / 0
рефреш. дважды удаляется запись
    #33553424
Alex Tyutyunik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Фух... опять бяка какая-то :)
Добавил вот так:

Код: plaintext
1.
<asp:button id="BTN_Losses" style="Z-INDEX: 110; LEFT: 37.02%; POSITION: absolute; TOP: 216px" onclick="Clients_ADD()" tabIndex="309" runat="server" Width="110px" Text="Submit Loss" CausesValidation="False"></asp:button>

В codebehind добавил вот такое:
Код: plaintext
1.
2.
3.
4.
5.
6.
public void Losses_ADD()
{
if(this.DDL_PriorInsuranceLosses.SelectedIndex >  0 )
this.loss_AddRow();
else this.loss_EditRow();
}
Этот метод у меня в классе страницы.

Еще при загрузке страницы, броузер ругается
Compiler Error Message: CS0149: Method name expected
и указывать на строку с моей кнопкой добавления клиента.

Что он от меня хочет ?
...
Рейтинг: 0 / 0
рефреш. дважды удаляется запись
    #33553435
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
<asp:button id="BTN_Losses" onclick="Clients_ADD" runat="server"></asp:button>

Код: plaintext
1.
2.
3.
4.
5.
6.
public void Clients_ADD(object sender, EventArgs e)
{
if(this.DDL_PriorInsuranceLosses.SelectedIndex >  0 )
this.loss_AddRow();
else this.loss_EditRow();
}

Логику Clients_ADD не проверял
...
Рейтинг: 0 / 0
рефреш. дважды удаляется запись
    #33553493
Alex Tyutyunik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вроде как работает :))
у location'ов add еще не сделал, но у clients'ов ничего не теряется и прочее :)
Спасибо большое
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / рефреш. дважды удаляется запись
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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