Форум программистов, компьютерный форум, киберфорум
Наши страницы
C#: Web, ASP.NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
Volkforlive
0 / 0 / 0
Регистрация: 05.08.2013
Сообщений: 26
1

Повторная отправка данных

13.08.2013, 10:51. Просмотров 1619. Ответов 7
Метки нет (Все метки)

Добрый день!

Как убрать повторную отправку формы при нажатии кнопки?

Ситуация такая:
Есть веб приложение-страница, на нем GridView с таблицей и пара кнопок -одна из них-Добавить-
при нажатии открывает PopUp окно со списком (aspx), из которого и выбираем кого хотим добавить.

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

Проблема в том, что по нажатию кнопки Add на дочерней форме вываливается окно с предупреждением,что данные будут отправлены повторно.

Теперь код. Для передачи того,что дочерняя форма выполнила все что нужно я использую
Page.Session["isPopUp"] = "true";
А чтобы их дочерней формы перезагрузить родительскую страницу-
ButtonAdd.OnClientClick = "window.opener.location.reload(true);close();";

Родительская страница:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
 protected void Page_Load(object sender, EventArgs e)
        {
            
            if (!Page.IsPostBack)
            {
 
 
                GridViewRedactorNames.DataSource = dtRedactor;
                GridViewRedactorNames.DataBind();
 
         
            
            }
            else
            { //PostBack
 
 
               
                String s = (String)Page.Session["isPopUp"];
                Console.WriteLine(s);
                if (s != null)
                {
                    if ("true" == s)
                    {
                      [B]  Page.Session["isPopUp"] = "false";[/B]
                        dtRedactor = testProject5.Data.PersonReadWriteData.getAllPersons(connRedactor, queryRedactor);
                        GridViewRedactorNames.DataSource = dtRedactor;
                        GridViewRedactorNames.DataBind();
                    }
                    else
                    {
                        
                    }
                }
                else
                {
                  
                }
            }
   }
Дочерняя страница:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
 protected void Page_Load(object sender, EventArgs e)
        {
            
 
            Page.Session["isPopUp"] = "true";
            if (!Page.IsPostBack)
            {
                Page.Session["isPopUp"] = "true";
            [B]    ButtonAdd.OnClientClick = "window.opener.location.reload(true);close();";[/B]
                Console.WriteLine("");
                List<String> DiffLstPersons = new List<string>();
                DiffLstPersons =   Logic.getListDiffPersons();
 
 
                ListBox.DataSource = DiffLstPersons;
                ListBox.DataBind();
              //  Page.ClientScript.RegisterStartupScript(this.GetType(), "close()", "<script language=javascript>window.opener.location.reload(true);close();</script>");
            }
           // ButtonAdd.Attributes.Add("onclick", "window.opener.location.reload(true);close();");
// Page.ClientScript.RegisterStartupScript(this.GetType(), "hi", "<script language=javascript>window.opener.location.reload(true);close();</script>");
            
   
        }
protected void ButtonAdd_Click(object sender, EventArgs e)
        {
                              
            dtOriginal = PersonReadWriteData.getAllPersons(PersonReadWriteData.getConnectionStringReadTable(),PersonReadWriteData.getFilterQueryReadTable());
            if (ListBox.Items != null)
            {
                int ins = 0;
                int[] selectIndexes; selectIndexes = ListBox.GetSelectedIndices();
                Console.WriteLine(selectIndexes.Length);
                DataRow row;
                Console.WriteLine(selectIndexes+""+selectIndexes.Length);
                for (int i = 0; i < selectIndexes.Length; i++)
                {
 
                    row = Logic.getDataRowFromListItem(ListBox.Items[selectIndexes[i]], dtOriginal);
                
                    ins = PersonReadWriteData.setPersonRowsIntoDB(PersonReadWriteData.getConnectionStringWriteTable(),
                        PersonReadWriteData.getFilterQueryWriteTable(), row);
                }
                List<String> DiffLstPersons = new List<string>();
                DiffLstPersons = Logic.getListDiffPersons();
 
               
 
 
 
              
            //    HttpContext.Current.Response.Redirect(HttpContext.Current.Request.Url.ToString());
             //  Page.ClientScript.RegisterStartupScript(this.GetType(), "hi", 
             //      "<script language=javascript>window.opener.location.reload(true);close();</script>");
           
            }
            else
            {
                Console.WriteLine("");
            }
           
                
                
        }
Подскажите пожалуйста, как убрать повторную отправку данных?
Спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.08.2013, 10:51
Ответы с готовыми решениями:

Отправка данных другому пользователю и ожидание данных от него
Всем привет!) Такой вопрос: у меня есть js игра на asp,которая выполняется на...

Сокеты и отправка данных
Доброго времени суток, форумчане... У меня есть сервер на яве и клиент на C#....

Отправка данных на сайт
Привет всем ! Есть вэб сервис www.e-qsl.cc У меня есть логин и пароль. Я...

Отправка данных в сокет
Здравствуйте, уважаемые программисты. Недавно начала изучать c#, столкнулся с...

отправка данных из формы
как можно осуществить отправку данных из формы методом POST ?

