none
Кнопка в web part. RRS feed

  • Вопрос

  • Добрый день.

    У меня при нажатии на кнопку, сначала выполняется метод protected void Page_Load(object sender, EventArgs e), и только потом Button1_Click(object sender, EventArgs e). На кнопке висит инкремента переменной. В итоге всё через ж происходит из-за этой странной последовательности событий.

    Подробнее: в web part динамически создаются текстовые поля и их количество зависит от значения переменной. При нажатии на кнопку должно добавляться еще одно поле, но получается что после нажатия сначала страница перезагружается и только потом значение увеличивается.

    Подскажите, пожалуйста, выход из такой ситуации.


    7 августа 2017 г. 9:57

Ответы

  • Очередная проблема с таким порядком действий после нажатия кнопки. У меня есть DropDownList, в нем я выбираю элемент и после нажатия сохранить, должно произойти действие с выбранным элементом, а т.к. вместо метода события кнопки происходит сначала Page_Load(), то SelectedIndex сбрасывается на первый элемент.

    Вот решение:

                SPList list = web.Lists["Projects"];
                if (!Page.IsPostBack)
                {
                    DropDownList1.DataSource = list.Items;
                    DropDownList1.DataTextField = "Title";
                    DropDownList1.DataValueField = "ID";
                    DropDownList1.DataBind();
                }

    10 августа 2017 г. 5:59

Все ответы

  • Короче я придумал так:

    В Page_Load у меня создаются текстовые поля в определенном количестве. При нажатии на кнопку происходит инкремента и тут же добавление текстового поля. Всё очень просто. Хотя мне такой подход совсем не нравится.


    7 августа 2017 г. 10:54
  • 1. А если попробовать в свойствах кнопки UseSubmitBehavior = false сделать, будет на Page_Load уходить?

    2. Обработку динамически добавляемых полей лучше делать на клиентской стороне в javascript, а данные с сервера получать через REST запросы. В ASPX(на сервере) лучше только начальные данные получать и устанавливать.

    Сам недавно делал чат и когда начал делать через ASPX(серверный код), то всё мигало безбожно, пока не сделал таймер в javascript с запросом обновленных постов в REST.

    8 августа 2017 г. 11:21
  • 1. А если попробовать в свойствах кнопки UseSubmitBehavior = false сделать, будет на Page_Load уходить?

    2. Обработку динамически добавляемых полей лучше делать на клиентской стороне в javascript, а данные с сервера получать через REST запросы. В ASPX(на сервере) лучше только начальные данные получать и устанавливать.

    Сам недавно делал чат и когда начал делать через ASPX(серверный код), то всё мигало безбожно, пока не сделал таймер в javascript с запросом обновленных постов в REST.

    1. Ничего не поменялось.

    2. Спасибо за совет! Я бы стал делать на javascript, да пока совсем не знаю как. Поэтому срочно делаю так, потом скорее всего придётся на джаваскрипт делать.

    9 августа 2017 г. 6:58
  • В том же aspx файле делаете в любом месте <script></script> и пишите на javascripte. Aspx код отработает на сервере и вместо себя создаст javascript, в том числе ваш javascript будет там. Из js можно получить значение всех полей aspx элементов+разного рода системные переменные типа page, request + можно обратиться из js к уже существующим rest функциям sharepoint или написать свою. В те же aspx кнопки можно поставить ваш обработчик нажатия и добавлять поля.
    • Изменено agemlex77 9 августа 2017 г. 8:15 дополнение
    9 августа 2017 г. 8:11
  • Очередная проблема с таким порядком действий после нажатия кнопки. У меня есть DropDownList, в нем я выбираю элемент и после нажатия сохранить, должно произойти действие с выбранным элементом, а т.к. вместо метода события кнопки происходит сначала Page_Load(), то SelectedIndex сбрасывается на первый элемент.
    10 августа 2017 г. 5:42
  • Очередная проблема с таким порядком действий после нажатия кнопки. У меня есть DropDownList, в нем я выбираю элемент и после нажатия сохранить, должно произойти действие с выбранным элементом, а т.к. вместо метода события кнопки происходит сначала Page_Load(), то SelectedIndex сбрасывается на первый элемент.

    Вот решение:

                SPList list = web.Lists["Projects"];
                if (!Page.IsPostBack)
                {
                    DropDownList1.DataSource = list.Items;
                    DropDownList1.DataTextField = "Title";
                    DropDownList1.DataValueField = "ID";
                    DropDownList1.DataBind();
                }

    10 августа 2017 г. 5:59