Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
рефреш. дважды удаляется запись
|
|||
|---|---|---|---|
|
#18+
Вообщем ситуация такая... Прошу вашего солюшена. На форме кучка (30 примерно) контролов, кпопки ADD, EDIT, DELETE и некая общая кнопка SUBMIT. Юзер может ввести данные нажать ADD, и данные добавятся в DataSet Представим что юзер удалил одну запись из датасета, и нажал рефреш на тулбаре IE. Получается при OK на запрос о post data, юзер удаляет дважды запись! Это ж несерьезно... как сего избежать ? теги meta и редирект на самого себя не предлагать (не помогли). а при редиректе я не собираюсь передавать все данные через параметры. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2006, 17:01 |
|
||
|
рефреш. дважды удаляется запись
|
|||
|---|---|---|---|
|
#18+
авторПолучается при OK на запрос о post data, юзер удаляет дважды запись! а как можно удалить то - ЧЕГО УЖЕ БОЛЬШЕ НЕТ??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2006, 18:56 |
|
||
|
рефреш. дважды удаляется запись
|
|||
|---|---|---|---|
|
#18+
Да я просто не так выразился... сути вопроса не меняет. у меня датасет для вводимых данных. Подгружается из сессии в Page_Load. а в DropDownList появляется нечто типа ID. Соответсвенно, если записей > 1, то удалится следующая. если записей = 1, то во второй раз вылетит exception. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2006, 19:10 |
|
||
|
рефреш. дважды удаляется запись
|
|||
|---|---|---|---|
|
#18+
авторСоответсвенно, если записей > 1, то удалится следующая. если записей = 1, то во второй раз вылетит exception. ясно выражать свою мысль - это искусство... чего желаем? что бы при рефреше строки не удалялись или проблема с последней не удалённой записью??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2006, 19:14 |
|
||
|
рефреш. дважды удаляется запись
|
|||
|---|---|---|---|
|
#18+
Чтобы при рефреше не проводилось никаких действий. Как будто рефреша и не было. То есть, все контролы имели тоже значение до рефреша. Ничего в датасет не добавлялось, ничего из него удалялось. То есть, если юзер удалил запись, потом нажал рефреш, запись не удалялась. Как вариант придумал, оба датасета в Session, для всех контролов их состояние читать в объект некоего класса, потом это объект в Session. К примеру: после удаления, загоняем все вышеуказанное в сессию, делаем редирект на самого себя, и из сессии читаем. Это нормальный вариант, или не пройдет номер ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2006, 20:31 |
|
||
|
рефреш. дважды удаляется запись
|
|||
|---|---|---|---|
|
#18+
авторЭто нормальный вариант, или не пройдет номер ? попробуй - потом нам расскажешь... ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2006, 20:40 |
|
||
|
рефреш. дважды удаляется запись
|
|||
|---|---|---|---|
|
#18+
Да я сегодня не успею уже :)) Хочу успеть еще одну тулзу доделать... Завтра утром обязательно буду пробовать... По крайней мере сейчас у меня имеющиеся датасеты нормально бегают при редиректе. осталось дело за классом да контролами ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2006, 20:45 |
|
||
|
рефреш. дважды удаляется запись
|
|||
|---|---|---|---|
|
#18+
Никогда бы не подумал, что это может быть такой проблемой. Вы изобретаете вилосипед. Во-первых, используя для решения данной своей проблемы 2 датасета, а во-вторых нагружая Session, хотя он предназначен совсем не для подобных задач. Первое что приходит в голову, сильно не переделывая вашу систему - делайте просто проверку на дубликаты, что добавлено и проверку на то, что уже удалено. Хотя я не до конца, наверное, понял вашу задумку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2006, 12:35 |
|
||
|
рефреш. дважды удаляется запись
|
|||
|---|---|---|---|
|
#18+
авторХотя я не до конца, наверное, понял вашу задумку. мне кажеться, что чел подошёл к решению вопроса как бы из win - что видим - то удаляем. то есть у него есть некие id забитые в дропдаун - при удалении записи в дропдауне соответственно появляется следующий за удалённым id и опять (при postback) удаляется строка уже с этим id - решение наверное заключается в пересмотре логики удаления записей... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2006, 13:05 |
|
||
|
рефреш. дважды удаляется запись
|
|||
|---|---|---|---|
|
#18+
Хорошо... давайте начнем сначала... я просто спрошу у вас как усе в целом сделать правильнее... Суть: есть на форме кучка контролов, разбитых по секциям div'aми. Есть пара секций, которые называются locations и clients. locations максимум 15, clients максимум 10. Мне надо сделать так, чтобы юзер мог ввести поля в locations, потом жмакнуть кнопку, и это где-то сохранилось (но не в базе). Потом еще добавить, или отредактировать, или удалить. Все это без базы, в некоем хранилище. Аналогично с clients. И только, когда юзер нажмет кнопку Submit All, тогда уже все все все данные -запихнуть в базу данных. И отдельный вопрос, как обработать мне refresh в броузере, чтоб не было никаких проблем :)) Расскажите пожалуста, что и как делать.. P.S. Да, мировоззрение десктоповское, на ASP.NET это мой первый проект начинается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2006, 16:12 |
|
||
|
рефреш. дважды удаляется запись
|
|||
|---|---|---|---|
|
#18+
Один из вариантов: Создать по одной DataTable для locations и clients с соответствующими для них полями и одно поле autoincrement типа int. Сам DataTable при перегрузках страницы хранить в ViewState. При добавлении спрашивать есть ли в соотвт. табличке уже введённый клиент или локация. Если есть, не добавлять больше и предупредить юзера. При редактировании и удалении проверить, если ли подобная запись в таблице. Если есть, то редактируем или удаляем. Если нет, не делаем ничего и предупреждаем юзера. Когда всё готово, перегоняем данные из таблиц в базу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2006, 17:07 |
|
||
|
рефреш. дважды удаляется запись
|
|||
|---|---|---|---|
|
#18+
Не понимаю что сделал не так.. с Session работало. а с ViewState.. вот я добавил пару записей клиентов... их можно удалять, редактировать, добавлять еще. А нажал F5 и у меня в ViewState нет моего DataTable читаю из ViewState по типу DataTable clientsDT = (DataTable)ViewState["clientsDT"] получаю null на странице ViewState разрешен... Куда смотреть ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2006, 18:15 |
|
||
|
рефреш. дважды удаляется запись
|
|||
|---|---|---|---|
|
#18+
Здесь храним DataTable в момент Postback Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Здесь получаем DataTable из ViewState Код: plaintext 1. 2. 3. 4. Здесь сохраняем DataTable в ViewState Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2006, 18:33 |
|
||
|
рефреш. дважды удаляется запись
|
|||
|---|---|---|---|
|
#18+
Та да, я прогнал с вопросом предыдущим, просто забыл подгружать в Page_Load записи. :) > При добавлении спрашивать есть ли в соотвт. табличке уже введённый > клиент или локация. Если есть, не добавлять больше и предупредить юзера. > При редактировании и удалении проверить, если ли подобная запись в > таблице. Если есть, то редактируем или удаляем. Если нет, не делаем > ничего и предупреждаем юзера. Когда всё готово, перегоняем данные из > таблиц в базу. Эти проверки как я понимаю вставлять в обработчики ADD, EDIT, DELETE ? А то как я погляжу, при рефреше срабатывает Page_Load, ну а в мои обработчики кнопок уже отладчик не заходит. для EDIT проблем нет. для DELETE тоже, проверю есть в ли в datatable указанная запись. А как быть с ADD ? Если ID есть autoincrement ? добавится ведь еще одна запись. как тут решить вопрос ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2006, 18:43 |
|
||
|
рефреш. дважды удаляется запись
|
|||
|---|---|---|---|
|
#18+
А проверяйте не на id, а просто сравнивайте значения всех нововведённых полей с тем, что есть в коллекйии Rows соответствующей DataTable. Т.е. вполне может быть, что можно и обойтись без autoincrement полей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2006, 19:00 |
|
||
|
рефреш. дважды удаляется запись
|
|||
|---|---|---|---|
|
#18+
Да, я тоже так подумал, как альтернатива. Расскажите мне, где это все проверять надо ? Вот юзер нажал F5. куда мне вставить проверки ? да и как ? (как определять, что счас будет удаление, и удаление чего) p.s. видать я фундаментальных понятий не понимаю :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2006, 19:13 |
|
||
|
рефреш. дважды удаляется запись
|
|||
|---|---|---|---|
|
#18+
Проверять в обработчиках событий Add, Edit, Delete. И забудьте об этом F5 - не пойму что за мода пихать всё операции на submit формы, ибо только проблем себе же больше. Просто прописывайте для каждой из кнопок в html разделе страницы свой обработчик (btnAdd_Click, btnDelete_Click, btnEdit_Click) и создавайте этот обработчик в codebehind с модификатором доступа public. Тогда на F5 у вас будет просто перегражаться страница, а не вызываться обработчики копок. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2006, 19:31 |
|
||
|
рефреш. дважды удаляется запись
|
|||
|---|---|---|---|
|
#18+
Фух... опять бяка какая-то :) Добавил вот так: Код: plaintext 1. В codebehind добавил вот такое: Код: plaintext 1. 2. 3. 4. 5. 6. Еще при загрузке страницы, броузер ругается Compiler Error Message: CS0149: Method name expected и указывать на строку с моей кнопкой добавления клиента. Что он от меня хочет ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2006, 20:00 |
|
||
|
рефреш. дважды удаляется запись
|
|||
|---|---|---|---|
|
#18+
Код: plaintext Код: plaintext 1. 2. 3. 4. 5. 6. Логику Clients_ADD не проверял ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2006, 20:13 |
|
||
|
|

start [/forum/topic.php?fid=18&fpage=964&tid=1392992]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
21ms |
get topic data: |
6ms |
get forum data: |
1ms |
get page messages: |
31ms |
get tp. blocked users: |
1ms |
| others: | 222ms |
| total: | 305ms |

| 0 / 0 |