7
andrew_w2k
323 / 323 / 90
Регистрация: 04.03.2010
Сообщений: 648
13.08.2013, 15:08 2
HTML5
1
AutoPostBack="false"
не?
0
Volkforlive
0 / 0 / 0
Регистрация: 05.08.2013
Сообщений: 26
13.08.2013, 15:27  [ТС] 3
А куда его вставлять?
0
andrew_w2k
323 / 323 / 90
Регистрация: 04.03.2010
Сообщений: 648
13.08.2013, 15:44 4
в разметку
1
Volkforlive
0 / 0 / 0
Регистрация: 05.08.2013
Сообщений: 26
14.08.2013, 13:36  [ТС] 5
Цитата Сообщение от andrew_w2k Посмотреть сообщение
в разметку
В GridView это нельзя вставить..

Добавлено через 19 часов 25 минут
Цитата Сообщение от andrew_w2k Посмотреть сообщение
в разметку
Можете привести хотя бы небольшой пример? А то мне непонятно куда именно вставлять это свойство.

Добавлено через 2 часа 14 минут
Еще код дочерней страницы:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<asp:Content ID="PageHead" ContentPlaceHolderID="PlaceHolderAdditionalPageHead" runat="server">
 
</asp:Content>
<asp:Content ID="Main" ContentPlaceHolderID="PlaceHolderMain" runat="server">
   
    
    <asp:ListBox ID="ListBox" runat="server" SelectionMode="Multiple" Font-Size="Medium" Rows="8"></asp:ListBox>
   
 
    <asp:Button ID="ButtonAdd" runat="server" Text="Добавить" OnClick="ButtonAdd_Click"   Height="45" Width="200" CssClass="Layouts/CSS/Stylesheet1.css" />
  
         
    <p>
        <script type="text/javascript">
         
            function Exit()
            {
                window.opener.location.reload(true);
                close();
            }
        </script>
 
    </p>
      
</asp:Content>
<asp:Content ID="PageTitle" ContentPlaceHolderID="PlaceHolderPageTitle" runat="server">
Application Page
</asp:Content>
 
<asp:Content ID="PageTitleInTitleArea" ContentPlaceHolderID="PlaceHolderPageTitleInTitleArea" runat="server" >
My Application Page
</asp:Content>
0
HF
144 / 144 / 46
Регистрация: 09.09.2011
Сообщений: 502
Завершенные тесты: 18
14.08.2013, 14:11 6
Цитата Сообщение от Volkforlive Посмотреть сообщение
Проблема в том, что по нажатию кнопки Add на дочерней форме вываливается окно с предупреждением,что данные будут отправлены повторно.
Где-то явно чего-то не написано, так как не видно как вызывается Exit(). А я считаю что именно из-за него это и появляется. Потому что он банально делает F5. А эффект "Данные будут обновлены..." всегда и проявляется из-за обновления страницы таким образом. А вот если бы это был postback и данные обновились просто как загрузка новой страницы, то не должно быть.
1
Volkforlive
0 / 0 / 0
Регистрация: 05.08.2013
Сообщений: 26
14.08.2013, 16:05  [ТС] 7
Цитата Сообщение от HF Посмотреть сообщение
Где-то явно чего-то не написано, так как не видно как вызывается Exit(). А я считаю что именно из-за него это и появляется. Потому что он банально делает F5. А эффект "Данные будут обновлены..." всегда и проявляется из-за обновления страницы таким образом. А вот если бы это был postback и данные обновились просто как загрузка новой страницы, то не должно быть.
У меня Exit() нигде не вызывается.. Использую
C#
1
ButtonAdd.OnClientClick = "window.opener.location.reload(true);close();";
Добавлено через 49 минут
Цитата Сообщение от Volkforlive Посмотреть сообщение
А вот если бы это был postback и данные обновились просто как загрузка новой страницы, то не должно быть.
А как это сделать?
То есть , в идеале , должно быть так: кнопка на родительской форме срабатывает, посылает postback. Там этот postback (на родительской форме) ловит Page_Load и обновляет страницу, а точнее просто перебиндивает GridView.

Но как это сделать?

Добавлено через 11 минут
Может есть способ через
C#
1
Page.Parent. что то там
сделать?

Добавлено через 16 минут
Так. На иноземном форуме нашел решение:
Javascript
1
2
3
4
5
   ButtonAdd.OnClientClick = "window.onunload = refreshParent;close(); " +
            "function refreshParent() {" +
            "var loc = window.opener.location;" +
            "window.opener.location = loc;" +
            "close(); }";
Взято тут.

Родительская форма обновляется на ура!
Но почему дочерняя форма не закрывается?

Добавлено через 4 минуты
Javascript
1
window.close();
спасает!)

Спасибо за помощь!
0
sau
1912 / 1571 / 253
Регистрация: 22.07.2011
Сообщений: 5,898
Завершенные тесты: 1
14.08.2013, 16:10 8
HTML5
1
ButtonAdd.OnClientClick = "window.opener.location.href =  window.opener.location.href;close();";
Чуток не успел ).
1
14.08.2013, 16:10
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.08.2013, 16:10

Отправка данных на сайт
Доброго времени суток. Необходимо отправить данные в эти формы: &lt;input...

Отправка данных в mysql
Как можно отправить из программы данные в mysql на сервер или в txt файлик???

Отправка данных в другую форму
Всем привет. Есть два файла : spisokst.asp - вывод списка студентов и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru