#c# #asp.net #ajax #updatepanel
Вопрос:
У меня возникла проблема, когда запускается событие textchanged объекта textbox. Например, когда я хочу нажать клавишу tab, она должна сосредоточиться на следующем объекте, но этого не происходит. Или когда я нажимаю кнопку, мне приходится нажимать дважды. Как я могу решить эту проблему? Я добавил коды и проблему, с которой я столкнулся, в виде gif.
по умолчанию.aspx
lt;asp:UpdatePanel ID="UpdatePanel1" UpdateMode="Conditional" runat="server"gt; lt;ContentTemplategt; lt;div class="form-group row"gt; lt;label class="col-lg-2 col-form-label"gt;İşlem Tutarılt;/labelgt; lt;div class="col-lg-4"gt; lt;asp:TextBox ID="txtTutar" CssClass="form-control form-control-sm price" AutoPostBack="true" placeholder="0,00 ₺" runat="server" OnTextChanged="txtTutar_TextChanged"gt;lt;/asp:TextBoxgt; lt;/divgt; lt;/divgt; lt;/ContentTemplategt; lt;Triggersgt; lt;asp:AsyncPostBackTrigger ControlID="txtTutar" EventName="TextChanged" /gt; lt;/Triggersgt; lt;/asp:UpdatePanelgt;
по умолчанию.asp.cs
txtTahsilEdilen.Text = txtTutar.Text;
Комментарии:
1. Вы можете сбросить триггер — он не сделает для вас ничего ценного. Вам нужно установить AutoPostBack=»true» для этого текстового поля — и триггер вам не поможет.
Ответ №1:
Вы можете сбросить триггер — он не сделает для вас ничего ценного. Вам нужно установить AutoPostBack=»true» для этого текстового поля — и триггер вам не поможет.
Тогда для чего, черт возьми, тогда нужен спусковой крючок?
Он используется для запуска ДРУГОЙ ОТДЕЛЬНОЙ панели на той же странице!!!
Таким образом, у вас может быть кнопка на панели, даже текстовое поле. Они ВСЕ РАВНО ДОЛЖНЫ сделать сообщение здесь — и вам нужно/нужно добавить сообщение обратно в текстовое поле.
Что делают триггеры? Ну, допустим, у вас есть 2 — я панель обновления-и в ней есть куча вещей. Ну, ваш код может обновить ОБЕ панели.
Следовательно, вы должны добавить триггер на 2-ю панель, который указывает на ваше текстовое поле (или кнопку на первой панели). Теперь, когда эта первая панель обновления панели обновляется (из-за обратной записи), 2-я панель с тегом триггера и настройками ТАКЖЕ обновится.
Однако ЭТА ФУНКЦИЯ НЕ ПОЗВОЛЯЕТ АВТОМАТИЧЕСКИ ОТПРАВЛЯТЬ вам ответные СООБЩЕНИЯ. Поэтому указание триггера в ТОЙ же панели обновления не требуется, не имеет смысла и вообще НИЧЕГО для вас не сделает.
Если обратная запись НЕ АКТИВИРОВАНА, настройки триггера вообще ничего не делают, и они не вызывают обратную запись, и они не указывают код кнопки или, в данном случае, код события текстового поля для запуска.
Таким образом, настройки триггеров теоретически будут помещены во 2-ю и другую панель обновления, которую вы также хотите обновить, когда одна кнопка (или текстовое поле) вызывает возврат на другую панель обновления. Однако для того, чтобы это сработало, ВЫ ВСЕ РАВНО ДОЛЖНЫ вызвать и выполнить обратную отправку.
Таким образом, цель здесь состоит не в том, чтобы сделать панель обновления обратной, а только в том, чтобы обнаружить, что ДРУГАЯ ДРУГАЯ панель ДЕЙСТВИТЕЛЬНО ТОЛЬКО что выполнила обратную передачу.
Независимо от того, каким образом мы отмечаем и объясняем вышесказанное?
Настройки триггера НЕ запускают кнопку или текстовое поле после возврата-это ваша задача, чтобы это произошло. таким образом, в настройках триггера на панели обновления можно установить, что произошла некоторая обратная запись с помощью данной кнопки, а затем убедиться, что панель с триггером также обновится. Но для той же панели — нет никакого практического смысла или причины делать это, так как теги триггера работают только ТОГДА, КОГДА вы вызываете обратную отправку. И настройки триггера должны указывать ТОЛЬКО на кнопки или элементы управления на ДРУГОЙ панели обновления.
Итог: Удалите тег триггера — он вам не нужен.
Установите в текстовом поле значение автоматической обратной связи = true
Комментарии:
1. Я уже установил autopostback=true в текстовом поле. И я снял спусковые крючки. Это все еще не работает. Честно говоря, я не понял многого из того, что вы написали. Мой английский не очень хорош. Можете ли вы привести пример с кодом?
2. Действительно просто — если вы установите autopost-back = true для этого текстового поля, затем, если вы отредактируете и закроете вкладку, то текст будет изменен — это все, что вам нужно знать. Как уже отмечалось, вы можете удалить имеющуюся у вас разметку триггера — это не требуется. Так что на самом деле это все, что вам нужно знать здесь.