Лучший отвечающий
Кнопка в web part.

Вопрос
-
Добрый день.
У меня при нажатии на кнопку, сначала выполняется метод protected void Page_Load(object sender, EventArgs e), и только потом Button1_Click(object sender, EventArgs e). На кнопке висит инкремента переменной. В итоге всё через ж происходит из-за этой странной последовательности событий.
Подробнее: в web part динамически создаются текстовые поля и их количество зависит от значения переменной. При нажатии на кнопку должно добавляться еще одно поле, но получается что после нажатия сначала страница перезагружается и только потом значение увеличивается.
Подскажите, пожалуйста, выход из такой ситуации.
- Изменено Evgueny Fyodorov 8 августа 2017 г. 5:02
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();
}- Предложено в качестве ответа User Guide 17 августа 2017 г. 8:54
- Помечено в качестве ответа Иван ПродановMicrosoft contingent staff, Moderator 23 августа 2017 г. 8:02
10 августа 2017 г. 5:59
Все ответы
-
Короче я придумал так:
В Page_Load у меня создаются текстовые поля в определенном количестве. При нажатии на кнопку происходит инкремента и тут же добавление текстового поля. Всё очень просто. Хотя мне такой подход совсем не нравится.
- Изменено Evgueny Fyodorov 8 августа 2017 г. 5:03
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();
}- Предложено в качестве ответа User Guide 17 августа 2017 г. 8:54
- Помечено в качестве ответа Иван ПродановMicrosoft contingent staff, Moderator 23 августа 2017 г. 8:02
10 августа 2017 г. 5:59