Как показать окно подтверждения внутри кода позади в середине процедуры - PullRequest
0 голосов
/ 08 января 2020

У меня есть проблема, интересно, может ли это прекрасное сообщество помочь мне.

У меня есть веб-форма asp. net (с использованием кода vb. net), на одной из моих форм есть сетка данных. Каждая запись может иметь различный статус, и каждая запись может быть выбрана с помощью флажка. В нижней части таблицы у меня есть выпадающий список возможных действий, которые могут предпринять пользователи, эти действия будут направлены против выбранных записей и кнопка для вызова выбранного действия.

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

Пример

Я выбираю записи 1,2,3,4,5. Действие, которое я выбираю, заключается в загрузке в формате CSV, однако можно загружать только разблокированные записи, поэтому в моем примере разблокированы только записи 1,3,5. Это означает, что я могу скачать только 1,3,5, а не записи 2,4. После загрузки я хочу отметить запись о том, что она была загружена, и обновить sh сетку.

Я выполнил это, найдя записи для загрузки (aka 1,3,5), создайте CSV (или XML, поскольку это тоже одно из действий) в виде строки, отметьте записи 1,3,5 как загруженные, обновите sh сетку и затем я вызову скрытую кнопку в форме, которая фактически загрузит данные.

 If Not ViewState("Data") Is Nothing Then
            Response.Clear()
            Response.ClearHeaders()
            Response.Buffer = True
            Response.ContentEncoding = Encoding.UTF8
            Response.ContentType = IIf(ViewState("ExportType").ToString() = SharedApplication.ExportedType.XML, "application/xml", "text/csv")
            Response.AppendHeader("Content-Disposition", String.Format("attachment;filename={0}", "records-" & "." & ViewState("ExportType").ToString()))
            Response.Write(ViewState("Data"))
            HttpContext.Current.Response.Flush()
            HttpContext.Current.Response.SuppressContent = True
            HttpContext.Current.ApplicationInstance.CompleteRequest()
            ViewState("Data") = Nothing
        End If

Вышеуказанные данные загружаются, для вызова кнопки загрузки я использую javascript, чтобы выполнить обратную передачу по событию щелчка скрытой кнопки.

Однако у меня возникает проблема перед тем, как загрузить данные, я хочу добавить окно подтверждения, что-то, чтобы сказать «Только 3 из 5 записей будут загружены, вы хотите продолжить». Да, продолжая загрузку, и Нет, чтобы прекратить действие. Как я go об этом. Я перепробовал все виды техник, но не могу понять это.

Я попытался добавить подтверждение возврата на скрытую кнопку в событии onlcientclik, но оно никогда не срабатывает. Это работает, если вы действительно нажимаете на кнопку, но не тогда, когда я делаю обратную передачу на ее нажатие через JS.

Шкаф, который я могу найти, использует registeronsubmit в коде позади.

ClientScript.RegisterOnSubmitStatement(btnHidden.GetType, "confirm", "return confirm('Are you sure?');")

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

У кого-нибудь есть идея, у меня есть стадо возможного создания всплывающего окна для отображения окна сообщения, но как мне захватить, если мой код необходимо продолжить.

1 Ответ

1 голос
/ 13 января 2020

Привет, я подумал, что мне лучше поделиться тем, что я в итоге сделал, чтобы завершить мою проблему, если кто-то еще переедет на эту территорию.

Так что я ушёл и подумал об этом больше, и о решении, которое я нашел, и на самом деле работает довольно хорошо, хотя некоторые могут сказать, что это довольно уродливый способ сделать это.

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

btnRun.OnClientClick = "return confirm('" & sMessage & "');"

Переменная сообщения - это строка, которая формирует сообщение в зависимости от того, какое действие процесса выбрано.

Это означает, что как только выпадающий список будет изменен на действие, коды определят, сколько выбранных элементов будет изменено. Это запрос sql, который определяет, какие коды / идентификаторы будут изменены, затем будет изменено / экспортировано количество данных по отношению к общему количеству выбранных элементов независимо от выбранного действия. Это создает подтверждение кнопки процесса, поэтому, когда пользователь нажимает на кнопку процесса, которая показывает, что X из X будет изменено, вы хотите продолжить. Если выбрано «Отмена», ничего не происходит, если выбрано «ОК», оно продолжает и завершает действие, как обычно, прежде чем я хотел показать какое-либо окно сообщения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...